Sunteți pe pagina 1din 13

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#21/13

A.Obiective
Implementarea Algoritmului de compresie ShannonFano i testarea performanei acestuia, prin comparaiecucelealeprogramelordeuzgeneralWinZIPiWinRAR.

B.Suportteoretic
IdeeadebazaminimizriiredundaneiprintehnicaShannonFanoesteaceeaaconstrucieiunuiarbore binar asociat setului de date D , care va permite recodificarea simbolilor. Acesta se construiete parcurgnd paiiAlgoritmului2.1. Algoritmul2.1.Construciaalfabetuluideordin0iaarboreluibinarpentrucompresiaShannonFano. 1. Separcurgesetuldedate D nmodsecvenial,citindfiecaresimbolnparte.Odatcuaceast operaie: seconstruietealfabetuldeordin0( A 0 ),formatnumaidinsimbolidistinci; secontorizeaznumrulapariiilorfiecruisimbol s A 0 ,asociinduiuncontor N ( s ) N . 2. n mod normal, ar trebui evaluat frecvena de apariie a fiecrui simbol ca raportul dintre valoareacontoruluiivolumulsetuluidedate:
( s) =

N (s)
#D

unde semnul # indic aici operaia de luare a cardinalului mulimii. Deoarece volumul setuluidedateesteconstant(iegalcusumatuturorcontoarelor),adic:
#D =
sA 0

N ( s) ,

sepoaterenunalamprire,lundnconsiderarenumaivalorilecontoarelor. CD#22/13

3. Se aranjeaz simbolii alfabetului A 0 n ordinea descresctoare a valorilor contoarelor; n caz deegalitate,eiseordoneazlexicografic.Aadar, A 0 = {..., s, t...} ,cu N ( s) N (t ) . 4. Se divizeaz alfabetul ordonat A 0 n dou subalfabete situate n partea stng (Left) A 0 L , respectivparteadreapt(Right) A 0 R .Seurmretesatisfacereaadoucondiiidebaz: ordineasimbolilortrebuieconservatincadrulsubalfabetelor; ponderile subalfabetelor (adic sumele contoarelor simbolilor constitueni) trebuie s fie ctmaiapropiate. Astfel,celedousubalfabetenuaunmodnecesaracelainumrdesimboli.Pentruarezuma, subalfabeleteverificrealiile:
0 0L 0R A = A A ; A 0 L A 0 R = ; 0L N ( s) N ( A 0 R ) = N ( s). N ( A ) = s A sA
0L 0R

Not

n construcia subalfabetelor A 0 L i A 0 R , se va pleca simultan de la cele dou capete ale alfabetului A 0 . Se adaug simboli n A 0 L sau n A 0 R , mergnd spre centru i comparnd mereu ponderile pariale ale acestora,pnseparcurgtoateelementelelui A 0 .Acestmecanismesteilustratmaijos:

A 0 = {s1 , s2 ,..., sk ,..., sN 1 , sN }


A 0L

A 0R

De exemplu, iniial, A 0 L l conine doar pe s1 i A 0 R doar pe sN . Evident, N ( s1 ) N ( sN ) . Se adaug apoi


sN 1 la A 0 R . Dac N ( s1 ) N ( sN ) + N ( sN 1 ) , atunci se adaugi sN 2 la A 0 R ; altfel, se adaug s2 la A 0 L .

Se compar din nou ponderile parialei se decide ce simbol va fi adugat unuia din cele dou subalfabete, pncndseepuizeaztoisimboliilui A 0 .

CD#23/13

5. Arborele binar este iniializat astfel: A 0 reprezint nodul rdcin, A 0 L reprezint ramura stng mpachetat a rdcinii, iar A 0 R reprezint ramura dreapt mpachetat a rdcinii. Arculstngvaprimicodul0,iararculdreptcodul1,canfigurademaijos:
A0
0
1

A 0L

A 0R

Termenul de mpachetat este sugerat de faptul c ramura respectiv conine germenii altor ramuri care se vor nate n aceeai manier, pn cnd se va ajunge la nodurile terminale ale arborelui,numiteifrunze. 6. Sereitereazpaii4i5pentrufiecarenodterminalalarborelui(subalfabet),careconinemai mult de un simbol. De exemplu, dac A 0 L i A 0 R conin cel puin cte 2 simboli fiecare, atunci structuraarboreluilapasulurmtorvaficeadinfiguraurmtoare:
A0
0
1

A 0L
0
1

A 0R
0
1

Procesul de construcie a arborelui se oprete cnd toate subalfabelete frunzelor se reduc la cte un singur simbol. Noul cod asociat unui simbol se obine parcurgnd arborele de la rdcinpnlafrunzaocupatdeacelsimboliconcatenndvalorilearcelorprincaretrece. CD#24/13

A 0 LL

A 0 LR

A 0 RL

A 0 RR

Aa cum se poate constata cu uurin din acest algoritm, condiia esenial n construcia arborelui binar este cea a echilibrrii ponderilor subalfabetelor (exprimat la pasul 4). Aceasta determin lungimea noilorcoduri,nfunciedecontoareleasociate.Dacunsimbolestefoartefrecventnsetuldedate,elvaface parte dintrun subalfabet cu un numr mic de elemente, a crui defalcare pe subalfabete se va ncheia rapid, n apropierea rdcinii. Codul corespondent va fi, deci, scurt. Simbolii rari vor avea ponderi mici i vor face parte din subalfabete cu un numr mare de elemente, fapt care le trimite departe de rdcin n arborele binar.nconsecin,codullorvaaveaolungimemaimare. Algoritmul2.1 este inclus n cele dou proceduri de compresie, respectiv decompresie prezentate n Algoritmii2.2i2.3. Algoritmul2.2.CompresiaShannonFano. 1. Seconstruietearborelebinarasociatsetuluidedate D cuajutorulAlgoritmului2.1. 2. Seconstruietesetuldedatecomprimatformatdin: a) Alfabetul A 0 = {s1 ,..., sN } (n ordinea descresctoare a valorilor contoarelor). Fiecare simbolestereprezentatdecodulsuoriginal(pe8bii). b) Numruldesimboliaialfabetului A 0 ,notatcu N (camaisus),maipuinounitate(adic N 1). c) Numrul N 1estereprezentattotpe8bii(deoarece N < 256 ). d) Tabela contoarelor asociate simbolilor alfabetului: { N ( sn )}n1, N . Fiecare contor va fi reprezentatpemaxim32debii(4octei). e) irul noilor coduri, n ordinea n care se succed simbolii n setul original de date. Fiecare noucodesteproduscuajutorularboreluibinar,aacumsamenionatmaisus. CD#25/13

Se constat c, potrivit acestui algoritm, datele transmise pe fluxul de ieire sunt de dou tipuri: utile (irulnoilorcoduri)iauxiliare(celelaltedatereferitoarelaalfabeticontoare).Dacsetuloriginaldedatenu este suficient de mare, informaia auxiliar degradeaz sensibil rata de compresie, putnd fora chiar apariia fenomenului de expandare a datelor. Acest algoritm de compresie este eficient numai dac lungimea informaiei auxiliare este sensibil inferioar lungimii informaiei utile sau a setului de date original. Informaia auxiliar adugat aici este, ns, strict necesar n faza de decompresie, chiar dac, din cauza ei, rata de compresievafiinferioarceleiidealecalculatefolosindalfabetuldeordin0. Aldoileaalgoritmdescriemanieradedecompresie. Algoritmul2.3.DecompresiaShannonFano. 1. Seciteteinformaiaauxiliarntroordineprestabilit(deexemplu: N 1, A 0 , { N ( sn )}n1, N ). 2. Se construiete arborele binar plecnd de la informaia auxiliar. n acest scop, se apeleaz la Algoritmul2.1(identiccuceldinfazadecompresie). 3. Se decripteaz irul noilor coduri (setul de date comprimat) citind informaia util bit cu bit (adic nu la nivel de octet!). Simultan, se parcurge arborele binar avansnd de la rdcin ctre frunze, pe un drum indicat de valorile biilor citii. n acest fel, dendat ce sa atins o frunz, este emis codul original (pe 8 bii) al simbolului asociat acesteia i se rencepe decriptareadinrdcin.Procesuldedecriptarecontinupnlaepuizareabiilordepefluxul deintrare. Este important de observat c algoritmul de decompresie nu necesit cunoaterea n avans a lungimilor coduriloremisenfazadecompresie,tocmaidatoritstructuriiarborescenteamodeluluistatistic.Acestaeste unmareavantajalmetodei,deoarecenoilecoduripotfidepusepefluxuldeieirenfazadecompresie,fra mai fi separate ntre ele, deci fr a aduga alte coduri auxiliare. Decriptarea este exact, datorit faptului c modelularborescentesteconstruitcuacelaialgoritmnambelefaze:compresieidecompresie. CD#26/13

Exemplu
SedoretecomprimareadecomprimareaurmtoruluitextprinMetodaShannonFano:

D : IT0IS0BETTER0LATER0THAN0NEVER.
Simbolul 0 este utilizat pentru a indica spaiul liber dintre cuvinte (cunoscut sub denumirea englezeasc deblanksau(white)space).nfigurilecareurmeaz,elvafiidentificatdeasemeneaprin. nainte de a construi arborele binar necesar recodificrii simbolilor, trebuie constituit alfabetul asociat setuluidedate D :

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
Rezultcpondereaacestuialfabeteste: N ( A 0 ) = 30 . Arborele binar se construiete, n acest caz, dup 5 iteraii de divizare n subalfabete. Vom ilustra aceste divizrimpreuncuarboriiparialiafereni. Primaiteraie:

A0
0
1

A0L
N (s)

0 5

E T 5 5

A0R
N (s)

R A 3 2

I 2

N 2

. 1

B H L S V 1 1 1 1 1

A 0L

A 0R

)
CD#27/13

Se constat c, ntmpltor, ponderile celor dou subalfabete coincid n acest caz, fiind egale cu 15. Simbolii subalfabetului A 0 L , care au toi ponderi egale, au fost aranjai n ordine lexicografic. La feli simboliicuponderiegaleaisubalfabetului A 0 R . Adouaiteraie:

A0
0

A 0L
0
1 0

A 0R
1

A 0 LR
A 0 LR
N (s)
E T 5 5

A 0 RL

A 0 RR
N (s)

A 0 RR
N 2 .

B 1 H 1 L 1 S 1 V 1

A 0 RL
N (s)

R 3

A 2

I 2

Simbolul 0, care este unul din cei mai frecveni ai alfabetului, ai atins o frunz, fiind recodificat pe numai2bii:00(nlocdecoduloriginalpe8bii,careeste00100000,adic0x20=32).

CD#28/13

Atreiaiteraie:
A0
0
1

A 0 RRR
N (s)

H 1

L 1

S 1

V 1

A 0L
0 0

A 0R
1
0 1

A 0 RRL
N (s)
1

N 2

. 1

B 1

A 0 RLR
N (s)

A 2

I 2

A 0 LR
1 T

A 0 RL
0
1

A 0 RR
0

R A 0 RLR A 0 RRL A 0 RRR

Apatraiteraie:

A0
0

A 0 RRLR

. 1

B 1

A 0L
0 0

A 0R
1
0

N (s)

A 0 LR
1 0

A 0 RL
1 T R

A 0 RR
0

A 0 RRRL

S 1

V 1

A 0 RRRR
N (s)

H 1

L 1

N (s)

A 0 RLR
0
A
1 0

A 0 RRL
1 0

A 0 RRR
1

N A 0 RRLR A 0 RRRL A 0 RRRR


CD#29/13

Numaisimboliifoarteraridintextulanalizataumairmasderecodificat.Cutoateacestea,codurilelor voraveaolungimede5bii,carermneinferioarceleioriginalede8bii. n urma ultimei iteraii (a cincea) se obine Figura2.1. Aceasta ilustreaz structura arborescent a unui model statistic (n spe, alfabet de ordin 0), construit cu ajutorul Algoritmului ShannonFano. Ea evideniazfoartebineprincipiilerecodificriidatelor,specificateanterior.Noilecodurinudepesc5bii nlungime,faptpecaresesprijinminimizarearedundanei,adicmaximizarearateidecompresie.
A0
0
1

A 0L
0
0 E 1 0

A 0R
1

A 0 LR
1 T
0

A 0 RL
1 R 0 A

A 0 RR
0

A 0 RLR
1 I 0

A 0 RRL
1
0

A 0 RRR
1

N A 0 RRLR A 0 RRRL A 0 RRRR


0
. 1

H L

S V

Figura2.1.UnarborebinardetipSHANNONFANO(alfabetstaticdeordinul0). Dup construcia arborelui binar statistic n manier static (adic dup ce ntregul set de date a fost parcurs sau citit de pe fluxul de intrare), informaia nscris pe fluxul de ieire va avea configuraia din Tabelele2.1i2.2.nTabelul2.1,esteenumeratinformaiaauxiliar. CD#210/13

Tabelul2.1.InformaieauxiliardetipShannonFano.
Cod 13 32 Info N Nr. bii 5 69 5 84 5 82 3 65 2 72 2 78 2 46 1 66 1 72 76 1 83 1 86 1

0 8

N
32

E 8

N
32

T 8

N
32

R 8

N
32

A 8

N
32

I 8

N
32

N 8

N
32

. 8

N
32

B 8

N
32

H 8

L 8

N
32

S 8

N
32

V 8

N
32

Codurilenumericeaufostexprimatenbaza10,pentruuurinacitiriitabelului.nrealitate,acestecoduri sunt binare (i au cte 8 bii lungime, pentru simbolii alfabetului). De asemenea, gruparea n perechi a simbolilor cu contoarele corespunztoare nu este obligatorie. Aranjarea informaiei auxiliare poate fi realizatinaltmanier,darmoduldearanjaretrebuiecunoscutiladecompresiadatelor. Urmeazinformaiautil(noilecoduridetipShannonFano),canTabelul2.2. Tabelul2.2.InformaieutildetipShannonFano.
Cod Info Nr.bii Cod Info Nr.bii 1011 I 4 011 T 3 011 T 3 010 E 3 00 0 2 100 R 3 1011 I 4 00 0 2 11110 S 5 011 T 3 00 0 2 11100 H 5 11011 B 5 1010 A 4 010 E 3 1100 N 4 011 T 3 00 0 2 011 T 3 1100 N 4 010 E 3 010 E 3 100 R 3 11111 V 5 00 0 2 010 E 3 11101 L 5 100 R 3 1010 A 4 11010 . 5

CD#211/13

Deaceastdat,noilecoduriaufostredatenreprezentarebinar,corespunztoarearboreluistatisticdin Figura2.1.Attcodurileinformaieiutilecticelealeinformaieiauxiliaresesuccedfrseparatorintre ele, aa cum ar sugera tabelele anterioare. ntre informaia auxiliar i cea util ar putea aprea un separator sub forma unui simbol virtual, n absena numrului de simboli ai alfabetului ( N ). n acest caz, ns, separatorul de informaie trebuie s aib un cod superior lui 255 (eventual, poate avea valoarea 256),ceeaceatragedupsinereprezentarealuipe16bii(nlocde8,ctocup N ). n faza de decompresie, dup citirea informaiei auxiliare (5 octei consecutivi indic o pereche simbol contor)i dup construcia arborelui binar asociat, se trece la citirea secvenial, bit cu bit, a informaiei utile. Fiecare simbol al setului de date este decriptat folosind arborele binar. De exemplu, revenind la Figura2.1 i la irul de coduri binare utile prezentate n Tabelul2.2, primul bit este 1, ceea ce indic deplasarea din nodul rdcin A 0 n nodul A 0 R . Urmeaz bitul 0, ceea ce ne aduce n nodul A 0 RL . Un nou bit1ne aruncnnodul A 0 RLR incun bit1ne permiteatingereafrunzei ocupatedesimbolulI,careva fi nscris pe fluxul de ieire. Atingerea unei frunze reiniiaz cutarea din rdcina arborelui, astfel c un noubitcitit(aici0),starteazonoudeplasaresprefrunze. Subliniemncodat(aacumoilustreaziacestexemplu),cnuestenecesarcunoatereadimensiunilor noilor coduri de compresie, care, n general variaz de la un simbol la altul. Acesta constituie un mare avantaj almetodei.

CD#212/13

C.Sarcinidelucru
Tema1(ImplementareaalgoritmilorShannonFano) a. Scrieicele3funciicorespunztoareAlgoritmilor2.1,2.2i2.3. b. Verificai corectitudinea lor cu ajutorul unui program de test aplicat exemplului din seciunea precedent(textultrebuiesfiereconstituitperfect). c. Evaluai factorul de compresie realizat n acest exemplu (innd cont i de informaia auxiliar). Este capabilmetodasrealizezecompresia? Tema2(TestareaalgoritmilorShannonFano) a. Scriei un program care realizeaz compresia i decompresia celor 12 fiiere din corpusul de date descrisnseciuneaprecedent,cuajutorulrutinelordelatemaprecedent. b. Calculai norma diferenei dintre setul iniial de date i cel decomprimat. Pentru fiecare set de date, indicaifactoruldecompresieaferent(incluzndinformaiaauxiliar)ievaluaidurateledecompresie, respectiv decompresie (cu ajutorul funciilor menionate n lucrarea precedent). Comentai rezultatul obinut,cureferirelacapacitateadecompresieametodeipentrudiferitetipuridefiiere. c. Comparai factorii de compresie de la punctul precedent cu cei obinui prin utilizarea celor dou programe de uz general WinZIPi WinRAR. (Utilizai funcia fread pentru a evalua exact numrul de biiaiarhivelorprodusedeacesteutilitare.)Comentairezultateleobinute,cu referirelacompromisul dintrecomplexitateaalgoritmilordecompresieiperformaneleacestora.

CD#213/13