ALGORITMI DE COMPRESIE FOLOSIŢI ÎN SISTEMELE MODERNE DE ARHIVARE. CODAREA HUFFMAN

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Criptosisteme cu cheie publică III

MARCAREA REZISTOARELOR

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

Curs 4 Serii de numere reale

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Integrala nedefinită (primitive)

Curs 1 Şiruri de numere reale

Metode de interpolare bazate pe diferenţe divizate

riptografie şi Securitate

Subiecte Clasa a VIII-a

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

5.4. MULTIPLEXOARE A 0 A 1 A 2

Aplicaţii ale principiului I al termodinamicii la gazul ideal

a. 11 % b. 12 % c. 13 % d. 14 %

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Subiecte Clasa a VII-a

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

Laborator 11. Mulţimi Julia. Temă

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

III. Reprezentarea informaţiei în sistemele de calcul

Asupra unei inegalităţi date la barajul OBMJ 2006

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Examen AG. Student:... Grupa:... ianuarie 2011

Examen AG. Student:... Grupa: ianuarie 2016


Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Esalonul Redus pe Linii (ERL). Subspatii.

Să se arate că n este număr par. Dan Nedeianu

Definiţia 1.1 Fiind date mulţimile A (alfabetul sursă) şi B (alfabetul cod), o codificare

Sisteme diferenţiale liniare de ordinul 1

Acesta este capitolul 2 Noţiuni de teoria informaţiei al ediţiei electronică

Seminar 5 Analiza stabilității sistemelor liniare

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

riptografie şi Securitate

Capitolul 14. Asamblari prin pene

prin egalizarea histogramei

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

Curs 2 Şiruri de numere reale

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

Proiectarea filtrelor prin metoda pierderilor de inserţie

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Transformata Laplace

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

CURS XI XII SINTEZĂ. 1 Algebra vectorială a vectorilor liberi

GEOMETRIE PLANĂ TEOREME IMPORTANTE ARII. bh lh 2. abc. abc. formula înălţimii

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

FLUXURI MAXIME ÎN REŢELE DE TRANSPORT. x 4

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

Subiecte Clasa a V-a

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

Profesor Blaga Mirela-Gabriela DREAPTA

Zgomotul se poate suprapune informaţiei utile în două moduri: g(x, y) = f(x, y) n(x, y) (6.2)

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice

2. Circuite logice 2.2. Diagrame Karnaugh. Copyright Paul GASNER 1

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

II. 5. Probleme. 20 c 100 c = 10,52 % Câte grame sodă caustică se găsesc în 300 g soluţie de concentraţie 10%? Rezolvare m g.

Laborator 6. Integrarea ecuaţiilor diferenţiale

Problema a II - a (10 puncte) Diferite circuite electrice

1.3 Baza a unui spaţiu vectorial. Dimensiune

4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice

Functii Breviar teoretic 8 ianuarie ianuarie 2011

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Principiul incluziunii si excluziunii. Generarea şi ordonarea permutărilor. Principiul porumbeilor. Pri

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

VII.2. PROBLEME REZOLVATE

Matrice. Determinanti. Sisteme liniare

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

V O. = v I v stabilizator

Cum folosim cazuri particulare în rezolvarea unor probleme

Capitolul ASAMBLAREA LAGĂRELOR LECŢIA 25

Algoritmi genetici. 1.1 Generalităţi


Capitolul 2 - HIDROCARBURI 2.4.ALCADIENE

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

5.1. Noţiuni introductive

7. RETELE ELECTRICE TRIFAZATE 7.1. RETELE ELECTRICE TRIFAZATE IN REGIM PERMANENT SINUSOIDAL

Reflexia şi refracţia luminii.

Algebra si Geometrie Seminar 9

Curs 2 DIODE. CIRCUITE DR

Tranzistoare bipolare şi cu efect de câmp

Demonstraţie: Să considerăm polinomul {f(x)} asociat cuvântului - cod: f(x) = h(1) + h(α)x h(α n 1 )X n 1 = a 0 (1 + X + X

Capitolul 2 - HIDROCARBURI 2.5.ARENE

Εμπορική αλληλογραφία Ηλεκτρονική Αλληλογραφία

CONCURS DE ADMITERE, 17 iulie 2017 Proba scrisă la MATEMATICĂ

GEOMETRIE PLANĂ TEOREME IMPORTANTE ARII. = înălţimea triunghiului echilateral h =, R =, r = R = bh lh 2 A D ++ D. abc. abc =

TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:

Transcript:

. Obiectul lucrării ALGORITMI DE COMPRESIE FOLOSIŢI ÎN SISTEMELE MODERNE DE ARHIVARE. CODAREA HUFFMAN Lucrarea îşi propune familiarizarea cu unii dintre algoritmii de compresie cei mai utilizaţi (Huffman static, Huffman dinamic varianta FGK), precum şi prezentarea unui program de simulare pe calculator care ilustrează modul de compresie.. Noţiuni teoretice.. 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 posibiltatea 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 nu definit ca: Fc =, unde nu este lungimea în biţi a mesajului iniţial şi nc lungimea după n c 8

H( S) compresie, precum şi prin eficienţa codării definită prin η=, unde H(S) reprezintă n log m entropia sursei informaţionale ce este codată, m reprezintă numărul simbolurilor din alfabetul de codare iar n reprezintă lungimea medie a cuvintelor... Clasificarea algoritmilor de compresie fără pierderi: Algoritmii de compresie de date fără pierdere pot fi încadraţi în una din următoarele categorii: -Algoritmi statici, care se bazează pe o statistică bine cunoscută a sursei şi dau rezultate bune în cazul în care sursele au o statistică asemănătoare cu cea presupusă. În caz contrar, rezultatul poate fi o extensie în loc de o compresie. -Algoritmi semiadaptivi sau în două treceri, algoritmi care folosesc statistica simbolurilor mesajului, statistică ce se obţine printr-o parcurgere iniţială a întregului mesaj. Aceşti algoritmi oferă rezultate pentru orice tip de sursă, dar nu pot fi folosiţi într-o transmisiune. -Algoritmi adaptivi, care sunt de obicei cei mai potriviti pentru orice tip de sursă. Tehnicile adaptive au ca idee construirea unui "dicţionar de codare" al simbolurilor mesajului, paralel cu codarea pentru compresie a mesajului. Acest dicţionar se va construi identic la recepţie, pe baza informaţiei recepţionate. Lucrarea va prezenta câteva din cele mai folosite metode de compresie fără pierderi... Algoritm Huffman static Codarea Huffman statică binară Algoritmul Huffman (9) constituie un algoritm optimal, în sensul că nici un alt algoritm nu asigură o mai mică lungime medie a cuvintelor. Sunt situaţii în care şi alţi algoritmi pot da o lungime medie egală cu cea dată de algoritmul Huffman, dar niciodată mai mică. Paşii algoritmului sunt:. Ordonarea mesajelor sursei în ordinea descrescătoare a probabilităţilor.. Formarea din ultimele două mesaje a unui mesaj restrâns r = sm sm având p( r) = p( sm ) + p( sm). Includerea mesajului r în mulţimea celorlalte mesaje, în ordinea descrescătoare a probabilităţilor, alcătuind şirul ordonat R. 4. Repetarea algoritmului de restrângere până când ultimul şir ordonat R k conţine doar două mesaje.. Cuvintele de cod corespunzătoare fiecărui mesaj se obţin în felul următor: - simbolului r k- i se aloca '0', iar lui r k '' - la fiecare diviziune în două se alocă, în aceeaşi ordine ca la prima diviziune, simbolurile '0' sau '' şi operaţia se continuă până când se ajunge la mulţimi formate dintr-un singur mesaj. Exemplu: a) Să se codeze prin algoritmul Huffman binar sursa caracterizată de următoarea distribuţie: s s s s4 s s S : 0. 0. 0. 0. 0.0 0.0 b) Să se determine eficienţa codării şi factorul de compresie. 8

Soluţie: S p i c i Restrângeri R R R R 4 s 0. 00 s 0. 0 0. 0. 0. 0. 0. 0 0.4 0. 00 0. 0 0. 0 0.4 s 0. 0. 0. s 4 0. 00 s 0.0 00 0. 00 0. 0 s 0.0 0 b) n = p n i i =.4 - lungimea medie a cuvintelor de cod i= H ( S) = i= p i log p i =. 9 - entropia sursei informaţionale S..9 η = = 0.98 = 98% - eficienţa codării.4 nu Fc = = =. - factorul de compresie iar n u se obţine din relaţia n u = log M, M n.4 fiind numărul de mesaje din sursa S, x reprezintă cel mai mic întreg mai mare sau egal cu x..4. Algoritm Huffman dinamic. Se porneşte de la premiza că varianta statică a algoritmului de compresie Huffman este bine înţeleasă. Ideea de bază în codarea Huffman dinamică este folosirea pentru codarea simbolului t i+ din mesaj, a unui arbore de codare (un dicţionar de codare sub forma unui arbore binar) construit pe baza primelor i simboluri din mesaj. După transmiterea simbolului t i+ se va revizui arborele de codare în vederea codării simbolului t i+. Există mai multe variante ale algoritmului Huffman dinamic (FGK, ) care diferă între ele prin modul de construcţie al arborelui. În continuare vom prezenta algoritmul de compresie, ilustrându-l cu exemplul din figura. Procedura generală de compresie pentru codarea Huffman dinamică are următorul algoritm:. iniţializez arborele de codare cu un nod rădăcină;. transmit primul simbol în clar (de exemplu codul ASCII al simbolului);. construim încă două noduri (frunze) care pornesc din nodul rădăcină, unul la stânga, care nu conţine nici un simbol, căruia îi ataşăm ponderea nulă (frunză goală) şi unul la dreapta care conţine simbolul apărut, ponderea acestuia devenind egală cu ; 4. citim următoarea literă din mesaj; 8

. dacă litera este deja în arbore transmit codul ei din arbore. Codul literii din arbore se formează citind simbolurile de '0' respectiv '' ataşate ramurilor, pornind de la nodul rădăcină până la nodul în care se află litera. Simbolurile de '0' respectiv '' se ataşează ramurilor astfel: toate ramurile din dreapta vor avea ataşate simbolul '', iar toate ramurile din stânga vor avea ataşate simbolul '0'. Apoi se trece direct la pasul ;. dacă litera nu este în arbore atunci transmit codul nodului terminal care nu conţine nici un simbol (frunză goală) urmat de codul în clar(ascii) al literei. Codul nodului fără nici o literă se formează ca şi în cazul nodului care conţine o literă;. reactualizez arborele; dacă mesajul s-a terminat, atunci codarea este terminată, iar în caz contrar reluăm procedeul începând cu pasul 4. OBS. Diferitele variante de codare dinamică diferă doar prin modul de reactualizare al arborelui (tabelei de decodare). Procedura generală de decompresie pentru codarea Huffman dinamică are următorul algoritm:. iniţializez arborele de codare cu un nod rădăcină;. citesc primul simbol transmis în clar (codul ASCII al simbolului);. transmit litera mai departe; 4. construim încă două noduri care pornesc din nodul rădăcină, unul la stânga, care nu conţine nici un simbol, căruia îi ataşăm ponderea nulă şi unul la dreapta care conţine simbolul apărut, ponderea acestuia devenind egală cu ;. citesc codul transmis (bit cu bit) până când codul se află în arbore, adică până când am ajuns la un nod frunză; nod frunză = nod care se află în arbore pe ultimul nivel de ierarhie;. dacă nodul ataşat codului citit este un nod care nu conţine nici un simbol citesc litera transmisă în clar şi o transmit mai departe, apoi trecem direct la pasul 8;. dacă nodul ataşat codului citit conţine un simbol atunci decodez codul ataşat lui prin litera pe care o conţine şi transmit litera mai departe (la utilizator); 8. reactualizăm arborele; dacă mesajul s-a terminat, atunci decodarea este terminată, iar în caz contrar reluăm procedeul începând cu pasul. Varianta FGK: În continuare vom prezenta algoritmul de reactualizare al arborelui penru varianta FGK (Faller, Gallager, Knuth). Vaianta FGK urmăreşte minimizarea Σ j w j l j (sumă ce reprezintă lungimea în biţi a mesajului codat), unde w j reprezintă ponderea frunzei j asociată simbolului j (numărul de apariţii ale simbolului j), iar l j lungimea codului asociat frunzei respective. Dacă reactualizarea arborelui se face după procedeul de mai jos atunci această minimizare este satisfăcută. Procedura de reactualizare arbore FGK: Obs. În cele ce urmează ne vom referi prin noţiunea de nod frunză la un nod terminal din arbore.. Se presupune că suntem la pasul algoritmului Huffman dinamic în care s-a citit simbolul t i. Notăm cu q nodul frunză corespunzătoare simbolului t i dacă acesta este deja în arbore, sau frunză goală dacă simbolul nu este încă în arbore;. Dacă q este frunză goală atunci înlocuiesc nodul respectiv cu un nod părinte şi două noduri derivate (noduri fii) din acesta care nu conţin nici un caracter (sunt noduri nule, de pondere nulă), cele trei noduri nou create se notează astfel: nodul din stânga cu, nodul din dreapta cu iar nodul părinte cu. Se incrementează numărul de ordine al celorlalte noduri. Apoi se notează cu q nodul derivat din dreapta tocmai creat. Tot acestui nod i se asociază şi simbolul citit t i care nu este în arbore; 88

. Ponderea nodului q căruia i s-a asociat simbolul citit t i se incrementează cu o unitate. Se modifică ponderea nodurilor intermediare şi a nodului rădăcină astfel încât aceasta să fie egală cu suma ponderilor fiilor săi. Se schimbă nodul q cu nodul de pondere cea mai mică şi cu cel mai mare număr de ordine dacă există situaţii de acest tip până când se ajunge la nodul rădăcină. Arbore iniţial Arbore după a 0 Ramură stânga codată cu 0 Ramură dreapta codată cu Arbore după b 0 0 a Nod frunză ce corespunde caracterelor folosite în mesaj 4 a 0 0 b Numărul de ordine al nodului în arbore Frunză 0 Pondere nod (egală cu numărul de apariţii ale caracterului în mesaj în cazul nodurilor frunză, sau cu suma ponderilor nodurilor derivate din acel nod în cazul nodurilor intermediare) Arbore după c a a 4 b Interschimbare noduri 4 b 0 0 c 0 c Arbore după b Caracter asociat frunzei 4 a b 4 b 4 a 0 c 0 c Figura. Evoluţia arborelui Huffman FGK în cazul codării mesajului abcb Secvenţa binară obţinută este a0b00c (a,b,c reprezintă cei 8 biţi ai codului ASCII) 89

0 0 a Caracterul b nu este în arbore, de aceea nodul q este nodul nul din care se creează cele doua noduri fii de pondere nulă 0 0 0 4 a 0 b Tot în acest pas se efectuează incrementarea numărului de ordine al celorlalte noduri deja existente Ilustrarea pasului în care se efectuează incrementarea ponderilor în nod 4 a 0 0 b Figura. Reactualizarea arborelui la citirea primului simbol b. Desfăşurarea lucrării a) Fie sursa informaţională S caracterizată de distribuţia s s s s4 s s S :. Să se realizeze o codare binară Huffman statică şi apoi să 0. 0. 0. 0. 0.0 0. se calculeze eficienţa codării şi factorul de compresie. b) Pentru secvenţa abcdeaa desenaţi evoluţia arborelui de codare dinamică Huffman FGK şi determinaţi secvenţa binară codată. Calculaţi raportul de compresie obţinut. c) Folosind programul de simulare Huffman FGK introduceţi secvenţa de la punctul b) şi urmăriţi evoluţia arborelui şi a mesajului codat în concordanţă cu rezolvarea de la punctul b). 90