Documente Academic
Documente Profesional
Documente Cultură
1. Obiectivul lucrării
2. Introducere teoretică
14
Transmisiunea digitală a informaţiei. Compresie fără pierderi. Aplicaţii şi lucrări practice.
15
Algoritmi statistici adaptivi de tip Huffman
3. Descrierea aplicaţiei
16
Transmisiunea digitală a informaţiei. Compresie fără pierderi. Aplicaţii şi lucrări practice.
17
Algoritmi statistici adaptivi de tip Huffman
se iau primele două elemente ale listei (adică, cele cu ponderile cele mai
mici), cu care se creează un arbore format din cele două noduri ca urmaşi şi
un părinte, cu valoarea (ponderea) egală cu suma ponderilor celor doi urmaşi
(în stânga se află nodul cu ponderea cea mai mică);
primele două elemente ale listei cu care s-a format arborele sunt şterse din
listă şi se introduce un element nou, părintele format, locul său în listă fiind
în funcţie de valoarea sa, astfel încât lista să fie în permanenţă ordonată
crescător;
se continuă algoritmul până când în listă nu mai există nici un element,
arborele fiind astfel creat.
Se apelează procedura de desenare a arborelui, acesta putând fi vizualizat în
cadrul panoului din dreapta. În cazul în care nu se încadrează în ecran, există bare de
defilare (scroll) în partea de jos şi în dreapta panoului, sau se poate mări panoul în
cadrul căruia se desenează, cu ajutorul butonului măreşte, aflat în stânga sus, în cadrul
panoului.
La acţionarea celui de-al treilea buton (codare Huffman) apare cea de-a treia
coloană în stânga panoului, în cadrul căreia se afişează cuvântul de cod obţinut pentru
fiecare caracter.
Fiecare nod care are urmaşi are în stânga o săgeată pe care este trecută valoarea
0, iar în dreapta valoarea 1. Cuvântul de cod pentru fiecare caracter se formează
citind, de la rădăcină până la nodul terminal asociat caracterului respectiv, valorile 0,
respectiv, 1, pe drumul cel mai scurt. Lungimea cuvântului de cod respectiv este egală
cu adâncimea la care se află nodul terminal. Adâncimea rădăcinii (primul nod părinte)
este 0 şi creşte cu o unitate pentru fiecare generaţie (fiecare rând de sus în jos). Toate
codurile astfel obţinute se trec pe a doua coloană a matricei care reprezintă
dicţionarul.
Cuvântul de cod va fi format înlocuind fiecare caracter din text cu codul obţinut
în urma algoritmului Huffman. Acest cuvânt de cod va fi transmis pe pagina
principală, unde se vor mai calcula lungimea codului, lungimea medie a codului,
entropia sursei şi eficienţa codării, după cum urmează:
lungimea codului este numărul de biţi care formează cuvântul de cod;
lungimea medie a codului este dată de formula:
k
Lm P(ai ) L(ai ) [bit],
i 1
Butonul înapoi şterge elementele create pentru a putea relua aplicaţia pentru un
alt text şi închide fereastra codării Huffman, întorcându-se la fereastra principală.
18
Transmisiunea digitală a informaţiei. Compresie fără pierderi. Aplicaţii şi lucrări practice.
Algoritmul de codare FGK este dinamic. La citirea fiecărui caracter din textul
dat, se formează un arbore, care are toate proprietăţile arborelui Huffman.
La crearea unui astfel de arbore, se porneşte de la un nod cu valoarea (numărul)
0, iar primul caracter citit, împreună cu acest nod 0, creează primul părinte (rădăcină a
arborelui), după cum se observă în figura 3. De fiecare dată când apare un caracter
nou, acesta se înfrăţeşte cu nodul 0.
19
Algoritmi statistici adaptivi de tip Huffman
20
Transmisiunea digitală a informaţiei. Compresie fără pierderi. Aplicaţii şi lucrări practice.
Dacă este acţionat în continuare primul buton şi după codarea întregului text,
apare mesajul “Textul a fost codat în întregime”. Dacă se doreşte reluarea algoritmului
pentru un alt text sau chiar pentru acelaşi text, este necesară întoarcerea în fereastra
principală, ceea ce se poate realiza apăsând butonul înapoi.
Cel de-al doilea buton, înapoi, şterge elementele create pentru a putea relua
aplicaţia pentru un alt text şi închide fereastra codării curente, întorcându-se la
fereastra principală. Tot aici se transmit către fereastra principală (unde vor fi afişaţi)
parametrii codării, şi anume: cuvântul de cod format, lungimea codului, lungimea
medie a cuvintelor de cod, entropia sursei şi eficienţa codării.
21
Algoritmi statistici adaptivi de tip Huffman
chiar dacă un caracter citit este deja prezent în arbore, nodul asociat acestui
caracter îşi schimbă poziţia, luând locul nodului terminal cu aceeaşi valoare
şi cu indexul cel mai mare, toate celelalte noduri cu indexul mai mic decât
indexul nodului nou ocupat mutându-se pe nodul cu indexul cu o unitate mai
mică, până se ajunge la nodul modificat prin apariţia caracterului considerat;
nodurile terminale preced nodurile interne;
valorile indecşilor nodurilor sunt crescătoare de jos în sus şi de la stânga la
dreapta, faţă de cazul FGK, unde nu se respectă ordinea la fiecare nivel;
adâncimea arborelui trebuie să fie minimă.
Fereastra pentru codarea Vitter, care poate fi observată în figura 6, are aceleaşi
componente şi este construită la fel ca fereastra pentru codarea FGK.
4. Desfăşurarea lucrării
22
Transmisiunea digitală a informaţiei. Compresie fără pierderi. Aplicaţii şi lucrări practice.
5. Întrebări
23