Exemple de coduri Huffman, aplicație

În prezent, puțini oameni se gândesc la modul în care funcționează compresia. Comparativ cu trecutul, utilizarea unui computer personal a devenit mult mai ușoară. Practic, fiecare persoană care lucrează cu sistemul de fișiere folosește arhive. Dar puțini oameni se gândesc la modul în care funcționează și la ce principiu este compresia fișierelor. Prima versiune a acestui proces a fost codurile Huffman și acestea sunt încă folosite în diverse arhive populare. Mulți utilizatori nu se gândesc nici măcar cât de ușor este să comprimați fișierul și în funcție de ce schemă funcționează. În acest articol, vom examina modul în care compresia funcționează, ce nuanțe ajută la accelerarea și simplificarea procesului de codificare și vom înțelege, de asemenea, care este principiul construirii unui copac de codificare.







Istoria algoritmului

Primul algoritm de codificare eficientă a informațiilor electronice a fost codul propus de Huffman la mijlocul secolului al XX-lea, și anume în 1952. Acesta este în prezent principalul element de bază al majorității programelor create pentru a comprima informații. În prezent, una dintre cele mai populare surse care folosesc acest cod sunt arhivele ZIP, ARJ, RAR și multe altele.

Exemple de coduri Huffman, aplicație
Acest algoritm Huffman este de asemenea folosit pentru a comprima imagini JPEG și alte obiecte grafice. Ei bine, toate faxurile moderne folosesc și codificarea, inventată în 1952. În ciuda faptului că de la crearea codului a trecut atât de mult timp, până în ziua de azi este folosită în cele mai noi cochilii și pe echipamentele vechi și moderne.

Principiul codificării eficiente

Baza pentru algoritmul Huffman este o schemă care vă permite să înlocuiți cele mai probabile simboluri cele mai frecvent întâlnite cu codurile sistemului binar. Iar cele care sunt mai puțin frecvente sunt înlocuite cu coduri mai lungi. Trecerea la codurile Huffman lungi are loc numai după ce sistemul folosește toate valorile minime. Această tehnică vă permite să minimizați lungimea codului pentru fiecare caracter al mesajului original ca întreg.

Exemple de coduri Huffman, aplicație
Un punct important este că, la începutul codificării, probabilitatea de apariție a literelor ar trebui să fie deja cunoscută. Din acestea, mesajul final va fi compilat. Pe baza acestor date, se construiește arborele de cod Huffman, pe baza căruia se va efectua procesul de codificare a literelor din arhivă.

Codul lui Huffman, exemplu

Pentru a ilustra algoritmul, să luăm o variantă grafică de construire a unui arbore de cod. Pentru a utiliza această metodă a fost eficientă, merită clarificată definirea unor valori necesare pentru conceptul acestei metode. Setul de arce și noduri direcționate de la nod la nod este denumit de obicei un grafic. Arborele în sine este un grafic cu un set de anumite proprietăți:

  • în fiecare nod nu poate intra decât mai mult decât unul din arce;
  • unul dintre noduri trebuie să fie rădăcina copacului, adică nici un arc nu ar trebui să intre în el;
  • dacă din rădăcină începe să se deplaseze de-a lungul arcurilor, acest proces ar trebui să permită obținerea completă a oricăror noduri.






Huffman exemple de coduri, aplicație
Există, de asemenea, un astfel de concept, care este inclus în codurile Huffman, ca o frunză de copac. Este un nod din care nu ar trebui să scape nici un arc. Dacă două noduri sunt conectate printr-un arc, atunci unul dintre ele este părintele, celălalt copil, în funcție de nodul de la care vine arcul și în care se află. Dacă două noduri au același nod părinte, ele sunt denumite de obicei noduri fraternale. Dacă, în plus față de frunze, există mai multe arce în noduri, acest arbore este numit binar. Acesta este exact copacul lui Huffman. Particularitatea nodurilor acestei construcții este că greutatea fiecărui părinte este egală cu suma greutății tuturor copiilor nodali.

Algoritm pentru construirea unui copac în funcție de Huffman

Construcția codului Huffman se face din literele alfabetului de intrare. Se creează o listă a acelor noduri care sunt libere în arborele de cod viitor. Greutatea fiecărui nod din această listă ar trebui să fie aceeași cu probabilitatea de apariție a literei mesajului corespunzător acestui nod. În acest caz, printre puținele noduri libere ale copacului viitor, se alege cel care cântărește cel mai puțin. În același timp, dacă indicatorii minime sunt observate în mai multe noduri, atunci este posibil să alegeți libere oricare dintre perechi.

Exemple de coduri Huffman, aplicație
După aceasta, se creează nodul părinte, care ar trebui să cântărească atât cât cântărește suma acestei perechi de noduri. După aceasta, părintele este trimis la lista cu noduri gratuite, iar copiii sunt șterși. În același timp, arcele primesc indicii corespunzători, unul și zerouri. Acest proces este repetat exact atâta timp cât este necesar pentru a lăsa un singur nod. După aceasta, numerele binare sunt scrise de sus în jos.

Îmbunătățirea eficienței compresiei

Pentru a spori eficiența de compresie, este necesar ca în timpul codului de construcții copac pentru a utiliza toate datele cu privire la probabilitatea de apariție a literelor într-un anumit fișier, atașat la un copac, și să nu permită faptul că acestea sunt împrăștiate peste un număr mare de documente de tip text. Dacă parcurgeți mai întâi acest fișier, puteți calcula imediat statisticile despre cât de des se întâlnesc literele dintr-un obiect care urmează a fi comprimat.

Accelerarea procesului de compresie

Pentru a accelera lucrarea algoritmului, literele trebuie să fie determinate nu de indicii de probabilitate de apariție a unei anumite litere ci de frecvența apariției acesteia. Datorită acestui lucru, algoritmul devine mai simplu, iar lucrul cu acesta este foarte accelerat. Acest lucru evită, de asemenea, operațiunile asociate cu virgule și diviziuni plutitoare.

Huffman exemple de coduri, aplicație
În plus, în acest mod, codul dinamic Huffman, sau mai degrabă algoritmul în sine, nu este supus nici unei modificări. Acest lucru se datorează în principal faptului că probabilitățile sunt direct proporționale cu frecvențele. Merită acordată o atenție deosebită faptului că greutatea finală a fișierului sau așa-numitul nod rădăcină va fi egală cu suma numărului de litere din obiectul care urmează să fie procesat.

concluzie

Codurile lui Huffman sunt un algoritm simplu și de lungă durată, care este încă folosit de multe programe și companii renumite. Simplitatea și claritatea acesteia permit obținerea unor rezultate efective ale comprimării fișierelor din orice volum și reducerea considerabilă a spațiului ocupat de acestea pe discul de stocare. Cu alte cuvinte, algoritmul Huffman este o schemă bine studiată și bine concepută, a cărei relevanță nu scade până în prezent.

Huffman exemple de coduri, aplicație
Și datorită capacității de a reduce dimensiunea fișierelor, de a le transfera în rețea sau în alte moduri, devine mai ușoară, mai rapidă și mai convenabilă. Lucrul cu algoritmul, puteți comprima absolut orice informație fără a afecta structura și calitatea sa, dar cu efectul maxim de reducere a greutății fișierului. Cu alte cuvinte, codificarea codului Huffman a fost și rămâne cea mai populară și actuală metodă de comprimare a dimensiunii fișierului.

Exemple de coduri Huffman, aplicație

Transformare incredibilă: pisica "orbită" din stradă a surprins pe toată lumea cu frumusețea ochilor lor. Pisica nu vedea aproape nimic și nu se putea mișca. Dar când a fost vindecat de scabie, sa dovedit că nu era deloc orb. Mai mult, ochii lui Cotton sunt doar unii.

Exemple de coduri Huffman, aplicație







Articole similare

Trimiteți-le prietenilor: