/ / Huffman-koodit: esimerkkejä, sovellus

Huffman-koodit: esimerkkejä, sovellus

Tällä hetkellä harvat ihmiset ajattelevat sitä,miten pakkaus toimii. Aiempiin verrattuna henkilökohtaisen tietokoneen käyttö on tullut paljon helpommaksi. Ja käytännöllisesti katsoen jokainen tiedostojärjestelmän kanssa työskentelevä henkilö käyttää arkistoja. Mutta harvat ihmiset ajattelevat, miten he työskentelevät ja millainen periaate tiedostojen puristamisesta. Prosessin ensimmäinen versio oli Huffman-koodit, ja niitä käytetään edelleen useissa suosituissa arkistoissa. Monet käyttäjät eivät edes ajattele kuinka helppoa on kompressoida tiedosto ja sen mukaan, mikä järjestelmä se toimii. Tässä artikkelissa tarkastelemme kompressoinnin tekemistä, mitä vivahteita nopeuttaa ja yksinkertaistaa koodausprosessia, ja selvitämme, mikä koodauspuun rakentamisen periaate on.

Algoritmin historia

Ensimmäinen algoritmi tehokkaaksielektronisen tiedon koodaaminen oli Huffmanin ehdottama koodi vuosisadan puolivälissä eli vuonna 1952. Se on tällä hetkellä tärkein perusosa useimmille ohjelmille, jotka on luotu pakata tietoja. Tällä hetkellä yksi suosituimmista lähteistä, jotka käyttävät tätä koodia, ovat ZIP, ARJ, RAR arkistot ja monet muut.

Huffman-koodit
Tätä Huffman-algoritmia käytetään myösJPEG-kuvien ja muiden graafisten objektien pakkaaminen. Kaikki modernit faksit käyttävät myös koodausta, keksitty vuonna 1952. Huolimatta siitä, että koodin luomisen jälkeen niin paljon aikaa on kulunut, sitä käytetään nykyään uusimpiin kuoreihin ja vanhojen ja nykyaikaisten tyyppien laitteisiin.

Tehokkaan koodauksen periaate

Huffman-algoritmin perusta on järjestelmä,Sen avulla voidaan korvata todennäköisimmät, useimmin esiintyvät symbolit binaarijärjestelmän koodeilla. Ne, jotka ovat harvinaisempia, korvataan pitemmillä koodeilla. Siirtyminen pitkään Huffman-koodeihin tapahtuu vasta sen jälkeen, kun järjestelmä käyttää kaikkia vähimmäisarvoja. Tämän tekniikan avulla voit minimoida koodin pituuden alkuperäisen viestin jokaiselle merkille kokonaisuutena.

Huffman-algoritmi
Tärkeä asia on, että alussajoka koodaa kirjainten esiintymisen todennäköisyyttä, olisi jo tiedettävä. Tällöin lopullinen viesti kootaan. Näiden tietojen pohjalta muodostetaan Huffman-koodipuu, jonka perusteella arkistoon tallennettujen kirjainten prosessi suoritetaan.

Huffmanin koodi, esimerkki

Jotta voimme kuvata algoritmia, ottakaammegraafinen versio koodipuun rakentamisesta. Tämän menetelmän käyttämiseksi oli tehokasta, on syytä selventää eräiden tämän menetelmän käsitteen kannalta välttämättömien arvojen määritelmää. Kaaria ja solmuja, jotka ohjataan solmusta solmuun, kutsutaan yleensä kaavioksi. Itse puu on kaavio jossa on joukko tiettyjä ominaisuuksia:

  • jokaisessa solmussa voi olla enintään yksi kaaria;
  • yksi solmuista tulee olla puun juureen, eli ei kaaren pitäisi syöttää sitä ollenkaan;
  • Jos kara ryhdy liikkumaan pitkin kaarta, prosessin pitäisi voida saada täysin missään solmuja.

huffman esimerkki
Myös tällainen käsite sisältyy koodeihinHuffman, kuten puun lehti. Se on solmu, josta kaaren ei pitäisi päästä eroon. Jos kaksi solmua liitetään kaaren avulla, yksi niistä on vanhempi, toinen lapsi, riippuen siitä, minkä solmun kaari on peräisin ja mistä se on. Jos kahdella solmulla on sama emo- solmu, niitä kutsutaan yleensä ns. Jos lehdissä on useita kaaria solmuissa, tätä puuta kutsutaan binaariksi. Tämä on juuri Huffmanin puu. Tämän rakenteen solmujen erityispiirteet ovat, että kunkin vanhemman paino on yhtä suuri kuin kaikkien sen solmujen lasten painon summa.

Algoritmi puun rakentamiseksi Huffmanin mukaan

Huffman-koodin rakentaminen on tehty kirjaimistasyöttöaiheesta. Luodaan luettelo tulevasta koodipuusta vapaista solmuista. Tämän luettelon kunkin solmun painon tulisi olla sama kuin tämän solmun vastaavan sanoman kirjaimen todennäköisyys. Tällöin valitaan tulevaisuuden puun muutaman vapaan solmun joukossa valittuna oleva paino. Samalla, jos vähimmäisindikaattoreita havaitaan useissa solmuissa, on mahdollista valita vapaasti jokin pareista.

Huffman-koodin rakentaminen
Sitten syntyi vanhempisolmun, joka painaa yhtä paljon kuin tämän solmuparin summa painaa. Tämän jälkeen vanhempi lähetetään luetteloon ilmaisilla solmuilla, ja lapset poistetaan. Samanaikaisesti kaaret saavat vastaavia indeksejä, samoja ja nollia. Tämä prosessi toistetaan täsmälleen niin kauan kuin on tarpeen jättää vain yksi solmu. Tämän jälkeen binääriluvut kirjataan alhaalta ylöspäin.

Parantaa pakkausteknistä tehokkuutta

Puristustehokkuuden lisäämiseksi on välttämätöntäaikana puu rakennusmääräykset käyttää kaikkia tietoja esiintymistodennäköisyys kirjaimet tietty tiedosto, kiinni puuhun, eikä salli sitä, että ne ovat hajallaan useita tekstitiedostoja. Jos ensin käydään läpi tämän tiedoston, voit välittömästi laskea tilastot, kuinka usein kirjataan pakatun objektin kirjaimet.

Puristusprosessin kiihdytys

Algoritmin nopeuttamiseksi kirjainten määritelmäOn välttämätöntä suorittaa tämän tai kyseisen kirjeen esiintymisen todennäköisyysindikaattorit ja sen esiintymistiheys. Tämän ansiosta algoritmi muuttuu yksinkertaisemmaksi ja sen kanssa tapahtuva työskentely nopeutuu huomattavasti. Tämä myös välttää kelluvia pilkkuja ja jakoa.

dynaaminen Huffman-koodi
Lisäksi työskentely tässä tilassa dynaaminenHuffman-koodilla tai pikemminkin itse algoritmilla ei ole mitään muutoksia. Tämä johtuu pääasiassa siitä, että todennäköisyydet ovat suoraan verrannollisia taajuuksiin. On syytä kiinnittää erityistä huomiota siihen, että tiedoston tai niin sanotun juurisolmun lopullinen paino on yhtä suuri kuin käsiteltävän objektin kirjainten määrän summa.

johtopäätös

Huffmanin koodit - yksinkertainen ja pitkäaikainenalgoritmi, jota monet tunnetut ohjelmat ja yritykset käyttävät edelleen. Sen yksinkertaisuus ja selkeys mahdollistavat tehokkaat pakkaustulokset kaikenkokoisille tiedostoille ja vähentävät merkittävästi tilaa, jota ne käyttävät tallennuslevyllä. Toisin sanoen Huffman-algoritmi on pitkään tutkittu ja hyvin suunniteltu järjestelmä, jonka merkitys ei vähene tähän päivään asti.

Huffman-koodin koodaus
Ja kiitos mahdollisuudesta pienentää tiedostojen kokoa,niiden siirtäminen verkon kautta tai muulla tavoin on yksinkertaisempaa, nopeampaa ja kätevämpää. Algoritmin avulla voit pakata kaikki tiedot vahingoittamatta sen rakennetta ja laatua, mutta suurin vaikutus pienentää tiedoston painoa. Toisin sanoen, Huffman-koodin koodaus oli ja on edelleen suosituin ja todellinen tiedostokoon pakkausmenetelmä.

Lue lisää: