12a. Huffmancodering
intro
2021-03-19
slides.com/jod/pt_12a
Docent: Jo Devriendt
Assistent: Ann Philips
Coördinator: Joost Vennekens
voornaam.achternaam@kuleuven.be
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Compressie
Input: sequentie nulletjes en eentjes
Output: kleinere sequentie nulletjes en eentjes die dezelfde informatie bevat als de input
-
Lossless: origineel kan exact terug opgebouwd worden
- Bvb. .zip, .png, Huffmancodering
-
Lossy: er gaat informatie verloren, maar je krijgt sterkere compressie
- Bvb. .jpg, .mp3
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Huffmancodering
Input: tekst: sequentie bytes die karakters voorstellen
Output: sequentie bits die karakters voorstellen
Elk karakter wordt individueel geëncodeerd met behulp van een unieke bitcode
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Voorbeeld
Comprimeer "meettenten"
- 10 karakters, dus 80 bits indien 1 byte / karakter
- maar 4 verschillende karakters, dus kan eigenlijk ook met 2 bits per karakter, dus 20 bits in totaal
karakter | bitcode |
---|---|
m | 00 |
e | 01 |
t | 10 |
n | 11 |
m e e t t e n t e n 00 01 01 10 10 01 11 10 01 11
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Voorbeeld
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
m e e t t e n t e n 111 0 0 10 10 0 110 10 0 110
Comprimeer "meettenten"
- 10 karakters, dus 80 bits indien 1 byte / karakter
- maar 4 verschillende karakters, dus kan eigenlijk ook met 2 bits per karakter, dus 20 bits in totaal
- Huffmancodering gebruikt 19 bits:
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centrale ideeën
-
Kleinere encodering naarmate karakter meer frequent voorkomt
- frequentie is niet-uniform in meeste tekstbestanden
- Zorg dat geen enkele bitcode een prefix is van een andere
- bvb. niet "0" en "01" als bitcodes
- garantie dat we individuele karakters kunnen onderscheiden
m e e t t e n t e n 111 0 0 10 10 0 110 10 0 110
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Centrale ideeën
-
Kleinere encodering naarmate karakter meer frequent voorkomt
- frequentie is niet-uniform in meeste tekstbestanden
- Zorg dat geen enkele bitcode een prefix is van een andere
- bvb. niet "0" en "01" als bitcodes
- garantie dat we individuele karakters kunnen onderscheiden
1110010100110100110
karakter | bitcode |
---|---|
m | 111 |
e | 0 |
t | 10 |
n | 110 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Samenvatting
- Data kan lossy en lossless gecomprimeerd worden
- Huffmancodering is een lossless compressietechniek voor tekstdata
- Karakters worden individueel geëncodeerd met bitcodes
- Exploiteert niet-uniforme frequenties waarin karakters voorkomen
- Om karakters te onderscheiden: geen enkele bitcode is een prefix van een andere
12a. Huffmancodering intro
By Jo Devriendt
12a. Huffmancodering intro
- 702