Wat is Huffman-compressie?

Ook bekend als Huffman-codering, een algoritme voor het verliesloos comprimeren van bestanden op basis van de frequentie waarmee een symbool voorkomt in het bestand dat wordt gecomprimeerd. Het Huffman-algoritme is gebaseerd op statistische codering, wat betekent dat de waarschijnlijkheid van een symbool rechtstreeks van invloed is op de lengte van de weergave. Hoe waarschijnlijker het is dat een symbool voorkomt, des te korter zal de bitgrootte-weergave zijn. In elk bestand worden bepaalde tekens meer gebruikt dan andere. Bij gebruik van binaire weergave hangt het aantal bits dat nodig is om elk teken weer te geven af ​​van het aantal tekens dat moet worden weergegeven. Als we één bit gebruiken, kunnen we twee karakters vertegenwoordigen, dwz 0 vertegenwoordigt het eerste karakter en 1 vertegenwoordigt het tweede karakter. Als we twee bits gebruiken, kunnen we vier tekens vertegenwoordigen, enzovoort.

In tegenstelling tot ASCII-code, een code met een vaste lengte die zeven bits per teken gebruikt, is Huffman-compressie een coderingssysteem met variabele lengte dat kleinere codes toewijst voor vaker gebruikte tekens en grotere codes voor minder vaak gebruikte tekens om de grootte van bestanden die worden gecomprimeerd en overgedragen.

Bijvoorbeeld in een bestand met de volgende gegevens:

XXXXXXYYYYZZ

de frequentie van “X” is 6, de frequentie van “Y” is 4 en de frequentie van “Z” is 2. Als elk teken wordt weergegeven met een code met een vaste lengte van twee bits, dan is het aantal bits dat nodig is om dit bestand opslaan zou 24 zijn, dat wil zeggen, (2 x 6) + (2x 4) + (2x 2) = 24.

Als de bovenstaande gegevens werden gecomprimeerd met behulp van Huffman-compressie, zouden de vaker voorkomende getallen worden weergegeven door kleinere bits, zoals:

X met de code 0 (1 bit)
Y door de code 10 (2 bits)
Z door de code 11 (2 bits)

daarom wordt de grootte van het bestand 18, dwz (1x 6) + (2 x 4) + (2 x 2) = 18.

In het bovenstaande voorbeeld krijgen vaker voorkomende tekens kleinere codes toegewezen, wat resulteert in een kleiner aantal bits in het uiteindelijke gecomprimeerde bestand.

Huffman-compressie is vernoemd naar zijn ontdekker, David Huffman.