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

  • 690