Documente Academic
Documente Profesional
Documente Cultură
CODIFICAREA HUFFMAN
Complemente de matematici
2021
BUCUREȘTI
Cuprins
1. Noțiuni teoretice ................................................................................................................................. 2
1.1. Noţiuni generale despre compresie ............................................................................................. 2
1.2. Clasificarea algoritmilor de compresie fără pierderi: ................................................................... 3
1.3. Algoritm Huffman static ............................................................................................................... 3
1.4. Algoritm Huffman dinamic ........................................................................................................... 4
2. Exemple ............................................................................................................................................... 5
2.1. Problemă frecvențe ...................................................................................................................... 5
2.2. Problemă probabilitate ................................................................................................................ 8
Concluzii: ............................................................................................................................................... 11
Bibliografie: ........................................................................................................................................... 12
1. Noțiuni teoretice
1.1. Noţiuni generale despre compresie
Compresia este procesul de minimizare a spaţiului ocupat sau a timpului necesar
transmiterii unei anumite cantităţi de informaţie.
Metodele de compresie pot fi împărţite în:
-metode de compresie cu pierdere;
-metode de compresie fără pierdere.
Metodele de compresie cu pierdere de informaţie sunt folosite în special în
transmisia semnalului audio şi video, unde pierderea de informaţie are ca rezultat o scădere a
calităţii sunetului, respectiv imaginii, ele neconstituind obiectul prezentei lucrări.
Conceptul de compresie de date fără pierdere pare imposibil la prima vedere, dar
o analiză mai atentă face ca această idee, de compresie fără pierdere, să aibă sens. Astfel, dacă
ne gândim la prescurtările din viaţa de zi cu zi (abrevieri: prof., etc., CEC, ş.a.) acestea apar ca
o formă primitivă a compresiei de date. Compresia de date fără pierdere, prezentă în programele
de arhivare, în sistemele de transmisiune a datelor, a evoluat de-a lungul timpului pornind de la
algoritmi simpli (suprimarea zerourilor, codarea pe şiruri) şi ajungând la algoritmii complecşi
folosiţi în prezent.
Avantajele compresiei sunt:
-reducerea spaţiului necesar depozitării unei cantităţi de informaţie;
-scăderea timpului de transmitere a unor mesaje, ceea ce duce la scăderea costului per
mesaj şi posibilitatea creşterii traficului într-o reţea de transmisiuni. Această scădere a timpului
este efectul direct al micşorării cantităţii de informaţie, dar şi efectul indirect al micşorării
pierderilor de timp datorate protocoalelor de comunicaţie.
- scăderea timpului de rulare a unui program datorită timpului de acces la disc.
Metodele de compresie fără pierderi au la bază ideea că, în general, cantitatea de
informaţie prelucrată (transmisă, depozitată) conţine o anumită redundanţă care se datorează:
-distribuţiei caracterelor (unele caractere au o frecvenţă de apariţie mult mai mare decât
altele);
-repetării consecutive a unor caractere;
-distribuţiei grupurilor de caractere (unele grupuri sunt mult mai frecvente decât altele
şi în plus există grupuri care nu apar deloc);
- distribuţiei poziţiei (unele caractere sau grupuri ocupă poziţii preferenţiale,
predictibile în anumite blocuri de date).
Având în vedere toate aceste tipuri de redundanţe putem înţelege de ce o anumită tehnică
de compresie poate da un rezultat bun pentru un anumit tip de surse, pentru altele însă rezultatul
poate fi dezastruos. De aici este uşor de înţeles că noile direcţii în studiul compresiei urmăresc
obţinerea unui algoritm care să ofere o compresie cât mai bună pentru tipuri de surse cât mai
diferite.
Aprecierea cantitativă a compresiei realizate se face utilizând factorul de compresie
𝑛𝑢
definit ca: 𝐹𝑐 = , unde 𝑛𝑢 este lungimea în biţi a mesajului iniţial şi 𝑛𝑐 lungimea după
𝑛𝑐
𝐻(𝑆)
compresie, precum şi prin eficienţa codării definită prin η = , unde H(S) reprezintă
𝑛̅∙𝑙𝑜𝑔2 𝑚
entropia sursei informaţionale ce este codată, m reprezintă numărul simbolurilor din alfabetul
de codare iar 𝑛̅ reprezintă lungimea medie a cuvintelor.
L = ∑𝑛𝑖=1 𝑙𝑖 ∙ 𝑓𝑖
Scopul nostru este de a construi un cod prefix care să minimizeze acastă expresie. . În
loc de a utiliza un cod în care fiecare caracter să fie reprezentat pe 7 sau pe 8 bii (lungime
fixă), se utilizează un cod mai scurt pentru caracterele care sunt mai frecvente i coduri mai
lungi pentru cele care apar mai rar. Pentru aceasta, se construiește un arboe binar complet
după cum urmează:
Pasul 1: Unificăm arborii care au frecvențele cele mai mici și anume {O,P}, {L,N}, {D,.}
adunând frecvențele acestora la rândul lor.
2 2 2
E|5 M|4 T|3 I|2 _|2 C|2 A|2 O|1 P|1 L|1 N|1 D|1 .|1
Pasul 3: Unificăm următorii arbori cu frecvențele cele mai mici, și anume arborii
corespunzători caracterelor {T,I}, obținând un nou arbore cu frecvența 5. În continuare
unificăm ultimii arbori rămași corespunzători caracterelor {E,M} cu frecventele 5 respectiv 4.
E|5 M|4 5 4 4 4
9 9 8
E|5 M|4 5 4 4 4
17
9 9 8
E|5 M|4 5 4 4 4
0 17 1
9 9 0
8 1
0
0
1
1
E|5 M|4 5 4 4 4 1
1
0
0 1 0 1 0
Obținem codurile:
Caracter Cod corespunzător
E 00
M 01
T 1000
I 1001
_ 1010
C 1011
A 1100
O 11010
P 11011
L 11100
N 11101
D 11110
. 11111
Observații
– Caracterele care apar cel mai frecvent sunt mai aproape de rădăcină și astfel lungimea
codificării va avea un număr mai mic de biți.
– La fiecare pas am selectat cele mai mici frecvențe, pentru a unifica arborii
corespunzători.
Caracter Probabilitate
L 1/29
D 1/29
P 1/29
I 1/29
M 2/29
C 2/29
U 2/29
R 2/29
E 5/29
S 3/29
T 3/29
A 3/29
„” 3/29
Conform formulei cantatii de informatie necesare reprezentarii unui simbol, in cazul nostru
un simbol se va reprezenta teoretic prin:
Daca vom asocia fiecărui simbol un număr de biți (numerici), 𝐼1, … ,𝐼𝑛 atunci numărul
mediu real de biți al unui simbol va fi media ponderata a lungimilor acestora, cu ponderea egală
cu probabilitățile de apariție:
𝐼𝑚𝑒𝑑 = 𝐼1 ∙ 𝑝1 + ⋯ + 𝐼𝑛 ∙ 𝑝𝑛
Algoritmul Huffman incearcă să apropie valoarea 𝐼𝑚𝑒𝑑 cât mai mult de cea teoretică, H.
Ideea de la baza compresiei Huffman este de a asocia simbolurilor cu ponderea cea mai mare
(adica care apar cel mai frecvent in text), coduri de lungime cât mai mică, și viceversa pentru
simbolurile cu apariție foarte rară, și în același timp codurile să poată fi ușor delimitate într-un
șir continuu de simboluri. Acest lucru este realizat într-un mod foarte ingenios plasând fiecare
simbol într-un mod convenabil ales în frunzele unui arbore binar, iar codificarea simbolurilor
să fie de fapt calea parcursă prin arbore, de la rădacină spre fiecare simbol. Algoritmul Huffman
reprezintă algoritmul de construcție al acestui arbore, pornind de la o mulțime de simboluri A,
fiecare având asociat probabilitatea 𝜋.
Codificare:
Arborele Huffman:
Concluzii:
Compresiile binare sunt folosite adesea atunci cand utilizăm calculatorul pentru
necesitățile zilnice. A comprima un mesaj înseamnă a păstra numai acei parametri care sunt
esențiali pentru destinatar. Ceilalti parametri nu se transmit, respectiv nu se stochează.
De exemplu:
-pe instagram sunt folosite atunci cand sunt încărcate poze cu o calitate ridicată iar ei o
modifică folosind codificarea pentru a mai tăia din memoria ocupată de poză.
-atunci când arhivăm documente de tip .zip pentru a le transfera, acestea sunt codificate
pentru a micșora dimensiunea, pentru a fi posibilă transmiterea acestora.
-când se încarcă un filmuleț pe youtube și se încarcă la o calitate mai proastă acest lucru se
datorează compresiei.
Toate aplicațiile de genul acesta folosesc codificarea pentru a comprima informațiile, ca să
își conserve spațiile de memorie.
Bibliografie:
[1]Curs: Compresia Imaginilor Binare (#349651) - Graduo
[2]Microsoft Word - Huffman.doc (edu.ro)
[3]Codificare Huffman folosind arbori binari [CS Open CourseWare] (pub.ro)
[4]Curs “Complemente de matematici”