Documente Academic
Documente Profesional
Documente Cultură
---CODURILE HUFFMAN--
CUPRINS
1.
2.
3.
4.
5.
6.
7.
8.
Introducere
Tehnici de compresie i decompresie
Compresia fr pierderi
Compresia cu pierderi
Evaluarea compresiei
Codurile HUFFMAN
Aplicatie practica
Bibliografie
INTRODUCERE
Compresia datelor este un proces de codare prin care se urmrete
micorarea redundanei mesajului generat de o surs, pentru a reduce resursele
necesare memorrii sau transmiterii acestui mesaj. Deoarece, de regul, pentru
memorarea sau transmiterea unui mesaj se folosete, eventual ntr-o form
intermediar, reprezentarea prin simboluri binare a acestuia, i pentru c cele mai
multe metode de compresie folosesc metode de codare binar - binar, putem spune
c obiectivul compresiei const n reducerea numrului de simboluri binare necesar
pentru reprezentarea mesajului. Dup cum irul simbolurilor emise de surs este
mprit, pentru codare, n subiruri de aceeai lungime sau de lungime variabil, i
dup lungimea, constant sau variabil, a cuvintelor de cod, codurile de compresie
se clasific n bloc- bloc, bloc variabil, variabil bloc i variabil variabil, bloc
bloc indicnd aceeai lungime pentru subirurile sursei i cuvinte de cod de
lungime fix, iar variabil variabil corespunznd unor lungimi variabile ale
subirurilor i ale cuvintelor de cod. Din punct de vedere al msurii n care mesajul
refcut prin decompresie se aseamn cu cel original, asupra cruia s-a acionat
prin procesul de compresie, distingem dou categorii de algoritmi de compresie:
fr pierderi i cu pierderi. Algoritmii de compresie fr pierderi sunt reversibili,
prin decompresie obinndu-se mesajul original ntocmai.
Algoritmii de compresie cu pierderi au ca rezultat diferene relativ mici ntre
mesajul rezultat prin decompresie i cel original i sunt utilizai n compresia
imaginilor i a mesajelor video i audio. n cele ce urmeaz ne referim la algoritmii
2
de compresie fr pierderi, folosii pentru texte sau date pur binare. Dac se
dispune de mesajul complet nainte de a ncepe procesul de compresie, se pot
utiliza algoritmi statici de compresie, cum ar fi spre exemplu codarea Shannon
Fano i codarea Huffman static, care in seama de frecvena caracterelor n text,
caracterelor cu probabilitatea mai mare de apariie n text alocndu-li-se cuvinte de
cod mai scurte. Cu algoritmii de compresie adaptivi, dinamici, procesul de
compresie se realizeaz n timp real, probabilitatea de apariie a caracterelor fiind
aproximat permanent, pe msur ce sursa genereaz mesajul.
O msur uzual pentru aprecierea performanei unui algoritm de compresie
aplicat asupra unui mesaj este raportul de compresie, care poate fi definit ca
raportul dintre numerele de simboluri binare prin care mesajul este reprezentat
nainte i dup compresie. n afara metodelor de uz general, folosite pentru
compresia textelor, sunt folosite i metode care sunt specifice anumitor aplicaii,
exploatnd semantica local a datelor pentru a reduce redundana. Aceste metode
sunt numite metode dependente de semantic.
3.Evaluarea compresiei
Un algoritm de compresie poate fi evaluat n funcie de: - necesarul de
memorie pentru implementarea algoritmului; - viteza algoritmului pe o anumit
main; - raportul de compresie; - calitatea reconstruciei. De obicei, ultimele dou
criterii sunt eseniale n adoptarea algoritmului de compresie. Uzual, performanele
compresiei pot fi exprimate prin raportul de compresie i rata de compresie.
Raportul de compresie este raportul dintre numrul de bii necesar reprezentrii
datelor nainte i dup compresie. Rata de compresie reprezint numrul mediu de
bii necesar reprezentrii unui eantion. n compresia cu pierderi, versiunea
reconstruit difer de varianta original i, pentru a determina eficiena
algoritmului de compresie, trebuie s existe mijloace de apreciere a diferenei
dintre semnalul original i cel reconstruit. Diferena dintre semnalul original i cel
reconstruit se numete distorsiune. Tehnicile de compresie cu pierderi se folosesc
de obicei pentru compresia semnalelor analogice, care se mai numesc forme de
und, motiv pentru care compresia semnalelor analogice mai poart denumirea de
codarea formelor de und. n cazul codrii semnalelor video i sonore destinatarul
este, de obicei, omul, al crui rspuns este dificil de apreciat, motiv pentru care se
folosesc msuri aproximative de determinare a calitii reconstruciei. Ali termeni
folosii n aprecierea diferenei dintre semnalul original i cel refcut este
4.CODURILE HUFFMAN
In Teoria Transmisiei Informatiei, codarea Huffman este un algortim de
codare entropic, folosit pentru compresia datelor fara pierderi. Termenul se refera
la folosirea unei tabela de cod de lungime variabila pentru codarea unui simbol
sursa (cum ar fi un caracter intr-un fisier) unde tabela de cod cu lungime variabili a
fost derivata intr-un mod particular bazat pe probabilitatea de aparitie a fiecarui
simbol posibil al sursei.
Acest cod a fost dezvoltat de catre David A. Huffman in timp ce isi facea
studiul de doctorat la MIT, si publicat in 1952 in lucrarea A Method for the
Construction of Minimum-Redundancy Codes (O metoda de constructie a
codurilor de redundanta minima). Huffman a devenit membru al facultatii MIT
dupa absolvire.
Codarea Huffman foloseste o metoda specifica de a alege reprezentarea
fiecarui simbol, rezultand un cod cu proprietatea ca fiecare succesiune de biti ce
reprezinta un simbol particular, nu este niciodata un prefix al altui simbol. Acest
cod are de asemenea proprietatea ca asigneaza simbolurilor cu probabilitatea de
aparitie cea mai mare, succesiunea cea mai scurta de biti.
Huffman a putut astfel sa dezvolte cea mai eficienta metoda de compresie de
acest tip. Nici o alta metoda de asignare a unei secvente de biti unor simboluri ale
unei surse, nu poate produce o marime medie mai mica a sirului de iesire, atunci
cand frecventa de aparitie a simbolurilor este aceea folosita in creearea codului. In
5
schimb, a fost mai tarziu gasita o metoda ce poate face asta in timp liniar, daca
probabilitatile de intrare sunt sortate. Desi codarea Huffman este optima pentru o
codare simbol cu simbol cu distributia probabilitatilor cunoscute. De exemplu
codarea aritmetica si LZW de multe ori au capacitati de compresie mai bune.
Ambele metodele pot combina un numar arbitrar de simboluri pentru o codare mai
eficienta, si in general sa se adapteze statisticilor de intrare. Acestea sunt utile in
mod deosebit, atunci cand probabilitatile de intrare nu sunt cunoscute precis.
Algoritmul Huffman
Ideea care st la baza acestui algoritm este aceea de a atasa coduri de
lungime mic (exprimat n biti) simbolurilor furnizate de o surs de informatie si
a cror frecvent de aparitie este mare, si de a atasa coduri de lungime mai mare
simbolurilor a cror frecvent de aparitie este mic. n concluzie, folosind acest
algoritm se reduce lungimea medie a codurilor folosite pentru a reprezenta
simbolurile alfabetului. Codurile generate de acest algoritm sunt optime n cazul n
care toate frecventele de aparitie ale simbolurilor sunt puteri ntregi ale lui 1/2.
Algoritmul lui Huffman const n construirea unui arbore binar n care fiecare nod
are fie nici un fiu, fie exact 2 fii, n care frunzele reprezint simbolurile generate de
sursa de informatie si au atasat un cost egal cu frecventa de aparitie a acestora, iar
nodurile interne au atasat un cost egal cu suma costurilor fiilor. Prin urmare,
rdcina arborelui are costul 1. Atunci cnd se cunosc frecventele de aparitie ale
simbolurilor generate de o surs de informatie S si faptul c sursa a generat n total
m simboluri distincte ale unui alfabet, constructia arborelui binar devine foarte
simpl. Primul pas const n construirea unei pduri format din m arbori. Fiecare
arbore din pdure are un singur element care contine un simbol si frecventa lui de
aparitie. Toti cei m arbori din pdure sunt distincti (nu exist doi arbori al crui
element s contin acelasi simbol). n continuare, la fiecare pas se elimin cte doi
arbori din pdure pentru care costul rdcinii este minim. Acesti doi arbori vor fi
subarborii unui nod al crui cost va fi egal cu suma frecventelor celor doi arbori
eliminati din pdure. Arborele nou creat se adaug n pdure Algoritmul se termin
6
n momentul n care n pdure mai rmne un singur arbore, adic dup efectuarea
a m - 1 iteratii. Din analiza acestui algoritm rezult faptul c drumul de la rdcin
pn la frunzele care au costul mai mic este mai mare dect drumul de la rdcin
pn la frunzele care au costul mai mare. Exist trei variante des aplicate ale
acestui algoritm:
algoritmul Huffman static;
algoritmul Huffman semi-static;
algoritmul Huffman dinamic.
Diferentele dintre cele trei variante sunt urmtoarele: n cazul variantei
statice, att compresorul, ct si decompresorul detin acelasi arbore de compresie
calculat pe baza unor frecvente fixe de aparitie si nu mai este necesar calcularea
unui arbore nou si nici transmiterea acestuia. Dezavantajul acestei metode este c,
dac frecventele de aparitie ale simbolurilor generate de o surs difer foarte mult
de cele fixe utilizate, atunci s-ar putea ca pentru simboluri cu frecvent mare de
aparitie s fie transmise coduri foarte lungi si astfel cantitatea de informatie
comprimat poate s depseasc cu mult cantitatea de informatie care a fost
generat de o surs. varianta semi-static utilizeaz algoritmul de construire a
arborelui de compresie prezentat anterior. Are ca dezavantaj faptul c sirul
simbolurilor generate de o surs de informatie trebuie parcurse de dou ori, o dat
pentru calcularea frecventelor necesare construirii arborelui si o dat pentru
codificarea sirului simbolurilor; n cazul n care simbolurile au aproximativ aceeasi
frecvent de aparitie, algoritmul nu ofer o compresie bun.
Parcurgerea de dou ori a sirului simbolurilor generate de o surs de
informatie este un incovenient deoarece acesta trebuie stocat, iar dimensiunea
datelor care trebuie comprimate, n zilele noastre, este foarte mare si calculatoarele
personale (de cele mai multe ori) nu detin resursele necesare stocrii datelor.
pentru varianta dinamic exist doi algoritmi performan- ti: FGK (Faller, Gallager,
Knuth) si V (Vitter). Acestia au n comun faptul c arborele se construieste dinamic
pe msur ce o surs de informatie genereaz simboluri, deci este necesar o
singur parcurgere a sirului simbolurilor si nu este necesar stocarea lor. Doar o
mic parte dintre ele sunt stocate cu scopul de a optimiza procesul de compresie.
Rata de compresie a acestor doi algoritmi variaz. n anumite cazuri rezultatele
7
obtinute sunt cu mult mai bune dect cele date de varianta static, dar n cazul cel
mai ru pentru varianta static, rezultatele variantelor dinamice sunt optime de cele
mai multe ori. Primele dou variante nu mai necesit explicatii suplimentare,
asadar, n continuare, vom prezenta n detaliu varianta dinamic FGK, varianta
dinamic Vitter fiind similara.
APLICATIE PRACTICA
E apare de 3 ori
<blank> (spatiul) apare de 3 ori (pentru o mai mare claritate vom reprezenta
caracterul spatiu prin simbolul _)
Cunoscand ca lungimea sirului este de 20 de caractere, putem calcula foarte
usor frecventele (probabilitatile) de aparitie ale fiecarui caracter
Astfel:
M 4/20
A 6/20
R 4/20
E 3/20
_ 3/20
Evident: 4/20 + 6/20 + 4/20 + 3/20 + 3/20 = 20/20
Pentru fiecare caracter distinct vom construi un arbore binar optim avand un
singur nod
_
3/2
0
3/2
0
10
11
12
14
BIBLIOGRAFIE
1. http://www.ginfo.ro/revista/13_1/serial.pdf
2. http://www.infoarena.ro/problema/huffman
3. http://telecom.etc.tuiasi.ro/pns/cc/lab_cc/L01_TCSM_Algoritmi%20de
%20compresie%20folositi%20in%20sistemele%20moderne%20de
%20arhivare_Codarea%20Huffman.pdf
4. http://www.math.uaic.ro/~volf/depozit/coduri.pdf
15
16