Î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.

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.

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.

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.

Î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.

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.


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.
