SlikaInformacijeDostupnost
Pineco
001/198
Scarlet & Violet Booster Pack
Pineco
001/198
Scarlet & Violet Booster Pack
Heracross
002/198
Scarlet & Violet Booster Pack
Heracross
002/198
Scarlet & Violet Booster Pack
Shroomish
003/198
Scarlet & Violet Booster Pack
Shroomish
003/198
Scarlet & Violet Booster Pack
Breloom
004/198
Scarlet & Violet Booster Pack
Breloom
004/198
Scarlet & Violet Booster Pack
Cacnea
005/198
Scarlet & Violet Booster Pack
Cacnea
005/198
Scarlet & Violet Booster Pack
Cacturne
006/198
Scarlet & Violet Booster Pack
Cacturne
006/198
Scarlet & Violet Booster Pack
Tropius
007/198
Scarlet & Violet Booster Pack
Tropius
007/198
Scarlet & Violet Booster Pack
Scatterbug
008/198
Scarlet & Violet Booster Pack
Scatterbug
008/198
Scarlet & Violet Booster Pack
Spewpa
009/198
Scarlet & Violet Booster Pack
Spewpa
009/198
Scarlet & Violet Booster Pack
Vivillon
010/198
Scarlet & Violet Booster Pack
Vivillon
010/198
Scarlet & Violet Booster Pack
Skiddo
011/198
Scarlet & Violet Booster Pack
Skiddo
011/198
Scarlet & Violet Booster Pack
Gogoat
012/198
Scarlet & Violet Booster Pack
Gogoat
012/198
Scarlet & Violet Booster Pack
Sprigatito
013/198
Scarlet & Violet Booster Pack
Sprigatito
013/198
Scarlet & Violet Booster Pack
Floragato
014/198
Scarlet & Violet Booster Pack
Floragato
014/198
Scarlet & Violet Booster Pack
Meowscarada
015/198
Scarlet & Violet Booster Pack
Meowscarada
015/198
Scarlet & Violet Booster Pack
Tarountula
016/198
Scarlet & Violet Booster Pack
Tarountula
016/198
Scarlet & Violet Booster Pack
Tarountula
017/198
Scarlet & Violet Booster Pack
Tarountula
017/198
Scarlet & Violet Booster Pack
Tarountula
018/198
Scarlet & Violet Booster Pack
Tarountula
018/198
Scarlet & Violet Booster Pack
Spidops ex
019/198
Scarlet & Violet Booster Pack
Smoliv
020/198
Scarlet & Violet Booster Pack
Smoliv
020/198
Scarlet & Violet Booster Pack
Smoliv
021/198
Scarlet & Violet Booster Pack
Smoliv
021/198
Scarlet & Violet Booster Pack
Dolliv
022/198
Scarlet & Violet Booster Pack
Dolliv
022/198
Scarlet & Violet Booster Pack
Arboliva
023/198
Scarlet & Violet Booster Pack
Arboliva
023/198
Scarlet & Violet Booster Pack
Toedscool
024/198
Scarlet & Violet Booster Pack
Toedscool
024/198
Scarlet & Violet Booster Pack
Toedscool
025/198
Scarlet & Violet Booster Pack
Toedscool
025/198
Scarlet & Violet Booster Pack
Toedscruel
026/198
Scarlet & Violet Booster Pack
Toedscruel
026/198
Scarlet & Violet Booster Pack
Capsakid
027/198
Scarlet & Violet Booster Pack
Capsakid
027/198
Scarlet & Violet Booster Pack
Capsakid
028/198
Scarlet & Violet Booster Pack
Capsakid
028/198
Scarlet & Violet Booster Pack
Scovillain
029/198
Scarlet & Violet Booster Pack
Scovillain
029/198
Scarlet & Violet Booster Pack
Growlithe
030/198
Scarlet & Violet Booster Pack
Growlithe
030/198
Growlithe
Growlithe
031/198
Scarlet & Violet Booster Pack
Growlithe
031/198
Scarlet & Violet Booster Pack
Arcanine ex
032/198
Scarlet & Violet Booster Pack
Houndour
033/198
Scarlet & Violet Booster Pack
Houndour
033/198
Scarlet & Violet Booster Pack
Houndoom
034/198
Scarlet & Violet Booster Pack
Houndoom
034/198
Houndoom
Torkoal
035/198
Scarlet & Violet Booster Pack
Torkoal
035/198
Scarlet & Violet Booster Pack
Fuecoco
036/198
Scarlet & Violet Booster Pack
Fuecoco
036/198
Scarlet & Violet Booster Pack
Crocalor
037/198
Scarlet & Violet Booster Pack
Crocalor
037/198
Scarlet & Violet Booster Pack
Skeledirge
038/198
Scarlet & Violet Booster Pack
Skeledirge
038/198
Skeledirge
Charcadet
039/198
Scarlet & Violet Booster Pack
Charcadet
039/198
Scarlet & Violet Booster Pack
Charcadet
040/198
Charcadet
Charcadet
040/198
Scarlet & Violet Booster Pack
Armarouge
041/198
Scarlet & Violet Booster Pack
Armarouge
041/198
Armarouge
Slowpoke
042/198
Scarlet & Violet Booster Pack
Slowpoke
042/198
Scarlet & Violet Booster Pack
Slowbro
043/198
Scarlet & Violet Booster Pack
Slowbro
043/198
Scarlet & Violet Booster Pack
Magikarp
044/198
Scarlet & Violet Booster Pack
Magikarp
044/198
Scarlet & Violet Booster Pack
Gyarados ex
045/198
Scarlet & Violet Booster Pack
Buizel
046/198
Scarlet & Violet Booster Pack
Buizel
046/198
Scarlet & Violet Booster Pack
Floatzel
047/198
Scarlet & Violet Booster Pack
Floatzel
047/198
Scarlet & Violet Booster Pack
Alomomola
048/198
Scarlet & Violet Booster Pack
Alomomola
048/198
Scarlet & Violet Booster Pack
Clauncher
049/198
Scarlet & Violet Booster Pack
Clauncher
049/198
Scarlet & Violet Booster Pack
Clawitzer
050/198
Scarlet & Violet Booster Pack
Clawitzer
050/198
Scarlet & Violet Booster Pack
Bruxish
051/198
Scarlet & Violet Booster Pack
Bruxish
051/198
Scarlet & Violet Booster Pack
Quaxly
052/198
Scarlet & Violet Booster Pack
Quaxly
052/198
Scarlet & Violet Booster Pack
Quaxwell
053/198
Scarlet & Violet Booster Pack
Quaxwell
053/198
Scarlet & Violet Booster Pack
Quaquaval
054/198
Scarlet & Violet Booster Pack
Quaquaval
054/198
Quaquaval
Wiglett
055/198
Scarlet & Violet Booster Pack
Wiglett
055/198
Wiglett
Wiglett
056/198
Scarlet & Violet Booster Pack
Wiglett
056/198
Scarlet & Violet Booster Pack
Wugtrio
057/198
Scarlet & Violet Booster Pack
Wugtrio
057/198
Scarlet & Violet Booster Pack
Cetoddle
058/198
Scarlet & Violet Booster Pack
Cetoddle
058/198
Scarlet & Violet Booster Pack
Cetoddle
059/198
Scarlet & Violet Booster Pack
Cetoddle
059/198
Cetoddle
Cetitan
060/198
Scarlet & Violet Booster Pack
Cetitan
060/198
Scarlet & Violet Booster Pack
Dondozo
061/198
Scarlet & Violet Booster Pack
Dondozo
061/198
Scarlet & Violet Booster Pack
Tatsugiri
062/198
Scarlet & Violet Booster Pack
Tatsugiri
062/198
Tatsugiri
Magnemite
063/198
Scarlet & Violet Booster Pack
Magnemite
063/198
Scarlet & Violet Booster Pack
Magneton
064/198
Scarlet & Violet Booster Pack
Magneton
064/198
Scarlet & Violet Booster Pack
Magnezone ex
065/198
Scarlet & Violet Booster Pack
Mareep
066/198
Scarlet & Violet Booster Pack
Mareep
066/198
Scarlet & Violet Booster Pack
Flaaffy
067/198
Scarlet & Violet Booster Pack
Flaaffy
067/198
Flaaffy
Pachirisu
068/198
Scarlet & Violet Booster Pack
Pachirisu
068/198
Scarlet & Violet Booster Pack
Rotom
069/198
Scarlet & Violet Booster Pack
Rotom
069/198
Scarlet & Violet Booster Pack
Rotom
070/198
Scarlet & Violet Booster Pack
Rotom
070/198
Scarlet & Violet Booster Pack
Toxel
071/198
Scarlet & Violet Booster Pack
Toxel
071/198
Scarlet & Violet Booster Pack
Toxtricity
072/198
Scarlet & Violet Booster Pack
Toxtricity
072/198
Scarlet & Violet Booster Pack
Pawmi
073/198
Scarlet & Violet Booster Pack
Pawmi
073/198
Scarlet & Violet Booster Pack
Pawmi
074/198
Scarlet & Violet Booster Pack
Pawmi
074/198
Scarlet & Violet Booster Pack
Pawmo
075/198
Scarlet & Violet Booster Pack
Pawmo
075/198
Scarlet & Violet Booster Pack
Pawmot
076/198
Scarlet & Violet Booster Pack
Pawmot
076/198
Scarlet & Violet Booster Pack
Wattrel
077/198
Scarlet & Violet Booster Pack
Wattrel
077/198
Scarlet & Violet Booster Pack
Wattrel
078/198
Scarlet & Violet Booster Pack
Wattrel
078/198
Scarlet & Violet Booster Pack
Kilowattrel
079/198
Scarlet & Violet Booster Pack
Kilowattrel
079/198
Scarlet & Violet Booster Pack
Miraidon
080/198
Scarlet & Violet Booster Pack
Miraidon
080/198
Scarlet & Violet Booster Pack
Miraidon ex
081/198
Scarlet & Violet Booster Pack
Drowzee
082/198
Scarlet & Violet Booster Pack
Drowzee
082/198
Scarlet & Violet Booster Pack
Hypno
083/198
Scarlet & Violet Booster Pack
Hypno
083/198
Scarlet & Violet Booster Pack
Ralts
084/198
Scarlet & Violet Booster Pack
Ralts
084/198
Scarlet & Violet Booster Pack
Kirlia
085/198
Scarlet & Violet Booster Pack
Kirlia
085/198
Scarlet & Violet Booster Pack
Gardevoir ex
086/198
Scarlet & Violet Booster Pack
Shuppet
087/198
Scarlet & Violet Booster Pack
Shuppet
087/198
Scarlet & Violet Booster Pack
Banette ex
088/198
Scarlet & Violet Booster Pack
Drifloon
089/198
Scarlet & Violet Booster Pack
Drifloon
089/198
Scarlet & Violet Booster Pack
Drifblim
090/198
Scarlet & Violet Booster Pack
Drifblim
090/198
Scarlet & Violet Booster Pack
Flabébé
091/198
Scarlet & Violet Booster Pack
Flabébé
091/198
Scarlet & Violet Booster Pack
Floette
092/198
Scarlet & Violet Booster Pack
Floette
092/198
Scarlet & Violet Booster Pack
Florges
093/198
Scarlet & Violet Booster Pack
Florges
093/198
Scarlet & Violet Booster Pack
Dedenne
094/198
Scarlet & Violet Booster Pack
Dedenne
094/198
Scarlet & Violet Booster Pack
Dedenne
095/198
Scarlet & Violet Booster Pack
Dedenne
095/198
Scarlet & Violet Booster Pack
Klefki
096/198
Scarlet & Violet Booster Pack
Klefki
096/198
Scarlet & Violet Booster Pack
Fidough
097/198
Scarlet & Violet Booster Pack
Fidough
097/198
Scarlet & Violet Booster Pack
Fidough
098/198
Scarlet & Violet Booster Pack
Fidough
098/198
Scarlet & Violet Booster Pack
Dachsbun
099/198
Scarlet & Violet Booster Pack
Dachsbun
099/198
Scarlet & Violet Booster Pack
Flittle
100/198
Scarlet & Violet Booster Pack
Flittle
100/198
Scarlet & Violet Booster Pack
Flittle
101/198
Scarlet & Violet Booster Pack
Flittle
101/198
Scarlet & Violet Booster Pack
Flittle
102/198
Scarlet & Violet Booster Pack
Flittle
102/198
Scarlet & Violet Booster Pack
Espathra
103/198
Scarlet & Violet Booster Pack
Espathra
103/198
Scarlet & Violet Booster Pack
Greavard
104/198
Scarlet & Violet Booster Pack
Greavard
104/198
Scarlet & Violet Booster Pack
Greavard
105/198
Scarlet & Violet Booster Pack
Greavard
105/198
Scarlet & Violet Booster Pack
Houndstone
106/198
Scarlet & Violet Booster Pack
Houndstone
106/198
Scarlet & Violet Booster Pack
Mankey
107/198
Scarlet & Violet Booster Pack
Mankey
107/198
Scarlet & Violet Booster Pack
Primeape
108/198
Scarlet & Violet Booster Pack
Primeape
108/198
Scarlet & Violet Booster Pack
Annihilape
109/198
Scarlet & Violet Booster Pack
Annihilape
109/198
Scarlet & Violet Booster Pack
Meditite
110/198
Scarlet & Violet Booster Pack
Meditite
110/198
Scarlet & Violet Booster Pack
Medicham
111/198
Scarlet & Violet Booster Pack
Medicham
111/198
Scarlet & Violet Booster Pack
Riolu
112/198
Scarlet & Violet Booster Pack
Riolu
112/198
Scarlet & Violet Booster Pack
Riolu
113/198
Scarlet & Violet Booster Pack
Riolu
113/198
Scarlet & Violet Booster Pack
Lucario
114/198
Scarlet & Violet Booster Pack
Lucario
114/198
Scarlet & Violet Booster Pack
Sandile
115/198
Scarlet & Violet Booster Pack
Sandile
115/198
Scarlet & Violet Booster Pack
Krokorok
116/198
Scarlet & Violet Booster Pack
Krokorok
116/198
Scarlet & Violet Booster Pack
Krookodile
117/198
Scarlet & Violet Booster Pack
Krookodile
117/198
Scarlet & Violet Booster Pack
Hawlucha
118/198
Scarlet & Violet Booster Pack
Hawlucha
118/198
Scarlet & Violet Booster Pack
Silicobra
119/198
Scarlet & Violet Booster Pack
Silicobra
119/198
Scarlet & Violet Booster Pack
Sandaconda
120/198
Scarlet & Violet Booster Pack
Sandaconda
120/198
Scarlet & Violet Booster Pack
Stonjourner
121/198
Scarlet & Violet Booster Pack
Stonjourner
121/198
Scarlet & Violet Booster Pack
Klawf
121/198
Scarlet & Violet Booster Pack
Klawf
122/198
Scarlet & Violet Booster Pack
Great Tusk ex
123/198
Scarlet & Violet Booster Pack
Koraidon
124/198
Scarlet & Violet Booster Pack
Koraidon
124/198
Scarlet & Violet Booster Pack
Koraidon ex
125/198
Scarlet & Violet Booster Pack
Grimer
126/198
Scarlet & Violet Booster Pack
Grimer
126/198
Scarlet & Violet Booster Pack
Muk
127/198
Scarlet & Violet Booster Pack
Muk
127/198
Scarlet & Violet Booster Pack
Seviper
128/198
Scarlet & Violet Booster Pack
Seviper
128/198
Scarlet & Violet Booster Pack
Spiritomb
129/198
Scarlet & Violet Booster Pack
Spiritomb
129/198
Scarlet & Violet Booster Pack
Croagunk
130/198
Scarlet & Violet Booster Pack
Croagunk
130/198
Scarlet & Violet Booster Pack
Toxicroak ex
131/198
Scarlet & Violet Booster Pack
Pawniard
132/198
Scarlet & Violet Booster Pack
Pawniard
132/198
Scarlet & Violet Booster Pack
Bisharp
133/198
Scarlet & Violet Booster Pack
Bisharp
133/198
Scarlet & Violet Booster Pack
Kingambit
134/198
Scarlet & Violet Booster Pack
Kingambit
134/198
Scarlet & Violet Booster Pack
Maschiff
135/198
Scarlet & Violet Booster Pack
Maschiff
135/198
Scarlet & Violet Booster Pack
Maschiff
136/198
Scarlet & Violet Booster Pack
Maschiff
136/198
Scarlet & Violet Booster Pack
Mabosstiff
137/198
Scarlet & Violet Booster Pack
Mabosstiff
137/198
Scarlet & Violet Booster Pack
Bombirdier
138/198
Scarlet & Violet Booster Pack
Bombirdier
138/198
Scarlet & Violet Booster Pack
Forretress
139/198
Scarlet & Violet Booster Pack
Forretress
139/198
Scarlet & Violet Booster Pack
Varoom
140/198
Scarlet & Violet Booster Pack
Varoom
140/198
Scarlet & Violet Booster Pack
Varoom
141/198
Scarlet & Violet Booster Pack
Varoom
141/198
Scarlet & Violet Booster Pack
Revavroom
142/198
Scarlet & Violet Booster Pack
Revavroom
142/198
Scarlet & Violet Booster Pack
Iron Threads ex
143/198
Scarlet & Violet Booster Pack
Chansey
144/198
Scarlet & Violet Booster Pack
Chansey
144/198
Scarlet & Violet Booster Pack
Blissey
145/198
Scarlet & Violet Booster Pack
Blissey
145/198
Scarlet & Violet Booster Pack
Zangoose
146/198
Scarlet & Violet Booster Pack
Zangoose
146/198
Scarlet & Violet Booster Pack
Zangoose
147/198
Scarlet & Violet Booster Pack
Zangoose
147/198
Scarlet & Violet Booster Pack
Starly
148/198
Scarlet & Violet Booster Pack
Starly
148/198
Scarlet & Violet Booster Pack
Staravia
149/198
Scarlet & Violet Booster Pack
Staravia
149/198
Scarlet & Violet Booster Pack
Staraptor
150/198
Scarlet & Violet Booster Pack
Staraptor
150/198
Scarlet & Violet Booster Pack
Skwovet
151/198
Scarlet & Violet Booster Pack
Skwovet
151/198
Scarlet & Violet Booster Pack
Greedent
152/198
Scarlet & Violet Booster Pack
Greedent
152/198
Scarlet & Violet Booster Pack
Indeedee
153/198
Scarlet & Violet Booster Pack
Indeedee
153/198
Scarlet & Violet Booster Pack
Lechonk
154/198
Scarlet & Violet Booster Pack
Lechonk
154/198
Scarlet & Violet Booster Pack
Lechonk
155/198
Scarlet & Violet Booster Pack
Lechonk
155/198
Scarlet & Violet Booster Pack
Lechonk
156/198
Scarlet & Violet Booster Pack
Lechonk
156/198
Scarlet & Violet Booster Pack
Oinkologne
157/198
Scarlet & Violet Booster Pack
Oinkologne
157/198
Oinkologne ex
158/198
Scarlet & Violet Booster Pack
Tandemaus
159/198
Scarlet & Violet Booster Pack
Tandemaus
159/198
Scarlet & Violet Booster Pack
Tandemaus
160/198
Scarlet & Violet Booster Pack
Tandemaus
160/198
Scarlet & Violet Booster Pack
Maushold
161/198
Scarlet & Violet Booster Pack
Maushold
161/198
Scarlet & Violet Booster Pack
Squawkabilly
162/198
Scarlet & Violet Booster Pack
Squawkabilly
162/198
Scarlet & Violet Booster Pack
Cyclizar
163/198
Scarlet & Violet Booster Pack
Cyclizar
163/198
Scarlet & Violet Booster Pack
Cyclizar
164/198
Scarlet & Violet Booster Pack
Cyclizar
164/198
Scarlet & Violet Booster Pack
Flamigo
165/198
Scarlet & Violet Booster Pack
Flamigo
165/198
Scarlet & Violet Booster Pack
Arven
166/198
Scarlet & Violet Booster Pack
Arven
166/198
Scarlet & Violet Booster Pack
Beach Court
167/198
Scarlet & Violet Booster Pack
Beach Court
167/198
Scarlet & Violet Booster Pack
Crushing Hammer
168/198
Scarlet & Violet Booster Pack
Crushing Hammer
168/198
Scarlet & Violet Booster Pack
Defiance Band
169/198
Scarlet & Violet Booster Pack
Defiance Band
169/198
Scarlet & Violet Booster Pack
Electric Generator
170/198
Scarlet & Violet Booster Pack
Electric Generator
170/198
Scarlet & Violet Booster Pack
Energy Retrieval
171/198
Scarlet & Violet Booster Pack
Energy Retrieval
171/198
Scarlet & Violet Booster Pack
Energy Search
172/198
Scarlet & Violet Booster Pack
Energy Search
172/198
Scarlet & Violet Booster Pack
Energy Switch
173/198
Scarlet & Violet Booster Pack
Energy Switch
173/198
Scarlet & Violet Booster Pack
Exp. Share
174/198
Scarlet & Violet Booster Pack
Exp. Share
174/198
Scarlet & Violet Booster Pack
Jacq
175/198
Scarlet & Violet Booster Pack
Jacq
175/198
Scarlet & Violet Booster Pack
Judge
176/198
Scarlet & Violet Booster Pack
Judge
176/198
Scarlet & Violet Booster Pack
Katy
177/198
Scarlet & Violet Booster Pack
Katy
177/198
Scarlet & Violet Booster Pack
Mesagoza
178/198
Scarlet & Violet Booster Pack
Mesagoza
178/198
Scarlet & Violet Booster Pack
Miriam
179/198
Scarlet & Violet Booster Pack
Miriam
179/198
Scarlet & Violet Booster Pack
Nemona
180/198
Scarlet & Violet Booster Pack
Nemona
180/198
Scarlet & Violet Booster Pack
Nest Ball
181/198
Scarlet & Violet Booster Pack
Nest Ball
181/198
Scarlet & Violet Booster Pack
Pal Pad
182/198
Scarlet & Violet Booster Pack
Pal Pad
182/198
Scarlet & Violet Booster Pack
Penny
183/198
Scarlet & Violet Booster Pack
Penny
183/198
Scarlet & Violet Booster Pack
Picnic Basket
184/198
Scarlet & Violet Booster Pack
Picnic Basket
184/198
Scarlet & Violet Booster Pack
Poké Ball
185/198
Scarlet & Violet Booster Pack
Poké Ball
185/198
Scarlet & Violet Booster Pack
Pokégear 3.0
186/198
Scarlet & Violet Booster Pack
Pokégear 3.0
186/198
Scarlet & Violet Booster Pack
Pokémon Catcher
187/198
Scarlet & Violet Booster Pack
Pokémon Catcher
187/198
Scarlet & Violet Booster Pack
Potion
188/198
Scarlet & Violet Booster Pack
Potion
188/198
Scarlet & Violet Booster Pack
Professor’s Research [Professor Sada]
189/198
Scarlet & Violet Booster Pack
Professor’s Research [Professor Sada]
189/198
Scarlet & Violet Booster Pack
Professor’s Research [Professor Turo]
190/198
Scarlet & Violet Booster Pack
Professor’s Research [Professor Turo]
190/198
Scarlet & Violet Booster Pack
Rare Candy
191/198
Scarlet & Violet Booster Pack
Rare Candy
191/198
Scarlet & Violet Booster Pack
Rock Chestplate
192/198
Scarlet & Violet Booster Pack
Rock Chestplate
192/198
Scarlet & Violet Booster Pack
Rocky Helmet
193/198
Scarlet & Violet Booster Pack
Rocky Helmet
193/198
Scarlet & Violet Booster Pack
Switch
194/198
Scarlet & Violet Booster Pack
Switch
194/198
Scarlet & Violet Booster Pack
Team Star Grunt
195/198
Scarlet & Violet Booster Pack
Team Star Grunt
195/198
Scarlet & Violet Booster Pack
Ultra Ball
196/198
Scarlet & Violet Booster Pack
Ultra Ball
196/198
Scarlet & Violet Booster Pack
Vitality Bend
197/198
Scarlet & Violet Booster Pack
Vitality Band
197/198
Scarlet & Violet Booster Pack
Youngster
198/198
Scarlet & Violet Booster Pack
Youngster
198/198
Scarlet & Violet Booster Pack
Tarountula
199/198
Scarlet & Violet Booster Pack
Dolliv
200/198
Scarlet & Violet Booster Pack
Toedscool
201/198
Scarlet & Violet Booster Pack
Scovillain
202/198
Scarlet & Violet Booster Pack
Armarouge
203/198
Scarlet & Violet Booster Pack
Slowpoke
204/198
Scarlet & Violet Booster Pack
Clauncher
205/198
Scarlet & Violet Booster Pack
Wiglett
206/198
Scarlet & Violet Booster Pack
Dondozo
207/198
Scarlet & Violet Booster Pack
Pachirisu
208/198
Scarlet & Violet Booster Pack
Pawmot
209/198
Scarlet & Violet Booster Pack
Drowzee
210/198
Scarlet & Violet Booster Pack
Ralts
211/198
Scarlet & Violet Booster Pack
Kirlia
212/198
Scarlet & Violet Booster Pack
Fidough
213/198
Scarlet & Violet Booster Pack
Greavard
214/198
Scarlet & Violet Booster Pack
Riolu
215/198
Scarlet & Violet Booster Pack
Sandile
216/198
Scarlet & Violet Booster Pack
Klawf
217/198
Scarlet & Violet Booster Pack
Mabosstiff
218/198
Scarlet & Violet Booster Pack
Bombirdier
219/198
Scarlet & Violet Booster Pack
Kingambit
220/198
Scarlet & Violet Booster Pack
Starly
221/198
Scarlet & Violet Booster Pack
Skwovet
222/198
Scarlet & Violet Booster Pack
Spidops ex
223/198
Scarlet & Violet Booster Pack
Arcanine ex
224/198
Scarlet & Violet Booster Pack
Gyarados ex
225/198
Scarlet & Violet Booster Pack
Magnezone ex
226/198
Scarlet & Violet Booster Pack
Miraidon ex
227/198
Scarlet & Violet Booster Pack
Gardevoir ex
228/198
Scarlet & Violet Booster Pack
Banette ex
229/198
Scarlet & Violet Booster Pack
Great Tusk ex
230/198
Scarlet & Violet Booster Pack
Koraidon ex
231/198
Scarlet & Violet Booster Pack
Toxicroak ex
232/198
Scarlet & Violet Booster Pack
Iron Treads ex
233/198
Scarlet & Violet Booster Pack
Oinkologne ex
234/198
Scarlet & Violet Booster Pack
Arven
235/198
Scarlet & Violet Booster Pack
Jacq
236/198
Scarlet & Violet Booster Pack
Katy
237/198
Scarlet & Violet Booster Pack
Miriam
238/198
Scarlet & Violet Booster Pack
Penny
239/198
Scarlet & Violet Booster Pack
Professor’s Research [Professor Sada]
240/198
Scarlet & Violet Booster Pack
Professor’s Research [Professor Turo]
241/198
Scarlet & Violet Booster Pack
Team Star Grunt
242/198
Scarlet & Violet Booster Pack
Spidops ex
243/198
Scarlet & Violet Booster Pack
Miraidon ex
244/198
Scarlet & Violet Booster Pack
Gardevoir ex
245/198
Scarlet & Violet Booster Pack
Great Tusk ex
246/198
Scarlet & Violet Booster Pack
Koraidon ex
247/198
Scarlet & Violet Booster Pack
Iron Treads ex
248/198
Scarlet & Violet Booster Pack
Arven
249/198
Scarlet & Violet Booster Pack
Jacq
250/198
Scarlet & Violet Booster Pack
Miriam
251/198
Scarlet & Violet Booster Pack
Penny
252/198
Scarlet & Violet Booster Pack
Miraidon ex
253/198
Scarlet & Violet Booster Pack
Koraidon ex
254/198
Scarlet & Violet Booster Pack
Nest Ball
255/198
Scarlet & Violet Booster Pack
Rare Candy
256/198
Scarlet & Violet Booster Pack
Basic Lightning Energy
257/198
Scarlet & Violet Booster Pack
Basic Fighting Energy
258/198
Scarlet & Violet Booster Pack

Povijest Jave

» dsofic

Java platforma i jezik su započeti kao interni istraživački projekt tvrtke Sun Microsystems u prosincu 1990., iako je srž ideje nastala nekoliko godina ranije.

Projekt NeWS

Službeni logo

Sve je započeo James Gosling koji pokrenuo projekt nazvan NeWS (Network/extensible Window System). Ideja projekta NeWS je bila napraviti softver koji omogućava kreiranje prozora (engl. windows) u grafičkom korisničkom sustavu, na bilo kojem računalu, bez obzira o kojem proizvođaču se radi, Sun, Hewlett-Packard, IBM i sl. To je u to vrijeme bio veliki problem jer su grafička sučelja uzimala sve više trakcije, i svaki proizvođač računala je imao svoj softver za crtanje prozora, što je značilo da je svaki komercijalni softver morao biti posebno rađen za svakog proizvođača jer je morao implementirati njegov set standarda za crtanje prozora. Sun je planirao izdavati licence za NeWS proizvođačima računala dok tehnologija ne postaje industrijski standard. Takvo što bi učvrstilo poziciju Suna kao tehnološkog predvodnika što bi kompaniju učinilo privlačnijom potrošačima. Kompanija je službeno lansirala NeWS na Comdex sajmu u Atlanti na proljeće 1987., te krenula u potragu za partnerima. Prethodni proizvod tvrtke Sun, NFS (Network File System), je bio iznimno uspješan te je postavio industrijski standard koje su ostale kompanije morale slijediti. Ta činjenica je rezultirala velikim otporom NeWS-u, te kompanija nije uspjela ostvariti željena partnerstva kako bi ga probila na željeni dio tržišta, zbog čega je u konačnici projekt propao. Na sreću NeWS nije bio totalni gubitak za Sun. Srž NeWS-a, izvršavanje neovisno o hardveru, ponovno će se roditi u Javi nekoliko godina kasnije.1

Tajni projekt Green

Krajem 1990. na scenu stupa Patrick Naughton, tada dvadesetpetogodišnji ambiciozni programer, Patrick je bio nezadovoljan smjerom kojim je kompanija krenula. Napuštanjem projekta NeWS, programeri koji su radili na njemu su premješteni na druga istraživačka mjesta, ali kompanija je djelovala uspavano, nije bilo drugih značajnih projekata. To je Patricka natjeralo da potraži novi posao, te je dobio priliku pridružiti se kompaniji Next koju je osnovao Steve Jobs. Iako je prošao sve intervjue i bio primljen u kompaniju, ipak nije mogao samo tako otići bez da to kaže Scottu McNealyu, CEO-u Sun Microsystemsa. Nakon razgovora, Scott mu je rekao da se pretvara da je Bog i pošalje mu e-mail s popisom stvari koje ne valjaju u kompaniji, s prijedlozima kako ih popraviti. To je bio vrlo dobar potez jer je Patrick napisao poduži e-mail u kojem je iznio sve svoje frustracije, još iz vremena NeWS projekta. Ono što je Patrick zamislio je malu usko povezanu grupu ljudi koja će raditi brzo bez birokracije i opozicije. Scott je proslijedio e-mail ključnim ljudima u kompaniji koji je u konačnici pronašao put do Jamesa Goslinga. James je instantno prepoznao iskru te krenuo u akciju. Upoznao ga je sa Mike Sheridanom te je oformljen tim ljudi koji su danas poznati kao začetnici Jave, James Gosling, Patrick Naughton i Mike Sheridan. Projekt je ubrzo dobio ime Green, a poslovni plan je nazvan “Iza zelenih vrata”, po najpopularnijem pornografsku filmu u tom vremenu. Kako bi osigurali nesmetan rad i otklonili birokratske probleme, projekt je rađen u tajnosti, te su za njega znali samo najviši rukovodioci kompanije.2

Tim je originalno razmišljao o nadogradnji postojećeg C++ jezika, međutim odustali su od te ideje zbog više razloga. Zbog toga što su razvijali jezik za embedded sustave koji imaju ograničene resurse, zaključili su da C++ zahtjeva previše memorije. Jezik također nije imao sakupljač smeća (engl. Garbage collector), što je značilo da programeri moraju ručno upravljati sistemskom memorijom, što je izazovan zadatak koji često dovodi do problema.

Gosling je probao modificirati i proširiti C++ (nazivajući ga C++ ++ –), međutim ubrzo napušta tu ideju i stvara novi programski jezik, kojeg naziva Oak (hrv. hrast), po drvetu kojeg je imao ispred ureda.

Zeleni projekt u jednom trenutku postaje Firstperson. Tim koji je radio na Firstpersonu je htio napraviti interaktivni uređaj za upravljanje televizijom, međutim televizijska industrija nije bila previše zainteresirana jer su korisnicima dali previše slobode. Ubrzo cijeli projekt Firstperson propada.

1993. godine, naglo započinje razvoj World Wide Weba i ljudi iz Suna uuočavaju veliki potencijal Jave u tome području. Naughton izrađuje mali web preglednik pod nazivom WebRunner, kasnije preimenovan u HotJava 1995. Java je omogućavala dodavanje dinamičkih interaktivnih sadržaja i animacija na internetske stranice.

U listopadu 1994. Sun mijenja naziv jezika u Java, zbog toga što je već postojala tvrtka Oak Technologies. Iako je bilo moguće preuzimanje Java 1.0a verzije 1994. godine, prva službena verzija Jave pod imenom Java 1.0a2 je objavljenja 23. svibnja 1995. na SunWorld konferenciji.

2009. godine Oracle preuzima Sun Microsystems.

18.03.2014. Sun Microsystems objavljuje inačicu Java 8.

Reference

  1. Southwick, Karen (1999). High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems. New York [u.a.]: Wiley. pp. 72–74. ISBN 0471297135. ↩︎
  2. Southwick, Karen (1999). High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems. New York [u.a.]: Wiley. pp. 123–124. ISBN 0471297135. ↩︎

U računalstvu i teoriji informacije, duljina kodne riječi označava broj znamenaka (bitova) u jednoj kodnoj riječi. Često se označava malim slovom $$l$$. Ona je vrlo bitno svojstvo kodne riječi. Generalno, preferiraju se kraće kodne riječi kako bi efikasnost koda bila što veća.1

Prosječna duljina kodne riječi

Prosječna duljina kodne riječi koristi se kod entropijskog neravnomjernog kodiranja. Često se označava velikim slovom $$L$$. Ona označava prosječan broj znamenaka (bitova) kodne riječi u danoj tablici kodnih riječi uzimajući u obzir vjerojatnost pojavljivanja kodnih riječi. Kod ravnomjernog kodiranja nema smisla govoriti o prosječnoj duljini koda zbog toga što je duljina svake kodne riječi jednaka. U takvom slučaju je prosječna duljina kodne riječi identična duljini jedne kodne riječi. Ona je bitan faktor koji utječe na efikasnost koda.

Prosječna duljina kodne riječi računa se kao ponderirana aritmetička sredina pojedinih kodnih riječi, tj. može se izračunati kao suma svih umnožaka duljina pojedinih kodnih riječi i njihovih pripadajućih vjerojatnosti.2
Prikazano sljedećom jednadžbom:

<latex>L\left( X \right)=\sum_{i=1}^{n}P\left( x_{i} \right)\cdot l_{i}</latex>

Pri čemu je:

  • $$L\left( X \right)$$ – prosječna duljina kodne riječi
  • $$n$$ – ukupan broj kodnih riječi
  • $$P\left( x_i \right)$$ – vjerojatnost pojave $$i$$-tog simbola
  • $$l_i$$ – duljina $$i$$-te kodne riječi

Primjer računanja prosječne duljine kodne riječi

Zamislimo slikovnicu u kojoj se pojavljuju samo prva četiri slova engleske abecede. Iz slikovnice izračunamo vjerojatnost pojave pojedinih slova te zapišemo u tablicu. Zamislimo da je netko već uspješno iskodirao slova. Izračunajmo prosječnu duljinu kodne riječi.

Simbol ($$x_i$$)Vjerojatnost pojave ($$P\left( x_i \right)$$)Kodna riječDuljina kodne riječi ($$l_i$$)
A1/201
B1/6102
C1/61103
D1/61113

<latex>L\left( X \right)=\sum_{i=1}^{n}P\left( x_{i} \right)\cdot l_{i}</latex>

<latex>L=\frac{1}{2}\cdot 1 + \frac{1}{6}\cdot 2 + \frac{1}{6}\cdot 3 + \frac{1}{6}\cdot 3 = 1,8\dot{3}\:bita</latex>

Prosječna duljina kodne riječi u ovome slučaju iznosi 1.83 bita.

Donja granica prosječne duljine kodne riječi

Ako govorimo o kodiranju bez gubitka informacija, onda je jasno da prosječna duljina kodne riječi ne može biti manja od entropije. Kada bi ona bila manja, kôd bi nosio manje informacija od samog izvora, što znači da se jedan dio informacija izgubio u procesu kodiranja. Iz toga slijedi da prosječna duljina kodne riječi mora biti veća ili jednaka entropiji.3

<latex>L\left( X \right)\geqslant H\left( X \right)</latex>

Kompaktnost koda

Informacije je moguće kodirati na više različitih načina pa tako različiti kodovi imaju i različite duljine kodnih riječi.

Za neki kod možemo reći da je kompaktan, za jedan izvor, ako mu je prosječna duljina kodne riječi manja ili jednaka prosječnoj duljini svih ostalih kodova koji se mogu dekodirati na jedinstven način za taj isti izvor.4

Reference

  1. Luenberger, David G. (2006). Information Science, str. 22. Princeton, New Jersey: Princeton University Press. ISBN 978-0-637-12418-3. ↩︎
  2. Togneri R., deSilva Christopher J.S. (2003). Fundamentals of Information Theory and Coding Design, str. 121. Boca Raton, Florida: CRC Press. ISBN 978-0-203-99810. ↩︎
  3. Togneri R., deSilva Christopher J.S. (2003). Fundamentals of Information Theory and Coding Design, str. 123. Boca Raton, Florida: CRC Press. ISBN 978-0-203-99810. ↩︎
  4. Togneri R., deSilva Christopher J.S. (2003). Fundamentals of Information Theory and Coding Design, str. 121. Boca Raton, Florida: CRC Press. ISBN 978-0-203-99810. ↩︎

Isječak Java kôda prikazuje primjer metode za množenje dva cijela broja, bez upotrebe operatora množenja.
Množenje je izvedeno upotrebom while petlje.

public static int mnozenje(int prviBroj, int drugiBroj) {
	int umnozak = 0;
	if (drugiBroj > 0) 
		drugiBroj = 0 - drugiBroj
		prviBroj = 0 - prviBroj;
	}
	while (drugiBroj > 0) {
		umnozak = umnozak + prviBroj;
		drugiBroj = drugiBroj - 1;
	}
	return umnozak;
}

Paritetni bit

» dsofic

Paritetni bit je dodatni bit koji se dodaje na kraj kodne riječi da bi se osigurao određen broj jedinica u njoj. Paritetni bit se određuje tako da, u kombinaciji s ostalim bitovima, kodna riječ sadrži isključivo paran broj jedinica kod parnog pariteta (engl. even parity), odnosno, neparan broj jedinica kod neparnog pariteta (engl. odd parity). [1] S time omogućuje jednostavnu detekciju pogreške u prijenosu, ali ju ne može ispraviti.

Parni i neparni paritet

Pri korištenju parnog pariteta, paritetni bit se dodaje tako da u kombinaciji s bitovima kodne riječi uvijek postoji isključivo paran broj jedinica. Ako dana kodna riječ sadrži paran broj jedinica, paritetni bit koji dodajemo ima vrijednost nula, a ako dana kodna riječ sadrži neparan broj jedinica, paritetni bit koji dodajemo ima vrijednost jedan. Ukupan broj jedinica, uključujući paritetni bit, mora biti paran.

Pri korištenju neparnog pariteta, paritetni bit se dodaje tako da u kombinaciji s bitovima kodne riječi uvijek postoji isključivo neparan broj jedinica. Ako dana kodna riječ sadrži paran broj jedinica, paritetni bit koji dodajemo ima vrijednost jedan, a ako dana kodna riječ sadrži neparan broj jedinica, paritetni bit koji dodajemo ima vrijednost nula. Ukupan broj jedinica, uključujući paritetni bit, mora biti neparan.

Za za istu kodnu riječ, paritetni bit kod parnog i neparnog pariteta imaju inverznu vrijednost.

Primjer korištenja parnog i neparnog paritetnog bita

Zadanim kodnim riječima je potrebno dodati paritetni bit koristeći parni i neparni paritet.

Kodna riječ
(7 znamenaka)
Kodna riječ s parnim paritetom
(8 znamenaka)
Kodna riječ s neparnim paritetom
(8 znamenaka)
00000000000000000000001
10000001000000110000000
01100110110011001100111
10101011010101010101011
11111111111111111111110

Označen i razmaknut paritet

Ponekad je paritetni bit prisutan ali se ne koristi te nema nikakvu funkciju. Takav paritet se često naziva označen paritet (engl. mark parity) ili razmaknut paritet (engl. space parity), ovisno o prijednosti paritetnog bita. Kod označenog pariteta, paritetni bit uvijek ima vrijednost 1. Kod razmaknutog pariteta, paritetni bit uvijek ima vrijednost nula. [2]

Detekcija pogrešaka

Paritetni bit se koristi za jednostavnu detekciju pogrešaka prilikom prijenosa kodnih riječi. Ako se neparan broj bitova prenese pogrešno (uključujući paritetni bit), paritet će biti netočan te će ukazati na pogrešku u prijenosu. Paritetni bit može samo otkriti pogrešku, međutim ne može ju ispraviti jer ne može otkriti koji bit ili bitovi su pogrešno preneseni. Stoga, u slučaju otkrivanja pogreške u primljenom podatku, podatak se mora potpuno odbaciti, te se slanje mora ponoviti. Njegova mana je da slanje podatka preko linije s izraženim šumom može potrajati duže vremena uslijed stalnih ponavljanja. Njegove prednosti su to što koristi samo jedan dodatni bit za zaštitu te zahtjeva samo jedan XOR sklop za generiranje paritetnog bita. [3]

Primjena

Paritetni bit se najčešće primjenjuje u hardveru kod kojeg se slanje kodne riječi može jednostavno ponoviti u slučaju pogreške u prijenosu. Na primjer, PCI sabirnice koriste paritet za detektiranje pogrešaka u prijenosu. [4]

Reference

1. Paunović, Stanko (1999). Digitalna Elektronika, 1. svezak, 2. izdanje, str. 33. Zagreb: Školska Knjiga. ISBN 978-953-0-21147-6.
2. Venkateswarlu, N. B. (2014). Computer Science and Information Technology for GATE, str. 1.89. New Delhi: McGraw Hill Education (India) Private Limited. ISBN 978-1-25-902720-8.
3. Rajput, Uday Singh (2012). Advanced Discrete Mathematics, str. 55. New Delhi: PHI Learning Private Limited. ISBN 978-81-203-4589-8.
4. PCI Special Interest Group (1998). PCI Local Bus Specification Revision 2.2., str. 93. (PDF)

Huffmanov kôd

» dsofic

U računalstvu i teoriji informacije, Huffmanov kod je poseban prefiksni kod koji se najčešće koristi za sažimanje podataka bez gubitaka. Proces pronalaženja ili korištenja toga koda naziva se Huffmanovo kodiranje. Algoritam pomoću kojega se pronalazi kod, konstruirao je David Albert Huffman za vrijeme doktorskog studija na MIT-u. Svoje otkriće objavio je u radu “A Method for the Construction of Minimum-Redundancy Codes” 1952. [1]

Huffmanov kod je neravnomjeran kod. Algoritmom se dobiva tablica kodova koja se bazira na vjerojatnosti pojave svakog simbola pojedinačno, što znači da će simboli koji imaju veću vjerojatnost pojavljivanja biti kodirani s kraćim kodnim riječima, a simboli koji imaju manju vjerojatnost pojavljivanja biti kodirani s duljim kodnim riječima. Takvim načinom kodiranja povećava se efikasnost koda.

Huffmanovo kodiranje

Huffmanov algoritam

Huffmanov algoritam je algoritam pomoću kojeg se na jednostavan način može kodirati neka informacija. On nam govori sljedeće… [2]

  1. Posložimo vjerojatnosti od najveće prema najmanjoj, tako da se najveća vjerojatnost nalazi na krajnoj lijevoj strani, a najmanja na krajnjoj desnoj strani.
  2. Zbrojimo dvije krajnje desne vjerojatnosti.
  3. Zbrojimo dvije najmanje vjerojatnosti. U slučaju postojanja više jednakih najmanjih vjerojatnosti, zbrojimo bilo koje dvije, obično se zbrajaju dvije s krajnje desne.
  4. Ponavljamo korak 3 dok ne ostane samo jedna vjerojatnost. Ako je stablo ispravno, ona će uvijek biti jednaka 1.
  5. Počevši od vrha prema dnu, na svakoj točki na kojoj se stablo grana, dodijelimo po jednu binarnu vrijednost (0 ili 1) svakoj grani. Obično se lijevoj grani pridodaje 0 a desnoj 1. Ako se napravi obrnuto, kod će izgledati malo drugačije, ali će imati identična svojstva.
  6. Počevši od vrha, gibamo se najkraćim putem do prve vjerojatnosti, te pritom ispisujemo bitove na koje nailazimo, redom, s lijeva na desno. Ponavljamo za svaku vjerojatnost pojedinačno.

Primjer Huffmanovog algoritma

Zamislimo sljedeći slučaj. Meteorološka postaja nalazi se na otoku koji je 10 km udaljen od najbližeg grada na kopnu. U meteorološkoj postaji nalazi se osoba koja svaki dan, točno u podne, zabilježi vrijeme na pučini. Nakon toga u svome čamcu otplovi do grada te mještanima preda informaciju o vremenu na pučini. To je vrlo naporan posao, no na svu sreću, tehnološkom revolucijom, izumljen je uređaj koji ima mogućnost slanja električnih signala u grad, kroz žicu koju su postavili. Dogovoreno je slanje električnog signala koji predstavlja određeno vrijeme na pučini. Dogovorena su 4 različita vremena: sunčano, oblačno, maglovito te kišno. Kako bi poslali informaciju o vremenu s pomoću električnog signala, potrebno je svako vrijeme pojedinačno predstaviti nekim kodom koji se potom šalje električnim signalom. Uzmimo u obzir da su to bili sami početci tehnike pa je stoga svaki poslani signal (bit) bio jako skup. Iz toga razloga je bilo potrebno smanjiti broj signala koji se šalju. Bilo je potrebno pronaći najefikasniji kod. Iz dosadašnjih mjerenja izračunali su vjerojatnost pojave pojedinog vremena. Vjerojatnost sunčanog vremena je iznosila 1/2. Vjerojatnost oblačnog vremena je iznosila 1/6. Vjerojatnost maglovitog vremena je iznosila 1/6. Vjerojatnost kišnog vremena je iznosila 1/6. Vidimo da je vjerojatnost sunčanog vremena najveća, što znači da je veći dio godine sunčano vrijeme, te da će se ta informacija najčešće slati. Kako bi trošak bio najmanji, bilo bi logično signal koji se šalje najčešće predstaviti najkraćim mogućim kodom. Pitanje je, kako doći do najefikasnijeg koda?
Ovaj zadatak riješit ćemo pomoću Huffmanovog algoritma crtajući Huffmanovo stablo.

1. Posložimo vjerojatnosti od najveće prema najmanjoj, tako da se najveća vjerojatnost nalazi na krajnoj lijevoj strani, a najmanja na krajnjoj desnoj strani.

huffman-primjer-1

2. Zbrojimo dvije krajnje desne vjerojatnosti.

huffman-primjer-2

3. Zbrojimo dvije najmanje vjerojatnosti. U slučaju postojanja više jednakih najmanjih vjerojatnosti, zbrojimo bilo koje dvije, obično se zbrajaju dvije s krajnje desne.

huffman-primjer-3

4. Ponavljamo korak 3 dok ne ostane samo jedna vjerojatnost. Ako je stablo ispravno, ona će uvijek biti jednaka 1.

huffman-primjer-4

5. Počevši od vrha prema dnu, na svakoj točki na kojoj se stablo grana, dodijelimo po jednu binarnu vrijednost (0 ili 1) svakoj grani. Obično se lijevoj grani pridodaje 0 a desnoj 1. Ako se napravi obrnuto, kod će izgledati malo drugačije, ali će imati identična svojstva.

huffman-primjer-5

6. Počevši od vrha, gibamo se najkraćim putem do prve vjerojatnosti, te pritom ispisujemo bitove na koje nailazimo, redom, s lijeva na desno. Ponavljamo za svaku vjerojatnost pojedinačno.

huffman-primjer-6

Ovime smo dobili najefikasniji kod za navedene vjerojatnosti.

Možemo izračunati efikasnost koda. Za efikasnost koda nam je potrebna entropija i prosječna duljina kodne riječi.

Entropiju izračunamo kao sumu svih pojedinačnih entropija.

<latex>H\left( X \right) = \sum_{i=1}^{n}P\left( x_i \right) \cdot log_2\left( \frac{1}{P\left( x_i \right)} \right)</latex>

<latex>H=\frac{1}{2}log_2\left( \frac{1}{\frac{1}{2}} \right)+\frac{1}{6}log_2\left( \frac{1}{\frac{1}{6}} \right)+\frac{1}{6}log_2\left( \frac{1}{\frac{1}{6}} \right)+\frac{1}{6}log_2\left( \frac{1}{\frac{1}{6}} \right) = 1,792481\text{ }bita</latex>

Prosječnu duljinu kodne riječi možemo izračunati kao sumu umnoška vjerojatnosti i duljine kodne riječi.

<latex>L\left( X \right) = \sum_{i=1}^{n}P\left( x_i \right)\cdot l_i</latex>

<latex>L=\frac{1}{2}\cdot 1+\frac{1}{6}\cdot 2+\frac{1}{6}\cdot 3+\frac{1}{6}\cdot 3 = 1,8\dot{3}\text{ }bita</latex>

Efikasnost koda možemo izračunati kao omjer entropije i prosječne duljine kodne riječi.

<latex>\eta\left( X \right)=\frac{H\left( X \right)}{L\left( X \right)}</latex>

<latex>\eta=\frac{1,792481}{1,8\dot3}=0,979498\text{ }\frac{bit}{simbol}</latex>

U ovome slučaju efikasnost koda iznosi približno 98%. Vidimo da je izračunata prosječna duljina kodne riječi samo malo veća od izračunate entropije. Tako da ne samo da je ovaj kod efikasan, on je ujedno i veoma blizu teoretskog limita kojeg je postavio Shannon.

Fleksibilnost Huffmanovog algoritma

Kako u prethodnom primjeru postoji više jednakih vjerojatnosti, zadatak smo mogli riješiti i na drugi način. Na primjer da smo prvo zbrojili vjerojatnosti za oblačno i maglovito vrijeme, a potom tu vrijednost s vjerojatnosti za kišno vrijeme. Kodne riječi bi bile u različitom poretku. Prosječna duljina kodne riječi bi ostala ista, a samim time i efikasnost.

U nekim slučajevima se može promijeniti i duljina kodne riječi. Promotrimo sljedeću tablicu.

Vjerojatnost ($$p_i$$)Kod 1Kod 2
0,4100
0,20110
0,200011
0,10010010
0,10011011

Oba koda su dobivena pomoću Huffmanova algoritma, međutim na prvi pogled izgledaju potpuno različito. Duljine kodnih riječi su različite. Uzmimo vjerojatnost 0,4, u prvom kodu duljina kodne riječi iznosi 1 bit, a u drugom kodu duljine kodne riječi iznosi 2 bita. Međutim ako bi izračunali prosječnu duljinu kodne riječi, ona bi u oba slučaja iznosila 2,2 bita što znači da bi efikasnost bila jednaka u oba slučaja. Huffmanov algoritam uvijek daje najefikasniji kod s najmanjom mogućom prosječnom duljinom kodne riječi za određeni skup vjerojatnosti, iako je moguće dobiti više naizgled različitih kodova. To upravo demonstrira fleksibilnost Huffmanovog algoritma. [3]

Huffmanovo dekodiranje

Huffmanov kod je kod s prefiksom što znači da postoji samo jedan način na koji se kodna riječ može dekodirati. Taj uvjet je osiguran zbog toga što ni jedna kodna riječ ne predstavlja prvi dio (prefiks) neke druge kodne riječi. Ako taj uvjet ne bi bio osiguran, onda bi jedno kodnu riječ mogli dekodirati na više različitih načina. Ispunjenje ovog uvjeta se jasno vidi na samom Huffmanovom stablu.
Proces dekodiranja je vrlo jednostavan. Prilikom dekodiranja se koristi prethodno izgrađeno Huffmanovo stablo, tako što čitamo kodne riječi bit po bit, pri čemu se počevši od vrha (korijena) spuštamo duž grana na kojima se nalaze pojedini bitovi, sve dok ne dođemo do simbola. Na ovaj način možemo potpuno rekonstruirati početni simbol pa stoga Huffmanov kod spada u grupu reverzibilnih kodova.

Sažimanje podataka

Statičko Huffmanovo kodiranje

Osnovna ideja Huffmanovog kodiranja je pridodijeliti kodne riječi najmanje duljine simbolima koji se najčešće pojavljuju. Iz tog razloga je za primjenu Huffmanovog kodiranja potrebno znati vjerojatnost pojave određenog simbola. Na temelju tih vjerojatnosti, u statičkom Huffmanovom kodiranju, Huffmanovo stablo se kreira na samom početku kodiranja te se više ne mijenja tijekom procesa. Međutim, ovo je ograničavajući faktor u mnogim primjenama. U slučajevima gdje nije moguće točno odrediti vjerojatnost pojave određenog simbola ili u slučajevima gdje se ona mijenja dinamički, primjena Huffmanovog koda neće dati najveće moguće sažimanje.

Uzmimo na primjer Hrvatski jezik. Znamo približno vjerojatnosti pojava određenih slova u hrvatskom jeziku. Pomoću tih vjerojatnosti možemo konstruirati Huffmanovo stablo te izvesti kodne riječi za pojedino slovo. Huffmanovim algoritmom dobijemo najkraće kodne riječi za slova koja se pojavljuju najčešće, tj. najdulje kodne riječi za slova koja se pojavljuju najrjeđe. Međutim, problem se javlja ako tu tablicu iskoristimo na dvije knjige različitih tematika. Recimo da se radi o znanstveno-fantastičnom romanu i znanstvenom radu iz područja elektrotehnike. Ako primijenimo naše stablo na znanstveno-fantastični roman, nećemo postići jednak stupanj sažimanja kao na znanstvenom radu. Razlog tomu je različita vjerojatnost pojave pojedinih slova. U znanstvenom radu će se možda češće pojavljivati slova U (napon), I (struja), R (otpor) nego u romanu.

Možemo reći da Huffmanov kod nije univerzalan kod što znači da neće dati najveću moguću kompresiju u svim primjenama, upravo zbog toga što je ovisan o poznavanju vjerojatnosti. Kako bi se nosili s time, razvijena je nova metoda Huffmanovog kodiranja, nazvana dinamičko ili adaptivno Huffmanovo kodiranje.

Dinamičko (adaptivno) Huffmanovo kodiranje

Kod dinamičkog (adaptivnog) Huffmanovog kodiranja, prilikom svakog novog kodiranja, vjerojatnosti pojave simbola računaju se dinamički, tijekom samog procesa kodiranja. To ipak nije najefikasnija metoda jer se kod takvog postupka Huffmanovo stablo stalno iznova mijenja pa takvo kodiranje ima veće vrijeme izvršavanja. Stoga se za npr., kodiranje teksta, koriste kodovi s manjim vremenom izvršavanja, poput Lempel-Ziv koda.

Primjena

Huffmanovo kodiranje se često koristi pri sažimanju podataka, npr. u DEFLATE algoritmu za sažimanje kojeg koriste mnogi programi sa sažimanje datoteka različitih vrsta poput .ZIP datoteka. [4] Huffmanovo kodiranje se također koristi u sažimanju .JPEG i .MP3 datoteka. [5] [6]

Reference

1. Huffman, David A. (1952). A Method for the Construction of Minimum-Redundancy Codes. Proceedings of the IRE, 40. svezak, 9. izdanje, str. 1098–1101. (PDF)
2. Togneri R., deSilva Christopher J.S. (2003). Fundamentals of Information Theory and Coding Design, str. 137. Boca Raton, Florida: CRC Press. ISBN 978-0-203-99810.
3. Luenberger, David G. (2008). Information Science. New Jersey: Princeton University Press. ISBN 978-0-691-12418-3.
4. PKWARE (2012). .ZIP File Format Specification, sekcija 5.5, Deflating – Method 8. (TXT)
5. CCITT (1993). INFORMATION TECHNOLOGY – DIGITAL COMPRESSION AND CODING OF CONTINUOUS-TONE STILL IMAGES – REQUIREMENTS AND GUIDELINES, str. 50. (PDF)
6. ISO/IEC 11172-3 (1993). Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s – Part 3.

Lorem ipsum

» dsofic

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque rutrum ut magna eu euismod. Vivamus iaculis velit posuere est finibus, rutrum pretium libero elementum. Fusce ut metus quis nibh ultrices scelerisque et eu lacus. In tempus nisi vitae volutpat posuere. Cras non malesuada odio, a interdum nisi. Suspendisse iaculis neque ac erat hendrerit, quis tristique lorem vehicula. Donec ac hendrerit arcu, at iaculis enim. Pellentesque nibh quam, tristique eget tellus ac, molestie pellentesque leo. Sed egestas felis eu orci porta, et consectetur nulla molestie. Phasellus id odio a dolor dictum cursus ut id turpis. Ut cursus malesuada turpis. In ut pellentesque ipsum, id blandit nisi. Integer sed quam a enim condimentum condimentum. Nunc velit nibh, porta sit amet dapibus vitae, cursus at nunc.

Vivamus magna tellus, volutpat at tincidunt in, tristique id ligula. Quisque non ligula imperdiet, iaculis justo non, mattis eros. Nullam feugiat velit non consequat mollis. In posuere est lacus, ut tempus tellus egestas eu. Suspendisse potenti. Suspendisse sodales fringilla lorem, vitae commodo ligula lobortis quis. Sed mi sapien, ornare id sodales non, dignissim eu justo. Nam consectetur, est eu iaculis consectetur, nibh tortor pulvinar quam, et gravida orci elit vitae ante. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras ac turpis iaculis, venenatis ante aliquet, tempus elit. Cras sodales bibendum nulla a aliquet. Sed eget volutpat tellus. Nulla eget dictum enim, in mollis eros. Ut sagittis ut massa at ultricies. Integer dapibus in odio et fermentum.

Maecenas ipsum nisi, blandit id euismod at, ultrices in purus. Sed libero orci, viverra in eros scelerisque, aliquet lobortis nulla. Integer hendrerit ante at lorem tincidunt posuere. Suspendisse sed iaculis diam. Praesent sit amet quam nec nisl sollicitudin sollicitudin non vitae elit. Etiam hendrerit fringilla neque, eget vulputate odio. Sed in orci neque. Pellentesque dignissim magna a leo rutrum maximus. Fusce vel diam molestie ex lobortis sagittis. Sed mi massa, pharetra sed risus sed, porta varius diam. Quisque ac tincidunt lorem, id fermentum lorem. Cras fermentum auctor odio in varius. Nunc congue, arcu congue elementum varius, arcu eros pellentesque mi, ut lacinia ipsum urna ut mauris. Ut convallis vulputate eros porttitor rutrum. Nunc faucibus ac orci in cursus. Mauris nunc tellus, cursus eu luctus vel, fermentum non tortor.

Mauris viverra in sapien vitae convallis. Aliquam aliquam faucibus neque, a egestas elit consequat non. Pellentesque et leo vel sapien fermentum dapibus ut at risus. Phasellus feugiat ac ipsum sit amet faucibus. Morbi eu ultrices turpis, ac volutpat tortor. Donec vel facilisis turpis. Pellentesque vel metus a dolor mollis rhoncus. Nunc mollis nunc vitae ligula bibendum, eget scelerisque ligula hendrerit. Etiam congue a velit at pretium. Donec feugiat lectus scelerisque, congue massa a, posuere nisl. Quisque lectus elit, consequat non nunc at, interdum ullamcorper velit.

Mauris vitae facilisis leo. Nam dui lorem, sodales vitae magna ac, consectetur ullamcorper diam. Mauris tristique mauris ac ex ornare aliquet. Quisque ac pulvinar tortor. Nullam pellentesque venenatis nisi, quis mollis odio elementum in. Sed condimentum vulputate odio, sed dapibus arcu sagittis vel. Nulla dolor nisi, auctor ac lacinia vel, hendrerit vitae neque. Nullam sed rutrum erat, eget lobortis turpis. Quisque nec lobortis dolor. Proin id mollis mauris. Sed ornare enim ac mi sodales dictum. Nullam et ante varius, laoreet nisl eget, tristique nibh.