Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
6.2 Huffman kodning 6. Komprimeringsteknikker<br />
6.2.2 Huffman kodning vist ved eksempel<br />
Vi vil her vise et simpelt eksempel p˚a hvordan Huffman <strong>komprimering</strong> kan<br />
reducere størrelsen p˚a en fil. Vores fil vil i eksemplet best˚a af en række tegn:<br />
AAAAAAAAAABBBBBBBBCCCCCCDDDDDEE<br />
Som vi kan se dukker nogle tegn op flere gange end andre. Her følger en<br />
liste over de forskellige tegns hyppighed, senere omtalt som tegnets “frekvens” 4 :<br />
A = 10 B = 8 C = 6<br />
D = 5 E = 2<br />
Som i normal ASCII kode vil filen fylde 8 bit pr. tegn, hvilket giver:<br />
10 · 8 + 8 · 8 + 6 · 8 + 5 · 8 + 2 · 8 = 248 bits<br />
Bruger vi Huffman kodning til at komprimere dataene <strong>med</strong>, ser det s˚aledes<br />
ud. Vi har allerede talt frekvenserne p˚a tegnene op, s˚a skal man blot sætte<br />
hvert tegn til en værdi. Det vil sige at hvis vi sætter værdierne til:<br />
A = 11 (2 bit) B = 10 (2 bit) C = 01 (2 bit)<br />
D = 001 (3 bit) E = 000 (3 bit)<br />
Vi ganger herefter, som <strong>med</strong> ASCII, antal bit, <strong>med</strong> hvert tegns “frekvens”,<br />
og adderer:<br />
10 · 2 + 8 · 2 + 6 · 2 + 5 · 3 + 2 · 3 = 69 bits<br />
Som det fremg˚ar har vi repræsenteret samme mængde tegn, men bruger<br />
mindre plads.<br />
6.2.3 Træstrukturer<br />
Tildelingen af bitværdier til tegn kan ogs˚a opstilles som en binær træstruktur.<br />
Dette fungerer s˚aledes at man starter <strong>med</strong> at have et knudepunkt, der<br />
maksimum har 2 ”børn”. Hvert barn har, ligesom sin forælder, mulighed for<br />
at have to børn, og s˚aledes fortsætter træet.<br />
Opbygningen af en Huffman træstruktur foreg˚ar bagfra. Man opstiller<br />
sin liste over tegn, og deres frekvenser. Udfra denne opremsning følger man<br />
denne løkke:<br />
1. Tag de to tal <strong>med</strong> laveste frekvens.<br />
2. De to tal skal danne et børnepar.<br />
4 reel frekvens er f.eks. 10/31, men bruges her til at tælle antal forekomster af tegnet<br />
48