Hafmaņa kodi: piemēri, lietojumprogrammas
Šobrīd maz cilvēki domā par to,kā kompresijas darbi. Salīdzinājumā ar pagātni personālo datoru ir kļuvis daudz vieglāk. Un praktiski ikviens, kas strādā ar failu sistēmu, izmanto arhīvus. Taču daži cilvēki domā par to, kā viņi strādā, un par to, kurš princips ir failu saspiešana. Pati pirmā šī procesa versija bija Hafmaņa kodi, un tos joprojām izmanto dažādos tautas arhīvos. Daudzi lietotāji pat nedomā, cik viegli ir saspiest failu un saskaņā ar kuru shēmu tā darbojas. Šajā rakstā mēs aplūkosim, kā kompresijas darbi, kādas nianses palīdz paātrināt un vienkāršot kodēšanas procesu, un mēs arī sapratīsim, kāds ir kodēšanas koka veidošanas princips.
Algoritma vēsture
Pirmais algoritms efektīvaiElektroniskās informācijas kodēšana bija kods, ko Huffmans ierosināja divdesmitā gadsimta vidū, proti, 1952. gadā. Pašlaik tā ir galvenā elementa daļa visās programmās, kas izveidotas informācijas saspiešanai. Šobrīd viens no populārākajiem avotiem, izmantojot šo kodu, ir ZIP, ARJ, RAR arhīvi un daudzi citi.
Efektīvas kodēšanas princips
Huffmana algoritma pamats ir shēma,Tas ļauj aizstāt visbiežāk sastopamos simbolus ar binārās sistēmas kodiem. Un tie, kas ir retāk sastopami, tiek aizstāti ar ilgākiem kodiem. Pāreja uz ilgiem Hafmana kodiem notiek tikai pēc tam, kad sistēma izmanto visas minimālās vērtības. Šis paņēmiens ļauj minimizēt koda garumu katra sākotnējā ziņojuma rakstzīmju kopumā.
Huffmana kods, piemērs
Lai ilustrētu algoritmu, pieņemsimkoda koka konstrukcijas grafiskā versija. Lai šo metodi izmantotu efektīvi, ir lietderīgi precizēt dažu šīs metodes jēdzienu vajadzīgo vērtību definīciju. Loka un mezglu kopums, kas tiek virzīts no mezgla uz mezglu, parasti sauc par grafiku. Pati koks ir diagramma ar noteiktu rekvizītu komplektu:
- katrā mezglā var ievadīt ne vairāk kā vienu no lokiem;
- vienam no mezgliem jābūt koka saknēm, tas ir, loka nav jāievada vispār;
- ja no saknes, lai sāktu pārvietoties pa lokiem, šim procesam vajadzētu ļaut pilnīgi iekļūt kādā no mezgliem.
Koka konstrukcijas algoritms atbilstoši Huffmanam
Hafmana koda konstrukcija ir veidota no burtiemno ievades alfabēta. Tiks izveidots to mezglu saraksts, kuri ir brīvi nākamajā koda kokā. Katras mezgla sarakstā svars ir tāda pati kā varbūtību ar burtu amatu, kas atbilst šajā mezglā. Šajā gadījumā starp dažiem mazajiem nākotnes koka mezgliem tiek izvēlēts vissvarīgākais. Šajā gadījumā, ja minimālais līmenis novērots vairākās vietās, jūs varat brīvi izvēlēties kādu no pāriem.
Kompresijas efektivitātes uzlabošana
Lai palielinātu kompresijas efektivitāti, ir nepieciešamslaiks, lai izveidotu koda koku, lai izmantotu visus datus par burtu varbūtību, kas parādās konkrētā kokā pievienotā failā, un neļaut tiem izkliedēt lielu skaitu teksta dokumentu. Ja jūs vispirms izmantojat šo failu, varat nekavējoties aprēķināt statistiku par to, cik bieži tiek saskarē saspiestā objekta burti.
Saspiešanas procesa paātrināšana
Lai paātrinātu algoritmu, burtu definīcijaNepieciešams veikt rādītājus par šīs vai šīs vēstules rašanās varbūtību un tās rašanās biežumu. Pateicoties tam, algoritms kļūst vienkāršāks, un darbs ar to ir ievērojami paātrināts. Tas arī novērš darbības, kas saistītas ar peldošajām komām un sadalīšanu.
Secinājums
Huffmana kodi - vienkārši un ilgstošialgoritms, kuru joprojām izmanto daudzas pazīstamas programmas un uzņēmumi. Tās vienkāršība un skaidrība ļauj sasniegt efektīvus saspiešanas rezultātus jebkura izmēra failiem un ievērojami samazināt telpu, ko tie aizņem uzglabāšanas diskā. Citiem vārdiem sakot, Huffman algoritms ir ilgi izpētīta un labi izstrādāta shēma, kuras atbilstība līdz šodienai nav mazāka.