Uvod u organizaciju raunara 2 Prefiksni kodovi Za kod kaemo da ima prefiksno svojstvo ako ni za jedan znak ne vai da je njegov kod prefiks koda nekog drugog znaka. Npr. ako je 11 kod karaktera A, a 1110 kod karaktera B, onda je kod karaktera A prefiks koda karaktera B. Uvod u organizaciju raunara 3 Prefiksni kodovi Zahvaljujui prefiksnom svojstvu koda, im je kod nekog znaka proitan, ne postoji mogunost da se daljim itanjem zakljui da se radi o kodu nekog drugog znaka, tako da se odmah moe konstatovati o kom se znaku radi, i prei na itanje koda sledeeg znaka. Uvod u organizaciju raunara 4 Kodovi promenljive duine Za kod kaemo da je kod promenljive duine ako razliitim znakovima odgovaraju kodovi razliitih duina. U suprotnom za kod kaemo da je fiksne duine. Npr. ako je 11 kod karaktera A, a 1110 kod karaktera B, onda se radi o kodu promenljive duine. Uvod u organizaciju raunara 5 Huffmanov kod Huffmanov kod je optimalan prefiksni kod. Zato se esto koristi za realizaciju kompresija bez gubitka. To je kod promenljive duine. Postoje: Statiko i Dinamiko Huffmanovo kodiranje. Uvod u organizaciju raunara 6 Statiko Huffmanovo kodiranje Osnovna ideja je da se karakteri koji se ee javljaju kodiraju kraim sekvencama, dok je kod karaktera koji se ree pojavljuju dozvoljeno koristiti i due kodove. Na poetku je potrebno izgraditi sortiranu tabelu frekvencija pojavljivanja svih znakova koje elimo da kodiramo. Neka su to npr. karakteri. Uvod u organizaciju raunara 7 Izgradjna Huffmanovog drveta Pronadju se dva karaktera koja se najree pojavljuju i ona se zamene novim karakterom ija je frekvencija zbir frekvencija polazna dva karaktera. Novouvedeni karakter predstavlja vor drveta iz koga izniu polazni karakteri. Postupak se ponavlja sve dok se ne izgradi kompletno drvo. Uvod u organizaciju raunara 8 Odredjivanje kodova Sve grane drveta koje vode na levo se oznae nulom, dok se sve grane koje vode na desno oznae jedinicom. Kod svakog karaktera se odredjuje prikupljanjem oznaka grana putanje koja vodi od korena do njega. Uvod u organizaciju raunara 9 Huffmanovo kodiranje - primer Kodirajmo poruku: AFAABBAEACABBACABEABCDFDAEAAEFAF Tabela frekvencija:
A 13 B 6 C 3 D 2 E 4 F 4 Uvod u organizaciju raunara 10 Huffmanovo kodiranje - primer
Kodovi su: A 0 B 100 C 1010 D 1011 E 110 F 111 A(13) B(6) C(3) D(2) E(4) F(4) 8 0 1 5 1 0 11 0 1 19 0 1 32 1 0 Uvod u organizaciju raunara 11 Huffmanovo kodiranje - primer Kodirana poruka se dobija nadovezivanjem kodova karaktera i glasi:
01110010010001100101001001000101 00100110011010101011111101101100 01101110111 Uvod u organizaciju raunara 12 Huffmanovo kodiranje - primer Za kodiranje poruke smo iskoristili 13*1+6*3+3*4+2*4+4*3+4*3=75 bita. Da smo koristili, na primer, 3-bitno kodiranje koje karakterima dodeljuje njihove redne binarne brojeve od 000 do 101 iskoristili bismo 3*32=96 bita. Uvod u organizaciju raunara 13 Dinamiko Huffmanovo kodiranje Za razliku od statikog Huffmanovog kodiranja, gde se frekvencije pojavljivanja znakova odreuju na poetku rada algoritma, kod dinamikog se ove frekvencije izraunavaju i menjaju u toku rada algoritma.