Hafmanovo kodovanje

Download Report

Transcript Hafmanovo kodovanje

Matematički institut SANU

HUFFMAN-OVO KODOVANJE

Lazar Velimirović, Miomir Stanković,

Huffman-ovo kodovanje

Huffman-ovo kodovanje predstavlja algoritam entropijskog kodovanja koji se koristi za kompresiju podataka. Ovaj algoritam pronalazi optimalni sistem kodovanja simbola zasnovan na relativnoj frekvenciji pojave svakog simbola u listi.

Algoritam je 1953. razvio David A. Huffman (1925-1999) i objavio uradu A Method for the Construction of Minimum-

Redundancy Codes

(Postupak minimalnom redudansom).

konstrukcije kodova sa

Huffman-ovo kodovanje

Huffman-ov kod je optimalni binarni prefiksni kod promenljive dužine. Povodom osobine optimalnosti, važno je istaći da je Huffman-ovo kodovanje najefikasniji kompresioni metod u svojoj klasi. Reči binarnog koda su nizovi bitova, a reči prefiksnog koda imaju svojstvo da niti jedna reč nije prefiks druge. Za kod kažemo da je kod promenljive dužine ako različitim simbolima odgovaraju kodovi različitih dužina.

Huffman-ovo kodovanje

Huffman-ov postupak je zasnovan na dva zapažanja u vezi sa optimalnim prefiks kodovima: 1.

U optimalnom kodu,simboli koji se javljanju češće (imaju veću verovatnoću događaja) imaće kraće kodne reči nego simboli koji se javljaju ređe, tj. što je verovatnoća pojavljivanja simbola veća, utoliko je manji broj bita kojim se on reprezentuje 2.

U optimalnom kodu, dva simbola koji se javljaju ređe imaće istu dužinu

Huffman-ovo kodovanje

a

3 

Kodovanje/dekodovanje simbola se vrši i na osnovu Huffman –ovog stabla. Simboli u stablu se nalaze organizovani prema verovatnoći pojavljivanja.

Simboli sa većom verovatnoćom se nalaze bliže korenu stabla, dok se simbolisa manjom verovatnoćom nalaze dalje.

Huffman-ovo stablo se gradi od dna ka vrhu. Kreće se od listova stabla i progresivno se gradi sve do korena.

Prvo se formira niz simbola u obliku listova koji će se povezati u binarno stablo. Za svaki od simbola se vezuje težina koja opisuje njegovu verovatnoću pojavljivanja (što je težina veća, to je veća iverovatnoća).

Huffman-ovo kodovanje

Stablo se gradi kroz sledeće korake: 1.

Pronalaze se dva slobodna čvora u nizu sa najmanjom vrednošću težina.

2.

Kreira se roditeljski čvor za pronaĎene čvorove. Dodaje mu se težina jednakazbiru težina njegovih potomaka čvorova.

3.

Roditeljski čvor se dodaje u niz slobodnih čvorova a potomci čvorovi seizvlače iz niza.

4.

Putanji od roditeljskog do jednog od potomaka čvorova se dodeljuje vrednost 0, dok se putanji do drugog čvora dodeljuje vrednost 1.

5.

Prethodni koraci se ponavljaju sve dok u nizu slobodnih čvorova ne preostane samo jedan. Poslednji čvor je koren Huffman-ovog binarnog stabla.

Huffman-ovo kodovanje

0.4

0.2

0.2

0.1

0 0.1

1 0.4

0.2

0.2

0 0.4

0.2

0 0.4

0 0.6

1 0.4

1 0.2

1 1

Huffman-ovo kodovanje

P

0.4

0.2

0.2

0.1

0.1

Huffman-ov kod 0 10 110 1110 1111 1 2 3 4 4

l

a

3

HVALA!

Contact e-mail: [email protected]