Arbori Huffman - Implementare în C++

Licență
8/10 (1 vot)
Conține 1 fișier: doc
Pagini : 78 în total
Cuvinte : 15740
Mărime: 510.81KB (arhivat)
Publicat de: Vali I.
Puncte necesare: 13

Cuprins

  1. INTRODUCERE 3
  2. CAPITOLUL 1 - CODIFICAREA HUFFMAN 4
  3. 1.1 Concepte generale despre compresia datelor 4
  4. 1.2 Algoritmi entropici 8
  5. 1 3 Compresie Huffman 10
  6. 1 4 Construcţia arborelui Huffman 12
  7. 1 4 1 Arborele binar Huffman 12
  8. 1 4 2 Definiţia arborilor binari optimali 15
  9. 1 4 3 Construcţia arborilor binari optimali 16
  10. 1 4 4 Algoritm de construcţie a arborelui Huffman optimal 17
  11. 1 5 Coduri Huffman 19
  12. 1 5 1 Codificarea caracterelor 20
  13. 1 5 2 Obținerea codificării textului 22
  14. 1 6 Realizarea algoritmul Huffman prin metoda greedy 24
  15. 1 6 1 Tehnica greedy 24
  16. 1 6 2 Codificarea Huffman prin metoda greedy 27
  17. CAPITOLUL 2-ANALIZA ALGORITMULUI DE CODIFICARE HUFFMAN 31
  18. 2 1 Corectitudinea algoritmului Huffman 31
  19. 2 2 Coduri prefix 33
  20. 2 2 1 Coduri prefix Arbore de codificare 33
  21. 2 2 2 Construcţia codificării prefix a lui Huffman 35
  22. 2 3 Variante ale algoritmului lui Huffman 37
  23. 2 3 1 Metoda de codare dinamică Huffman 38
  24. 2 3 2 Algoritmul FGK 44
  25. 2 3 3 Algoritmul V 47
  26. CAPITOLUL 3-IMPLEMENTAREA ALGORITMULUI DE CODIFICARE/DECODIFICARE HUFFMAN 48
  27. 3 1 Implementarea algoritmului de compresie 48
  28. 3 2 Implementarea algoritmului de expandare (de-compresie) 54
  29. 3 3 Rezultate obținute 56
  30. CONCLUZII 57
  31. BIBLIOGRAFIE 59
  32. ANEXA 1 – Program C 73
  33. ANEXA 2 – Program C++ 78

Extras din licență

INTRODUCERE

În lucrarea de fața tratez metodele Huffman de codificare și comprimare a datelor, necesare pentru elaborarea unor algoritmi optimi care să micşoreze spaţiul necesar memorării unui fişier

Tehnicile de compresie sunt utile pentru fişiere text, în care anumite caractere apar cu o frecvenţă mai mare decât altele, pentru fişiere ce codifică imagini sau sunt reprezentări digitale ale sunetelor ori ale unor semnale analogice, ce pot conţine numeroase motive care se repetă Chiar dacă astăzi capacitatea dispozitivelor de memorare a crescut foarte mult, algoritmii de compresie a fişierelor rămân foarte importanţi, datorită volumului tot mai mare de informaţii ce trebuie stocate În plus, compresia este deosebit de utilă în comunicaţii, transmiterea informaţiilor fiind mult mai costisitoare decât prelucrarea lor

Una dintre cele mai răspândite tehnici de compresie a fişierelor text, care, în funcţie de caracteristicile fişierului ce urmează a fi comprimat, conduce la reducerea spaţiului de memorie necesar cu 20%-90%, a fost descoperită de D Huffman în 1952 şi poartă numele de codificare (cod) Huffman În loc de a utiliza un cod în care fiecare caracter să fie reprezentat pe 7 sau pe 8 biţi (lungime fixă), se utilizează un cod mai scurt pentru caracterele care sunt mai frecvente şi coduri mai lungi pentru cele care apar mai rar În unele cazuri această metoda poate reduce dimensiunea fişierelor cu peste 70%, în special în cazul fişierelor de tip text

Lucrarea este structurată în trei capitole Primul capitol prezintă conceptul de compresie a datelor şi metoda Huffman de compresie statică Tot aici am exemplificat aplicarea metodei pe un text şi am construit arborele binar Huffman corespunzător textului respectiv În al doilea capitol am demonstrat corectitudine algoritmului Huffman dedus în primul capitol, am exemplificat modul de codificare şi decodificare a datelor cu metoda Huffman statică şi am prezentat alte variante ale algoritmului Huffman În capitolul trei am implementat algoritmul de codificare şi decodificare Huffman în limbajul C++ Tot aici am prezentat structurile de date utilizate pentru implementare şi am explicat în detaliu modul de construcţie al algoritmului

CAPITOLUL 1

CODIFICAREA HUFFMAN

1 1 Concepte generale despre compresia datelor

Noţiunea de comprimare a datelor a apărut din necesitatea evidentă de a atinge rate mari de transfer în reţele sau de a stoca o cantitate cât mai mare de informaţii folosind cât mai puţin spaţiu Compresia datelor este necesară în zilele noastre şi este foarte des folosită, mai ales în domeniul aplicaţiilor multimedia

Un compresor de date este o aplicaţie care, pe baza unuia sau mai multor algoritmi de compresie, diminuează spaţiul necesar stocării informaţiei utile conţinute de un anumit set de date Pentru orice compresor de date este necesară condiţia de existenţă a cel puţin unui decompresor care, pe baza informaţiilor furnizate de compresor, să poată reconstitui informaţia care a fost comprimată În cazul în care nu există un decompresor, atunci datele comprimate devin inutile pentru utilizator deoarece acesta nu mai are acces la informaţia stocată în arhivă (o arhivă reprezintă rezultatul obţinut în urma utilizării unui compresor)

Un compresor de date este format din următoarele elemente:

- una sau mai multe surse de informaţie;

- unul sau mai mulţi algoritmi de compresie;

- una sau mai multe transformări

Sursa de informaţie pentru un compresor poate fi constituită de unul sau mai multe fişiere sau de un flux de date care a fost transmis compresorului prin intermediul unei reţele Datele arhivate urmează să fie stocate într-o arhivă care urmează să fie păstrată local sau urmează să fie transmisă mai departe

Preview document

Arbori Huffman - Implementare în C++ - Pagina 1
Arbori Huffman - Implementare în C++ - Pagina 2
Arbori Huffman - Implementare în C++ - Pagina 3
Arbori Huffman - Implementare în C++ - Pagina 4
Arbori Huffman - Implementare în C++ - Pagina 5
Arbori Huffman - Implementare în C++ - Pagina 6
Arbori Huffman - Implementare în C++ - Pagina 7
Arbori Huffman - Implementare în C++ - Pagina 8
Arbori Huffman - Implementare în C++ - Pagina 9
Arbori Huffman - Implementare în C++ - Pagina 10
Arbori Huffman - Implementare în C++ - Pagina 11
Arbori Huffman - Implementare în C++ - Pagina 12
Arbori Huffman - Implementare în C++ - Pagina 13
Arbori Huffman - Implementare în C++ - Pagina 14
Arbori Huffman - Implementare în C++ - Pagina 15
Arbori Huffman - Implementare în C++ - Pagina 16
Arbori Huffman - Implementare în C++ - Pagina 17
Arbori Huffman - Implementare în C++ - Pagina 18
Arbori Huffman - Implementare în C++ - Pagina 19
Arbori Huffman - Implementare în C++ - Pagina 20
Arbori Huffman - Implementare în C++ - Pagina 21
Arbori Huffman - Implementare în C++ - Pagina 22
Arbori Huffman - Implementare în C++ - Pagina 23
Arbori Huffman - Implementare în C++ - Pagina 24
Arbori Huffman - Implementare în C++ - Pagina 25
Arbori Huffman - Implementare în C++ - Pagina 26
Arbori Huffman - Implementare în C++ - Pagina 27
Arbori Huffman - Implementare în C++ - Pagina 28
Arbori Huffman - Implementare în C++ - Pagina 29
Arbori Huffman - Implementare în C++ - Pagina 30
Arbori Huffman - Implementare în C++ - Pagina 31
Arbori Huffman - Implementare în C++ - Pagina 32
Arbori Huffman - Implementare în C++ - Pagina 33
Arbori Huffman - Implementare în C++ - Pagina 34
Arbori Huffman - Implementare în C++ - Pagina 35
Arbori Huffman - Implementare în C++ - Pagina 36
Arbori Huffman - Implementare în C++ - Pagina 37
Arbori Huffman - Implementare în C++ - Pagina 38
Arbori Huffman - Implementare în C++ - Pagina 39
Arbori Huffman - Implementare în C++ - Pagina 40
Arbori Huffman - Implementare în C++ - Pagina 41
Arbori Huffman - Implementare în C++ - Pagina 42
Arbori Huffman - Implementare în C++ - Pagina 43
Arbori Huffman - Implementare în C++ - Pagina 44
Arbori Huffman - Implementare în C++ - Pagina 45
Arbori Huffman - Implementare în C++ - Pagina 46
Arbori Huffman - Implementare în C++ - Pagina 47
Arbori Huffman - Implementare în C++ - Pagina 48
Arbori Huffman - Implementare în C++ - Pagina 49
Arbori Huffman - Implementare în C++ - Pagina 50
Arbori Huffman - Implementare în C++ - Pagina 51
Arbori Huffman - Implementare în C++ - Pagina 52
Arbori Huffman - Implementare în C++ - Pagina 53
Arbori Huffman - Implementare în C++ - Pagina 54
Arbori Huffman - Implementare în C++ - Pagina 55
Arbori Huffman - Implementare în C++ - Pagina 56
Arbori Huffman - Implementare în C++ - Pagina 57
Arbori Huffman - Implementare în C++ - Pagina 58
Arbori Huffman - Implementare în C++ - Pagina 59
Arbori Huffman - Implementare în C++ - Pagina 60
Arbori Huffman - Implementare în C++ - Pagina 61
Arbori Huffman - Implementare în C++ - Pagina 62
Arbori Huffman - Implementare în C++ - Pagina 63
Arbori Huffman - Implementare în C++ - Pagina 64
Arbori Huffman - Implementare în C++ - Pagina 65
Arbori Huffman - Implementare în C++ - Pagina 66
Arbori Huffman - Implementare în C++ - Pagina 67
Arbori Huffman - Implementare în C++ - Pagina 68
Arbori Huffman - Implementare în C++ - Pagina 69
Arbori Huffman - Implementare în C++ - Pagina 70
Arbori Huffman - Implementare în C++ - Pagina 71
Arbori Huffman - Implementare în C++ - Pagina 72
Arbori Huffman - Implementare în C++ - Pagina 73
Arbori Huffman - Implementare în C++ - Pagina 74
Arbori Huffman - Implementare în C++ - Pagina 75
Arbori Huffman - Implementare în C++ - Pagina 76
Arbori Huffman - Implementare în C++ - Pagina 77
Arbori Huffman - Implementare în C++ - Pagina 78

Conținut arhivă zip

  • Arbori Huffman - Implementare in C++.doc

Alții au mai descărcat și

Grilă sisteme informaționale de gestiune - Access

Adăugarea de câmpuri la o tabelă se face în modul de vizualizare:...... Previzualizare inaintea imprimarii Aplicarea unei restrictii de...

Hackeri

Hackerii sunt pasionati ai informaticii, care, de obicei au ca scop „spargerea” anumitor coduri, baze de date, pagini web etc. Ei sunt considerati...

Baze de Date

3.Introducere in bd si sgbd-uri Definitie: Numim baza de date o colectie partajata de date aflata in interdependenta logica impreuna cu o...

Te-ar putea interesa și

Compresia Datelor

COMPRESIA DATELOR 1. Compresia de date: Istoric, evolutie si scurta prezentare a unor metode elementare de compresie 1.1 Istoria compresiei de...

Algoritmul de Compresie Huffman

1.1 Noţiuni introductive 1.1.1 Terminologie Pentru a evita eventualele neînţelegeri ce ar putea rezulta din utilizarea unor termeni care sunt...

Codificare Huffman Folosind Arbori Binari

Obiective In urma parcurgerii acestui laborator, studentul va fi capabil: • sa inteleaga modul in care informatia este masurata in biti • sa...

Ai nevoie de altceva?