Huffman koder: exempel, applikationer
Just nu tänker få människor om det faktum,hur komprimering fungerar Jämfört med det förflutna har det blivit mycket lättare att använda en persondator. Och praktiskt taget alla personer som arbetar med filsystemet använder arkiv. Men få människor tänker på hur de fungerar och vilken princip är komprimeringen av filer. Den allra första versionen av denna process var Huffman-koderna, och de används fortfarande i olika populära arkiver. Många användare tycker inte ens om hur lätt det är att komprimera filen och enligt vilket system det fungerar. I den här artikeln ser vi på hur komprimering fungerar, vilka nyanser bidrar till att påskynda och förenkla kodningsprocessen, och vi förstår också hur principen att bygga ett kodande träd är.
Algoritmens historia
Den allra första algoritmen för effektivkodning av elektronisk information var den kod som Huffman föreslog i mitten av det tjugonde århundradet, nämligen 1952. Det är för närvarande det viktigaste elementet i de flesta program som skapats för att komprimera information. För närvarande är en av de mest populära källorna som använder denna kod ZIP, ARJ, RAR arkiv och många andra.
Principen om effektiv kodning
Grunden för Huffman-algoritmen är ett schema,Det tillåter att ersätta de mest sannolika, oftast stötte symbolerna med koder för ett binärt system. Och de som är mindre vanliga ersätts med längre koder. Övergången till långa Huffman-koder sker först efter att systemet använder alla minimivärden. Med den här tekniken kan du minimera kodens längd för varje tecken i det ursprungliga meddelandet som helhet.
Huffmans kod, exempel
För att illustrera algoritmen, låt oss taen grafisk version av byggandet av ett kodträd. För att använda denna metod var effektiv är det värt att klargöra definitionen av några värden som är nödvändiga för begreppet denna metod. Satsen med bågar och noder som är riktade från nod till nod kallas vanligen en graf. Själva trädet är ett diagram med en uppsättning vissa egenskaper:
- i varje nod kan man inte ange mer än en av bågarna;
- En av noderna måste vara trädets rot, det vill säga ingen båge borde gå in i den alls;
- om från roten för att börja röra sig längs bågar, bör denna process tillåta att komma helt in i någon av noderna.
Algoritm för att bygga ett träd enligt Huffman
Konstruktionen av Huffman-koden är gjord i bokstäverav ingångs alfabetet. En lista över de noder som är lediga i det framtida kodträdet skapas. Vikten av varje nod i denna lista bör vara densamma som sannolikheten för att bokstaven i meddelandet som motsvarar denna nod uppträder. I det här fallet, bland de få fria noderna i det framtida trädet, väljs den som väger minst. Samtidigt, om miniminivåerna observeras i flera noder, är det möjligt att välja fritt paret.
Förbättrad komprimeringseffektivitet
För att öka komprimeringseffektiviteten är det nödvändigt atttiden för att bygga ett kodträ för att använda all data om sannolikheten för bokstäver som förekommer i en viss fil som bifogas ett träd och inte låta dem sprida sig över ett stort antal textdokument. Om du först går igenom den här filen kan du omedelbart beräkna statistiken om hur ofta bokstäver från ett objekt som ska komprimeras uppstår.
Acceleration av kompressionsprocessen
För att påskynda algoritmen, definitionen av bokstäverDet är nödvändigt att inte utföra indikatorer på sannolikheten för att denna eller den där bokstaven uppträder och om frekvensen av dess förekomst. Tack vare detta blir algoritmen enklare, och arbetet med det accelereras kraftigt. Detta undviker också operationerna i samband med flytande kommatecken och uppdelning.
slutsats
Huffmans koder - enkla och långa etableradealgoritmen, som fortfarande används av många kända program och företag. Dess enkelhet och tydlighet gör det möjligt att uppnå effektiva komprimeringsresultat för filer av alla storlekar och avsevärt minska det utrymme de upptar på lagringsskivan. Med andra ord är Huffman-algoritmen ett långt studerat och väldesignat schema, vars relevans inte minskar till denna dag.