Sunteți pe pagina 1din 18

LaboratorPS

Algoritmidecompresieadatelor

Lucrarea1:IntroducerenCompresiaDatelor
Lucrarea2:AlgoritmulShannonFano
Lucrarea3:AlgoritmulHuffmanstatic
Lucrarea4:AlgoritmulHuffmandinamic

Prof.DanTEFNOIU<danny@indinf.pub.ro>
Asist.AlexandruDumitracu<dumalex@ecosys.pub.ro>
Prep.IonuCHIOPU<ionutz_schiopu_24@yahoo.com>
CD#31/18

A.Obiective
Implementarea Algoritmului de compresie static al lui Huffman. Testarea performanei acestuia, prin
comparaiecucelealeAlgoritmuluiShannonFanoialeprogramelordeuzgeneralWinZIPiWinRAR.

B.Suportteoretic
Metoda propus de D.A.Huffman n 1952 pstreaz o mare parte dintre caracteristicile Metodei
ShannonFano. Mai precis, fazele de compresie i decompresie trec prin aceleai etape. Diferena apare n
maniera de construcie a arborelui binar, fapt care aduce o uoar mbuntire a performanelor de
compresie.Continumsopermcualfabetulstaticdeordin0.
nMetodaShannonFano,arboreleafostconstruitplecnddelardcin(alfabetul A 0 )sprefrunzele
ocupatedesimboli.Codulasociatunuisimbolafostconstruitdinsprebitulcelmaisemnificativsprebitulmai
puinsemnificativ.
nMetodaHuffman,construciaarboreluipleacdelafrunzesprerdcin.Aceastaimplicoalctuirea
codurilornsensinvers,delabitulcelmaipuinsemnificativ,labitulcelmaisemnificativ.
AlgoritmuldeconstrucieaarboreluibinardetipHuffmanesteprezentatncontinuare.
Algoritmul3.1.ConstruciaarboreluibinarpentrucompresiaHuffman.
1. Separcurgesetulde N N datenmodsecvenial(simbolcusimbol)iseconstruietealfabetul
de ordin 0 ( A 0 ), contoriznd numrul de apariii ale fiecrui simbol ntlnit. Astfel, fiecrui
simbol s A 0 iseasociazuncontor N ( s ) N .
CD#32/18

2. Serearanjeazsimboliialfabetului A 0 nordineadescresctoareanumerelordeapariii:
A 0 = {s1 , s2 ,..., sN }
.

(
)
(
)
...
(
)
N
s

N
s

N
s
N
1
2

n cazul n care simboli diferii au numre egale de apariii, ei vor fi ordonai lexicografic.
Ordonareaalfabetuluinueste,ns,strictnecesar.Totui,eaesterecomandat,pentruaaranja
frunzele arborelui binar ntro manier natural i, mai ales, pentru a permite o indexare mai
uoaranodurilorintermediarealeacestuia.Casseneleagmaibinemanieradeconstrucie
aarboreluibinar,elementelealfabetuluivorfirenotate(ireindexate)astfel:
A 0 = {tN +k 1 = sk }k1, N .

Simbolii tN , tN +1 ,, t2 N 1 vorfiutilizaipentruaetichetafrunzelearboreluibinar,iaralfabetul A 0
devine primul alfabet curent al algoritmului i va fi renotat prin A 0,N . Alfabetul curent al
algoritmuluivafinotatprin A 0,( N k ) ,undeindicele k variazngama 0, N 1 .Aadar,iniial, k = 0
ifrunzelearboreluibinarsuntetichetatecusimboliiprimuluialfabetcurent.
3. Construcia arborelui binar se realizeaz simultan cu construcia noului alfabet curent A 0,( N k 1)
(unde k 0, N 2 ). Pentru al construi pe acesta din urm din vechiul alfabet A 0,( N k ) , se aplic
urmtoarearegul:seidentific2dintresimboliiceimaislabi(adicavndcontoarelecelemai
mici)dinvechiulalfabetiseelimin,nlocuindulecuunsimbolvirtual(notatadhocprin),
care are contorul egal cu suma contoarelor acestora; dac exist mai mult de 2 simboli slabi
avndacelaicontor,sevoralegeultimii2ntlniinalfabet.Numaiestenecesarreordonarea
noului alfabet curent, astfel obinut. n plus, cardinalul su scade cu o unitate fa de cel al
alfabetuluicurentprecedent.Aadar:
CD#33/18

A 0,( N k 1) = A 0,( N k ) \ {t p , tq } {tN k 1 }

= '' (simbol virtual)


tN k 1

N (tN k 1 ) = N (t p ) + N (tq )
#A 0,( N k 1) = #A 0,( N k ) 1 = N k 1.

Simbolul virtual astfel produs va eticheta un nod intermediar al arborelui binar, avnd ca
descendeni cele dou noduri etichetate de simbolii eliminai. Cei 2 simboli eliminai ( t p i tq )
eticheteaz:
doufrunzealarborelui,dacaparinalfabetului A 0,N ;
unnodintermediaralarboreluiiofrunz,dacdoarunuldintreeiaparinealfabetului A 0,N ;
dounoduriintermediarealearborelui,dacniciunuldintreeinuaparinealfabetului A 0,N .
n acest fel, fiecare nod intermediar al arborelui posed cte doi descendeni direci (fii), iar
contorulfiuluidinstngaestecelpuinegalcucelalfiuluidindreapta.Arceledelegturvorfi
etichetate cu 0 (pentru fiul din stnga) i cu 1 (pentru fiul din dreapta). Aceste etichete
reprezint,defapt,valorilebiilornoilorcoduriasociatesimbolilor.
4. Serepetpasulanteriorpentrufiecarealfabetcurent A 0,( N k 1) (unde k 0, N 2 ),adicde N 1
ori,pncndarboreluibinarisestabileterdcina( t1 ).
5. Se reindexeaz nodurile arborelui astfel nct fiii oricrui nod care posed descendeni s fie
etichetai cu indici consecutivi (de la stnga la dreapta). (Reindexarea nodurilor nu este o
operaieabsolutnecesar,daresteutilnfazadedecompresie.)

CD#34/18

Regula de baz pentru structura arborelui binar construit cu ajutorul acestui algoritm este cea a
adugrii de noi noduri intermediare prin nsumarea ponderilor simbolilor celor mai slabi, avansnd de la
frunzesprerdcin.Deexemplu,narborelefinal(cunodurireindexate),nodulnotatcu tn are2fii: tm i tm+1 ,
canimagineaurmtoare:
tn ( N (tn )) = tn ( N (tm )) + tn ( N (tm +1 ))
0

tm ( N (tm ))

1
tm +1 ( N (tm +1 ))

Aacumseconstat,fiecarenodalarboreluibinarestecaracterizatdedouinformaii:oetichet(detip
tn )(carednumelenoduluiilindexeaz)iopondere(contorul N ( tn ) ).Nodurilesuntindexatenordinea
descresctoareaponderilorlor,ncepnddelardcinsprefrunze,datoritultimuluipasalalgoritmului.

Rdcina( t1 )deinepondereamaxim,deoareceaceastaesteegalcusumatuturorcontoarelor(adic

volumul setului de date). Arborele are, n final, 2 N 1 noduri i construcia sa se efectueaz n N 1 pai.
Fiecare nod va avea asociat un cod unic, obinut prin concatenarea valorilor (0 sau 1 ale) arcelor ce unesc
rdcinacuacelnod.

U Exemplu
Serevinelaexempluldincadrulseciuniiprecedente(MetodaShannonFano):
D : IT0IS0BETTER0LATER0THAN0NEVER.

Pentruacesta,sevaconstruimaintiarborelebinardetipHuffman.Apoisevaenumerairuldebiiai
datelorcomprimatei,nfinal,sevaindicamanieradedecompresie.
CD#35/18

Alfabetulasociatsetuluidedate D (demaisus)are N = 13 elemente,astfelcarborelefinalvaavea25


de noduri. Alfabetul poate fi scris n manier ordonat ca n tabelul urmtor (cu atribuirea iniial a
etichetelorfrunzelorarboreluibinar):
Nod t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25

A 0,13

0 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
VomparcurgeAlgoritmul3.1,indicndfiecarepasprinvaloareaindicelui k .Vorfi12pai.Pentruprimii10
pai,ilustrmstructuraarboreluiparialiformaalfabetuluicurent(indicndprincaracterealdinesimbolul
virtualnlocuitor).Datoritsimplitiilor,ultimii2paiaufostcompactai,doarstructuraarboreluifinalfiind
reprezentat(cunodurilereindexate).
k = 1:
t13 (5) t14 (5) t15 (5) t16 (3) t17 (2) t18 (2) t19 (2) t20 (1) t21 (1) t22 (1) t23 (1) t24 (1) t25 (1)
H
L
S V
.
E
T
R
B
I
A
N
t12 (2)

t12 (2)
0

S
V
t24 (1) t25 (1)

CD#36/18

Nod

t13

t14

t15

t16

t17

t18

t19

t12

t20

t21 t22

t23

A 0,12

N ( s)

k = 2:
t13 (5) t14 (5) t15 (5) t16 (3) t17 (2) t18 (2) t19 (2) t12 (2) t20 (1) t21 (1) t22 (1) t23 (1)

.
H
E
T
R
B
A
I
L
N
t11 (2)
t11 (2)
0

t12 (2)
0

S
V
H
L
t22 (1) t23 (1) t24 (1) t25 (1)
Nod

t13

t14

t15

t16

t17

t18

t19

t11 t12

t20

t21

A 0,11

N (s)

CD#37/18

k = 3:
t13 (5) t14 (5) t15 (5) t16 (3) t17 (2) t18 (2) t19 (2) t11 (2) t12 (2) t20 (1) t21 (1)

E
T
R

A
I
.
N
B
t10 (2)

t10 (2)
0

t11 (2)

.
B
t20 (1) t21 (1)

t12 (2)
0

S
V
H
L
t
(1)
t
t22 (1) t23 (1) 24
25 (1)

Nod

t13

t14

t15

t16

t17

t18

t19

t10

t11 t12

A 0,10

N (s)

k = 4:
t13 (5) t14 (5) t15 (5) t16 (3) t17 (2) t18 (2) t19 (2) t10 (2) t11 (2) t12 (2)

E
T
R
A
I
N

t9 (4)

CD#38/18

t9 (4)
1

t10 (2)
0

t12 (2)

t11 (2)

.
B
t20 (1) t21 (1)

S
V
H
L
t
(1)
t
25 (1)
t22 (1) t23 (1) 24

Nod

t13

t14

t15

t9

t16

t17

t18

t19

t10

A 0,9

N ( s)

k = 5:
t13 (5) t14 (5) t15 (5) t9 (4) t16 (3) t17 (2) t18 (2) t19 (2) t10 (2)
R
E
T
A
I

t8 (4)

CD#39/18

t8 (4)

t9 (4)
1

0
N
t19 (2)

t10 (2)
0

t12 (2)

t11 (2)
0

S
V
B
H
L
t
(1)
t
t20 (1) t21 (1) t22 (1) t23 (1) 24
25 (1)
.

Nod

t13

t14

t15

t8

t9

t16

t17

t18

A 0,8

N (s)

k =6:
t13 (5) t14 (5) t15 (5) t8 (4) t9 (4) t16 (3) t17 (2) t18 (2)

E
T
R
A I
t7 (4)

CD#310/18

t7 (4)
0

t8 (4)

t9 (4)
1

A
N
I
t17 (2) t18 (2) t19 (2)

t10 (2)
0

t12 (2)

t11 (2)

S
V
B
H
L
t
(1)
t
t20 (1) t21 (1) t22 (1) t23 (1) 24
25 (1)
.

Nod

t13

t14

t15

t7

t8

t9

t16

A 0,7

N (s)

k = 7:
t13 (5) t14 (5) t15 (5) t7 (4) t8 (4) t9 (4) t16 (3)

E
T
R

t6 (7)

CD#311/18

t6 (7)
0

t7 (4)
0

t8 (4)

R
t16 (3)

t9 (4)

t11 (2)

t10 (2)
0

A
N
I
t17 (2) t18 (2) t19 (2)

t12 (2)
0

S
V
B
H
L
t
(1)
t
t20 (1) t21 (1) t22 (1) t23 (1) 24
25 (1)
.

Nod

t6

t13

t14

t15

t7

t8

A 0,6

N (s)

k = 8:
t6 (7) t13 (5) t14 (5) t15 (5) t7 (4) t8 (4)

E
T

t5 (8)

CD#312/18

t5 (8)
0

t7 (4)
0

t6 (7)

t8 (4)
0

t9 (4)

t11 (2)

t10 (2)

A
N
I
t17 (2) t18 (2) t19 (2)

R
t16 (3)

t12 (2)

S
V
.
B
H
L
t20 (1) t21 (1) t22 (1) t23 (1) t24 (1) t25 (1)
Nod

t5

t6

t13

t14

t15

A 0,5

N ( s)

k =9:
t5 (8) t6 (7) t13 (5) t14 (5) t15 (5)

E
T
t4 (10)

CD#313/18

t5 (8)

t4 (10)
0

E
T t7 (4)
t14 (5) t15 (5)
0
1

t6 (7)

t8 (4)

t9 (4)

A
N
I
t17 (2) t18 (2) t19 (2)

t11 (2)

t10 (2)
0

R
t16 (3)

t12 (2)
0

S
V
.
B
L
H
t20 (1) t21 (1) t22 (1) t23 (1) t24 (1) t25 (1)
Nod

t4

t5

t6

t13

A 0,4

N ( s)

10

k = 10 :
t4 (10) t5 (8) t6 (7) t13 (5)

t3 (12)

CD#314/18

t3 (12)
0
t5 (8)

t4 (10)
0

t6 (7)

E
T t7 (4)
t14 (5) t15 (5)
0
1

t8 (4)
0

A
N
I
t17 (2) t18 (2) t19 (2)

R
t16 (3)

t9 (4)
1

t10 (2)
0

t12 (2)

t11 (2)

S
.
B
L
H
t20 (1) t21 (1) t22 (1) t23 (1) t24 (1)

Nod

t3

t4

t5

A 0,3

12 10

N (s)

t7 (5)

V
t25 (1)

k {11,12} :
t3 (12) t4 (10) t5 (8)

t2 (18)

t2 (18) t3 (12)

t1 (30)

CD#315/18

t1 (30)
0

t3 (12)

t2 (18)

t5 (8)

t4 (10)
0

t6 (7)

t7 (4)
E
T
t14 (5) t15 (5)
0
1

t8 (4)
0

A
N
I
t17 (2) t18 (2) t19 (2)

R
t16 (3)

t9 (4)

t11 (2)

t10 (2)
0

t13 (5)

t12 (2)
0

S
.
B
L
H
t20 (1) t21 (1) t22 (1) t23 (1) t24 (1)

V
t25 (1)

Informaianscrispefluxuldeieire,corespunztoarearboreluibinarconstruitanterior,vaartacan
Tabelele3.1i3.2.
Tabelul3.1.InformaieauxiliarstaticdetipHuffman.
Cod

13 32

82

65

72

78

Info

N 0 N E N T N

Nr.
bii

32

32

32

32

69

32

84

32

46

66

72

76

83

86

N .

32

32

32

32

32

32

CD#316/18


Tabelul3.2.InformaieutilstaticdetipHuffman.
Cod

0101 001

11

0101 10010

11

01111

000

001

001

000

101

11

10001

1100

Info

Nr.bii

Cod

001

11

001

10000

1000

0110

11

0110

000

101

01110

Info

Nr.bii

000 101

10011 000

Practic, volumul de date comprimate nu sa schimbat, n acest exemplu, fa de cel din lucrarea
precedent. Doar noile coduri utile sunt altele. ns, n cazul multor seturi de date (sensibil mai lungi dect
acesta),MetodaHuffmanestemaieficientdectMetodaShannonFano.
idecompresiadatelorsedesfoarcancazulMetodeiShannonFano.Semnalmtotuifaptulc,n
cazul implementrii celor dou metode pe un mijloc automat de calcul, arborele construit prin Metoda
Huffman este mai uor de reprezentat i de construit dect arborele ShannonFano, programul avnd o
complexitateuormairedus.

CD#317/18


C.Sarcinidelucru
 Tema1(ImplementareaalgoritmilorHuffmanstatici)
a. Scriei3rutinecorespunztoareAlgoritmului3.1,imetodelordecompresiedecompresiedinMetoda
Huffmanstatic.
b. Verificai corectitudinea lor cu ajutorul unui program de test aplicat exemplului din subseciunea
precedent(textultrebuiesfiereconstituitperfect).
c. Evaluaifactoruldecompresierealizatnacestexemplu(inndcontideinformaiaauxiliar).Este
capabilmetodasrealizezecompresia?

 Tema2(TestareaalgoritmilorHuffmanstatici)
a. Scriei un program care realizeaz compresia i decompresia celor 12 fiiere din corpusul de date
descrisnLucrarea1,cuajutorulrutinelordelatemaprecedent.
b. Calculainormadifereneidintresetuliniialdedateiceldecomprimat.Pentrufiecaresetdedate,
indicai factorul de compresie aferent (incluznd informaia auxiliar) i evaluai duratele de
compresie, respectiv decompresie. Comentai rezultatul obinut, cu referire la capacitatea de
compresieametodeipentrudiferitetipuridefiiere.
c. Comparai factorii de compresie de la punctul precedent cu cei obinui prin utilizarea Metodei
ShannonFano i a celor dou programe de uz general WinZIP i WinRAR. (Utilizai funcia fread
pentruaevaluaexactnumruldebiiaiarhivelorprodusedeacesteutilitare.)Comentairezultatele
obinute,cureferirelacompromisuldintrecomplexitateaalgoritmilordecompresieiperformanele
acestora.
CD#318/18