Sunteți pe pagina 1din 13

Laborator compresie

Laborator TD

1 Coduri de compresie
1.1 Introducere
Tehnicile de compresie sunt utile pentru fiierele text, n care anumite caractere apar cu o
frecven mai mare dect altele, pentru fiiere ce codific imagini sau sunt reprezentri digitale ale
sunetelor ori ale unor semnale analogice, ce pot conine numeroase motive care se repet. Chiar dac
astzi capacitatea dispozitivelor de memorare a crescut foarte mult, algoritmii de compresie a fiierelor
rmn foarte importani, datorit volumului tot mai mare de informaii ce trebuie stocate. n plus,
compresia este deosebit de util n comunicaii, transmiterea informaiilor fiind mult mai costisitoare
dect prelucrarea lor.

Una dintre cele mai rspndite tehnici de compresie a fiierelor text, care, n funcie de
caracteristicile fiierului ce urmeaz a fi comprimat, conduce la reducerea spaiului de memorie necesar
cu 20%-90%, a fost descoperit de D. Huffman n 1952 i poart numele de codificare (cod) Huffman. 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.

Definiii:
Compresia datelor metode i tehnici de reducere a volumului unui set de date reprezentate sub form
binar, cu posibilitatea reconstruirii lor fie exact, fie aproximativ.
Set de date ir finit de simboluri, cu reprezentare numeric (cod numeric original), n care numrul
simbolurilor ce-l compun (volumul setului de date) > numrul simbolurilor distincte ce construiesc setul
de date.
1 simbol = 8 bii (ASCII)  setul de date se construiete din maxim 28 = 256 simboluri distincte.
Alfabet mulimea simbolurilor distincte dintr-un set de date
Lungimea setului de date numrul total de bii pe care este reprezentat setul de date
Volumul unui set de date numrul de simboluri care compun setul de date
Compresie
conservativ (metode de reconstrucie exact a setului de date din versiunea sa comprimat text,
programe surs)
neconservativ (metode de reconstrucie aproximative, inexacte, a setului de date original semnal
audio, imagine)
Rata de compresie parametru prin care se msoar performanele metodei de compresie utilizate

c
= 1 100% ;
o

c lungimea setului de date comprimat;


d lungimea setului de date original.
= 100 % metoda de compresie ideal, (ctig maxim)
= 0 %, metoda nu realizeaz compresia, (ctig nul)
< 0 %, metoda nu realizeaz compresia, (expandarea datelor)
msoar ctigul relativ de lungime obinut prin utilizarea unei metode de compresie.
Viteza de compresie 1/ (depinde de complexitatea metodei, compromise ntre cei doi parametri).
Compresie conservativ (rata de compresie mare, viteza de compresie sczut)
neconservativ (rata de compresie mic, viteza de compresie mare)
Expandare creterea lungimii setului de date procesat fa de cel original (n cazul metodelor
ineficiente)
1
Laborator compresie
Decompresie aciunea de reconstruire (exact sau aproximativ) a setului de date original, plecnd de la
setul de date original
Obiectivul unei metode de compresie a datelor este detectarea i eliminarea redundanelor din setul de
date.
Redundana se msoar cu ajutorul unui model statistic asociat setului de date, plecnd de la frecvenele
de apariie ale simbolurilor alfabetului de date.
Frecvena de apariie raportul ntre numrul apariiilor simbolului i numrul total de simboluri ai
setului de date notate cu v(s). (probabilitatea de apariie a simbolului s, P(s))
Entropie numrul minim de bii necesari pentru recodificarea simbolului s, fr a se realiza confuzia cu
alte simboluri. (poate fi fracionar, dar de obicei se rotunjete la ntregul superior)
Va fi cel mult egal cu numrul iniial de bii.

1.2 Criterii de apreciere a unui cod


Deoarece la transmiterea mesajelor costul explorrii unui sistem de transmisie crete liniar cu timpul, un
criteriu convenabil de apreciere a unui cod este lungimea medie a unui cuvnt:
n
n = n i pi ,
i =1
unde pi sunt probabilitile asociate alfabetului sursei iar ni este numrul de litere din cuvntul de cod cu
indicele i; n este un parametru care precizeaz compactitatea codului, fiind evident c n trebuie s fie ct
mai mic. Totodat, n este limitat inferior de condiia de asigurare a entropiei informaionale pe simbol al
alfabetului de cod:
H
n n min =
log q
unde H reprezint entropia sursei. n aceste condiii, eficiena unui cod este definit de formula

= n min
n

2.1 Codul Shannon - Fano


Metoda Shannon Fano const n construcia arborelui binar asociat setului de date, dup urmtorul
algoritm:

Pas1: Parcurgerea setului de date (D) n mod secvenial, citind fiecare simbol n parte:
- se construiete alfabetul de ordin 0 (A0)
- se contorizeaz numrul de apariii ale fiecrui simbol s A0  contorul N(s) N.
N (s )
v(s ) = , s A 0 (estimarea probabilitatii de aparitie a lui s)
D
D = xA0 N (s ) ( volumul setului de date este constant )
Pas2: simbolurile din A0 se aranjeaz n ordine descresctoare a valorilor contoarelor, n caz de egalitate
se arajeaz lexicografic.
A0 = {K , s, t , K} cu N (s ) N (t )

Pas3: Alfabetul A0se divizeaz n dou pri disjuncte, numite subalfabete (A0L i A0R), dar se pstreaz
dou condiii de baz:
- se pstreaz ordinea simbolurilor
2
Laborator compresie
- ponderile subalfabetelor s fie ct mai apropiate
A0 = A 0 L A0 R ;
A0 L A0 R = 0; ;
( ) = N (s ) N ( A ) = N (s )
N A 0L 0R

s A0 L s A0 R

La construcia subalfabetelor se pleac simultan din cele dou capete ale alfabetului A0, mergnd spre
centru, comparnd mereu ponderile pariale ale subalfabetelor, pn la epuizarea simbolurilor alfabetului
A0.

Pas4: Construcia arborelui binar

Pas5: Se repet paii 3 i 4 pentru fiecare nod terminal al arborelui (subalfabet) care conine mai mult de
un simbol.

Stop: procesul de construcie a arborelui se oprete cnd toate subalfabetele nodurilor terminale (frunze)
conin doar un singur simbol.
Codul unui simbol se obine parcurgnd arborele de la rdcin pn la nodul ocupat de acel simbol,
concatennd valorile arcelor prin care se trece.

Observaie:
Pentru n simbol frecvent n setul de date codul corespondent este scurt, pentru c nodul lui va fi n
apropierea rdcinii. Simbolurile rare au o lungime mai mare a codului.

2.2. Aplicaie folosind codul Shannon - Fano

Setul de date, D: IT IS BETTER LATER THEN NEVER

Construcia arborelui binar


Alfabetul asociat setului de date D este:

A0 E T R A I N . B H L S V
N(s) 5 5 5 3 2 2 2 1 1 1 1 1 1
3
Laborator compresie

N(A0) = 30, arborele binar se construiete n cinci iteraii de vizitare n subalfabete.

Pas 1:
A0
0 1
0L
A A0R

A0L E T A0R R A I N . B H L S V
N(s) 5 5 5 N(s) 3 2 2 2 1 1 1 1 1 1

N(A0L) = 15 N(A0R) = 15

Simbolurile cu ponderi egale sunt aranjate n ordine lexicografic.

Pas 2:

A0LR E T A0RL R A I A0RR N . B H L S V


N(s) 5 5 N(s) 3 2 2 N(s) 2 1 1 1 1 1 1

N(A0LR) = 10;
N(A0RL) = 7;
N(A0RR) = 8;

Simbolul spaiu este cel mai frecvent simbol folosit i a atins o frunz fiind recodificat pe 2 bii: 00 (n
loc de codul original pe 8 bii 0010 0000, adic 32).

Pas 3:

4
Laborator compresie
A0RLR A I A0RRL N . B A0RRR H L S V
N(s) 2 2 N(s) 2 1 1 N(s) 1 1 1 1

N(A0RLR) = 4;
N(A0RRL) = 4;
N(A0RRR) = 4;

Simbolurile cele mai frecvente sunt recodificate n aceast iteraie, iar noile lor coduri nu depesc
lungimea de 3 bii (n loc de 8).

Pas 4:

A0RRLR . B A0RRRL H L A0RRRR S V


N(s) 1 1 N(s) 1 1 N(s) 1 1

N(A0RRLR) = 2;
N(A0RRRL) = 2;
N(A0RRRR) = 2;
Numai simbolurile foarte rare din setul de date au mai rmas de recodificat, dar codurile lor vor avea o
lungime de 5 bii n loc de 8 bii.

Pas 5 :

D = IT IS BETTER LATER THAN NEVER

5
Laborator compresie

Noile coduri nu depesc 5 bii  minimizarea redundanei i deci maximizarea ratei de compresie.

Structura setului de date comprimate

Dup etapa anterioar, informaia de pe fluxul de ieire este:


- informaia auxiliar :

13 32 5 69 5 84 5 82 65 2 73 2
Cod info
N N E N T N R A N I N
nr. bii
8 8 32 8 32 8 32 8 8 32 8 32

Cod 78 32 46 1 66 1 72 1 76 1 83 1 86 1
info nr. N N . N B N H N L N S N V N
bii 8 8 8 32 8 8 8 32 8 32 8 32 8 32

Codurile numerice sunt exprimate n zecimal, dar n realitate aceste coduri sunt binare i au cte o
lungime de 8 bii. Aranjarea informaiei auxiliare poate fi realizat i n alt manier, dar modul de
aranjare trebuie cunoscut i la decompresia datelor.

Cod 1011 011 00 1011 11110 00 11011 010 011 011 010 100 00
info
I T I S B E T T E R
nr.
bii 4 3 2 4 5 2 5 3 3 3 3 3 2

Cod 11101 1010 011 010 100 00 011 11100 1010 1100
info
L A T E R T H A N
nr.
bii 5 4 3 3 3 2 3 5 4 4

Cod 00 1100 010 11111 010 100 11010


info
N E V E R .
6
Laborator compresie
nr.
2 4 3 5 3 3 5
bii

Codurile informaiei utile i cele ale informaiei auxiliare se succed fr separatori ntre ele. ntre
informaia auxiliar i cea util ar putea s apar un separator sub forma unui simbol virtual, n absena
numrului de simboluri ai alfabetului, N. n acest caz, separatorul de informaie trebuie s aib un cod mai
mare de 255, de exemplu 256, dar reprezentarea lui ar fi pe 16 bii, n loc de 8 bii, ct ocup N.

2.3 Analiza performanelor de compresie


Vom face o analiza a entropiei (numrul de bii efectiv alocai n urma compresiei). Exist dou tipuri de
entropii: cea a informaiei auxiliare Ha(D) i cea a informaiei utile Hu(D).

Ha(D) = 8 # A0 + 32 # A0 = 520 bii

Ha(D) depete lungimea setului original de date (30 * 8 = 240 de bii), datorit reprezentrii pe 32 de
bii a contoarelor asociate. Reducerea acestei reprezentri se poate face prin scalarea contoarelor n gama
0:255, cu o uoar pierdere a preciziei de estimare a probabilitilor de apariie pentru simbolurile rare ai
setului de date.

Scalarea: N(s1) >= N (s2) >= >= N(sN)

Dac N(s1) =< 255 scalarea nu mai este necesar i se poate transmite cte 8 bii pentru fiecare contor.
Dac N(s1) > 255  N(s1) = 255 i N(sk), cu k = 2 ... N, se scaleaz astfel: N(sk) [255 x N(sk) / N(s1)]

Toate contoarele care devin nule n urma scalrii vor fi resetate la valoarea 1, pentru a nu elimina
vreun simbol. Dezavantajul scalrii apare n situaia n care la nceput N(sm) > N(sn), iar dup scalare se
obine N(sm) = N(sn). Dup scalare noile coduri pot avea un bit n plus sau n minus, mai ales n cazul
celor care apar rar n setul de date. In cazul seturilor lungi de date efectul scalrii asupra performanelor
de compresie este nesemnificativ (unele simboluri pierd un bit iar altele ctig un bit).
Entropia informaiei utile este:

Aceast valoare este foarte apropiat de cea ideal (101,625 bii)  metoda de compresie eficient.

Entropia total este:

Concluzii:
- n urma compresiei setul original de date va fi expandat, datorit dimensiunii lui reduse depite
de dimensiunea de stocare a modelului static;
- tipul static al modelului determin expandarea datelor;
- un model dinamic ar produce performane mai bune, dar ar crete complexitatea metodei de
compresie / decompresie

Decompresia datelor

- se citete informaia auxiliar (5 octei consecutivi indic o pereche simbol contor)


- se construiete arborele binar asociat
7
Laborator compresie
- se citete informaia util secvenial, bit cu bit;
- fiecare simbol al setului de date este decriptat folosit un arbore binar;

Exemplu:
- primul bit este 1  deplasarea de la A0 la A0R
- Al doilea bit 0  deplasarea spre A0RL
- Al treilea bit 1  deplasarea spre A0RLR
- Al patrulea bit 1  atingerea simbolului I, care va fi nscris pe fluxul de ieire

Atigerea unei frunze reiniializeaz cutarea din rdcina arborelui.

Observaie:
Avantajul metodei const n faptul c nu este necesar cunoaterea dimensiunilor noilor coduri de
compresie care n general variaz de la un simbol la altul.

3. Codul Huffman

3.1 Introducere
D. Huffman a elaborat un algoritm Greedy care construiete un cod prefix optimal, numit cod
Huffman. Prima etap n construcia codului Huffman este calcularea numrului de apariii ale fiecrui
caracter n text. Exist situaii n care putem utiliza frecvenele standard de apariie a caracterelor,
calculate n funcie de limb sau de specificul textului.

Fie C={c1,c2,...,cn} mulimea caracterelor dintr-un text, iar f1,f2,...,fn, respectiv, numrul lor de
apariii. Dac li ar fi lungimea irului ce codific simbolul ci, atunci lungimea total a reprezentrii ar fi:
n
L = li fi
i =1
Scopul nostru este de a construi un cod prefix care s minimizeze aceast expresie. Pentru aceasta,
construim un arbore binar complet n manier bottom-up astfel :
- Iniial, considerm o partiie a mulimii C={ {c1,f1},{c2,f2}, ..., {cn,fn}}, reprezentat printr-o
pdure de arbori formai dintr-un singur nod.
- Pentru a obine arborele final, se execut n-1 operaii de unificare.
Unificarea a doi arbori A1 i A2 const n obinerea unui arbore A, al crui subarbore stng este A1,
subarbore drept A2, iar frecvena rdcinii lui A este suma frecvenelor rdcinilor celor doi arbori. La
fiecare pas unificm 2 arbori ale cror rdcini au frecvenele cele mai mici.

Fazele de compresie i decompresie trec prin aceleai etape ca n cazul algoritmului Shannon-Fano.

Construcia arborelui pleac de la frunze spre rdcin  codurile simbolurilor sunt construite de la bitul
cel mai puin semnificativ la bitul cel mai semnificativ.

Pas 1: Se parcurge secvenial D i se construiete A0 => N(s) pentru fiecare s A0

Pas 2: Rearanjarea simbolurilor alfabetului: A0 = {s1, s2, .......sN} cu N(s1) >= N(s2) >= ... >= N(sN)
Se renoteaz i reindexeaz elementele alfabetului astfel:

8
Laborator compresie
Simbolurile tN, tN+1, ......., t2N-1 sunt utilizai pentru etichetarea frunzelor arborelui binar, iar alfabetul A0
devine primul alfabet curent al algoritmului i va fi renotat prin A0,N. Fiecare alfabet curent al
algoritmului se va nota prin A0,(N-k), k=0 .... N-1
k=0  frunzele arborelui sunt etichetate cu simbolurile primului alfabet curent
Pas 3: Construcia arborelui binar se realizeaz simultan cu formarea noului alfabet curent.
Noul alfabet curent, A0,(N-k-1) cu k=0 ... N-2, se construiete din vechiul alfabet A0,(N-k), aplicndu-se
urmtoarea regul:

se elimina 2 simboluri cu cele mai mici contoare din vechiul alfabet curent, nlocuindu-le cu un
simbol virtual, notat prin i care are contorul egal cu suma contoarelor celor dou simboluri.
Dac exist mai mult de dou simboluri slabe avnd acelai contor, se aleg ultimele dou din
alfabet  cardinalul noului alfabet scade cu o unitate fa de cardinalul alfabetului precedent.

Simbolul virtual eticheteaz un nod intermediar al arborelui, avnd ca descendeni cele dou
noduri etichetate de simboluri eliminate.
Fiecare nod intermediar din arbore are cte 2 descendeni, contorul fiului din stnga fiind cel puin
egal cu cel al fiului din dreapta.

Pas 4: Se repet pasul 3 de N-1 ori pentru fiecare alfabet curent A0,(N-k) pn cnd se eticheteaz i
rdcina arborelui (t1).

Pas 5: Se reindexeaz nodurile arborelui astfel nct fiii oricrui nod s fie etichetai cu indici consecutive,
de la stnga la dreapta, ncepnd de la rdcin.

3.2 Aplicaie folosind codul Hamming


S presupunem c avem un fiier de 100.000 de caractere din alfabetul {a, b, c, d, e, f}, pe care
dorim s-l memorm ct mai compact. Dac am folosi un cod de lungime fix, pentru cele 6 caractere, ar
fi necesari cte 3 bii. De exemplu, pentru codul:

a b c d e f
cod fix 000 001 010 011 100 101

ar fi necesari n total 300.000 bii.

S presupunem acum c frecvenele cu care apar n text cele 6 caractere sunt:

a b c d e f
Frecven 45 13 12 16 9 5

Considernd urmtorul cod de lungime variabil :

a b c d e f
cod variabil 0 101 100 111 1101 1100
9
Laborator compresie

ar fi necesari doar 224.000 bii (deci o reducere a spaiului de memorie cu aproximativ 25%).
Problema se reduce deci la a asocia fiecrui caracter un cod binar, n funcie de frecven, astfel
nct s fie posibil decodificarea fiierului comprimat, fr ambiguiti. De exemplu, dac am fi codificat
a cu 1001 i b cu 100101, cnd citim n fiierul comprimat secvena 1001 nu putem decide dac este
vorba de caracterul a sau de o parte a codului caracterului b.
Ideea de a folosi separatori ntre codurile caracterelor pentru a nu crea ambiguiti ar conduce la
mrirea dimensiunii codificrii.
Pentru a evita ambiguitile este necesar ca nici un cod de caracter s nu fie prefix al unui cod
asociat al unui caracter (un astfel de cod se numete cod prefix).

Arborele Huffman asociat caracterelor {a, b, c, d, e, f} cu frecvenele {45,13,12,16,9,5} se


construiete pornind de la cele cinci noduri din figura 1:

Figura 1.
Pas 1: Unificm arborii corespunztori lui e i f, deoarece au frecvenele cele mai mici:

Figura 2.
Pas 2: Unificm arborii corespunztori lui b i c:

Figura 3.
Pas 3: Unificm arborele corespunztor lui d i arborele obinut la primul pas, cu rdcina ce are
frecvena 14:

Figura 4.
Pas 4: Unificm arborii ce au frecvenele 25 i 30.

Figura 5.

10
Laborator compresie
Pas 5: Unificnd ultimii doi arbori, se obine arborele Huffman asociat acestui set de caractere cu
frecvenele specificate iniial.

Figura 6.
Nodurile terminale vor conine un caracter i frecvena corespunztoare caracterului; nodurile
interioare conin suma frecvenelor caracterelor corespunztoare nodurilor terminale din subarbori.

Arborele Huffman obinut va permite asocierea unei codificri binare fiecrui caracter.
Caracterele fiind frunze n arborele obinut, se va asocia pentru fiecare deplasare la stnga pe drumul de la
rdcin la nodul terminal corespunztor caracterului un 0, iar pentru fiecare deplasare la dreapta un 1.

Obinem codurile :
a b c d e f
cod 0 100 101 110 1110 1111

Observaii
- caracterele care apar cel mai frecvent sunt mai aproape de rdcin i astfel lungimea codificrii
va avea un numr mai mic de bii.
- la fiecare pas am selectat cele mai mici dou frecvene, pentru a unifica arborii corespunztori.
Pentru extragerea eficient a minimului vom folosi un minheap. Astfel timpul de execuie pentru
operaiile de extragere minim, inserare i tergere va fi, n cazul cel mai defavorabil, de O(log n).

Analiza complexitii
Iniializarea heapului este liniar. Pasul 2 se repet de n-1 ori i presupune dou operaii de
extragere a minimului dintr-un heap i de inserare a unui element n heap, care au timpul de execuie de
O(log n). Deci complexitatea algoritmului de construcie a arborelui Huffman este de O(n log n).

Corectitudinea algoritmului
Trebuie s demonstrm c algoritmul lui Huffman produce un cod prefix optimal.
Lema 1.
Fie x, y C, dou caractere care au frecvena cea mai mic. Atunci exist un cod prefix optimal
n care x i y au codificri de aceeai lungime i care difer doar prin ultimul bit.

Demonstraie:
Fie T arborele binar asociat unui cod prefix optimal oarecare i fie a, b dou noduri de pe nivelul maxim,
care sunt fiii aceluiai nod. Putem presupune fr a restrnge generalitatea c f[a] f[b] i f[x] f[y].
Cum x i y au cele mai mici frecvene rezult c f[x] f[a] i f[y] f[b]. Transformm arborele T n T',
schimbnd pe a cu x :

11
Laborator compresie

Fig. 7.
Notm cu C(T) costul arborelui T:
C (T ) = f ( c) nivT ( c)
cC
C (T ) C (T ' ) = f ( x ) nivT ( x ) + f ( a ) nivT ( a) f ( x ) nivT ' ( x ) f ( a ) nivT ' ( a )
nivT '( x )= nivT ( a )
{
C (T ) C (T ' ) = ( f ( a ) f ( x )) ( nivT ( a ) nivT ( x )) 0, pentru c nivT '( a ) = nivT ( x )

n mod analog, construim arborele T, schimbnd pe x cu y. Obinem:


C (T ' ) C (T ' ' ) = ( f ( b) f ( y )) ( nivT ( b ) nivT ( y )) 0.
Deci C(T) C(T''), dar cum T era optimal deducem c Teste arbore optimal i n plus x i y sunt noduri
terminale situate pe nivelul maxim, fii ai aceluiai nod.

Observaie
Din lem deducem c pentru construcia arborelui optimal putem ncepe prin a selecta dup o
strategie Greedy caracterele cu cele mai mici frecvene.

Lema 2.
Fie T un arbore binar complet corespunztor unui cod prefix optimal pentru alfabetul C. Dac x i
y sunt dou noduri, fii ai aceluiai nod z n T, atunci arborele T' obinut prin eliminarea nodurilor x i y
este arborele binar complet asociat unui cod prefix optimal pentru alfabetul
C' = (C-{x,y}) { z}, f[z] fiind f[x]+f[y].

C (T ) = f ( c) nivT ( c) = C (T ' ) + ( f ( x ) + f ( y ))
cC

Dac presupunem prin reducere la absurd c arborele T nu este optimal pentru alfabetul C = (C-
{x,y}) {z} T, ale crui frunze sunt caractere din C, astfel nct C(T) < C(T).
Cum z este nod terminal n T, putem construi un arbore T1 pentru alfabetul C, atrnnd pe x [i y
ca fii ai lui z.
C(T1) = C(T)+f(x)+f(y) < C(T), ceea ce contrazice ipoteza c T este arbore optimal pentru C. Deci, T
este un arbore optimal pentru C.

Corectitudinea algoritmului lui Huffman este o consecin imediat a celor dou leme.

Observaie
Metoda de compresie bazat pe arbori Huffman statici are o serie de dezavantaje:
1. Fiierul de compactat trebuie parcurs de dou ori: o dat pentru a calcula numrul de apariii ale
caracterelor n text, a doua oar pentru a comprima efectiv fiierul. Deci metoda nu poate fi folosit
pentru transmisii de date pentru care nu este posibil reluarea.
2. Pentru o dezarhivare ulterioar a fiierului, aa cum este i firesc, este necesar memorarea arborelui
Huffman utilizat pentru comprimare, ceea ce conduce la mrirea dimensiunii codului generat.
3. Arborele Huffman generat este static, metoda nefiind capabil s se adapteze la variaii locale ale
frecvenelor caracterelor.
Aceste dezavantaje au fost n mare parte eliminate n metodele care folosesc arbori Huffman
dinamici, ideea fiind ca la fiecare nou codificare, arborele Huffman s se reorganizeze astfel nct
caracterul respectiv s aib eventual un cod mai scurt.

12
Laborator compresie

4. Desfurarea lucrrii
1. exemple cu shannon fano
2. exemple cu shannon fano
3. exemple cu shannon fano
4. Construii arborele Huffman corespunztor alfabetului C={a,b,c,d,e,f,g,h} i frecvenelor:

a b c d e f g h
Frecvena 5 10 7 5 8 15 40 10

Construii codul Huffman i evaluai necesarul de memorie pentru un fiier cu 100000 de


caractere, comparativ cu necesarul de memorie pentru un cod de lungime fix.

5. Care este codul Huffman pentru alfabetul, C={a,b,c,d,e,f,g,h,i} i frecvenele:

a b c d e f g h i
Frecvena 1 1 2 3 5 8 13 21 34

Putei generaliza rspunsul pentru cazul n care frecvenele sunt primele n numere din irul
Fibonacci?

6. Dac presupunem c oricare dou caractere din alfabet au frecvene distincte, atunci arborele
Huffman este unic?

13

S-ar putea să vă placă și