/ / Huffman-koder: exempel, tillämpning

Huffman-koder: exempel, tillämpning

Just nu är det få som tänker påhur filkomprimering fungerar. Jämfört med det förflutna har användning av en persondator blivit mycket enklare. Och nästan alla som arbetar med filsystemet använder arkiv. Men få människor tänker på hur de fungerar och hur filer komprimeras. Den allra första versionen av denna process var Huffman-koderna, och de används den dag i dag i olika populära arkiverare. Många användare tänker inte ens på hur enkelt det är att komprimera en fil och hur den fungerar. I den här artikeln kommer vi att titta på hur komprimering sker, vilka nyanser som hjälper till att påskynda och förenkla kodningsprocessen och också ta reda på vad som är principen för att bygga ett kodande träd.

Algoritmhistoria

Den allra första algoritmen för effektiv effektkodning av elektronisk information blev en kod som Huffman föreslog redan i mitten av 1900-talet, nämligen 1952. Det är han som för närvarande är det viktigaste grundelementet i de flesta program som är utformade för att komprimera information. För närvarande är några av de mest populära källorna som använder den här koden ZIP, ARJ, RAR-arkiv och många andra.

huffman-koder
Denna Huffman-algoritm tillämpas också påkomprimering av JPEG-bilder och andra grafiska objekt. Tja, alla moderna faxapparater använder också kodning som uppfanns 1952. Trots att så mycket tid har gått sedan skapandet av koden används den i dag i de nyaste skalen och på utrustning av gamla och moderna typer.

Principen för effektiv kodning

Huffman-algoritmen är baserad på schemat,låter dig ersätta de mest troliga, vanligaste tecknen med koder i det binära systemet. 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 har använt alla minimivärden. Denna teknik låter dig minimera kodens längd för varje tecken i originalmeddelandet som helhet.

huffman algoritm
Den viktiga punkten är att i börjankodande sannolikhet för bokstäver bör redan vara känd. Det är från dem som det slutliga meddelandet kommer att komponeras. Baserat på dessa data byggs ett Huffman-kodträd, baserat på vilket processen för kodning av bokstäver i arkivet kommer att genomföras.

Exempel på Huffman-kod

För att illustrera algoritmen, tagrafisk version av att bygga ett kodträd. För att användningen av denna metod ska vara effektiv är det värt att klargöra definitionen av några av de värden som är nödvändiga för begreppet denna metod. Uppsättningen för en uppsättning bågar och noder som styrs från nod till nod kallas ett diagram. Själva trädet är en graf med en uppsättning specifika egenskaper:

  • varje nod kan inte innehålla mer än en av bågarna;
  • en av noderna måste vara trädets rot, det vill säga att bågar inte får komma in i det alls;
  • Om du börjar flytta längs bågar från roten bör den här processen låta dig komma till absolut någon av noderna.

huffman kod exempel
Det finns också ett sådant koncept som ingår i kodernaHuffman är som ett löv på ett träd. Det representerar en nod från vilken inga bågar ska gå ut. Om två noder är anslutna med en båge, är en av dem en förälder, den andra är ett barn, beroende på vilken nod bågen går ut från och vilken en den går in i. Om två noder har samma föräldernod kallas de vanligtvis syskonnoder. Om noderna, förutom löv, har flera bågar, kallas detta träd binärt. Det är precis vad Huffman-trädet är. Ett kännetecken för noderna i denna konstruktion är att vikten för varje förälder är lika med summan av vikten för alla sina nodala barn.

Huffmans trädkonstruktionsalgoritm

Att bygga en Huffman-kod görs från bokstävermata in alfabetet. En lista över de noder som är fria i det framtida kodträdet bildas. Vikten för varje nod i den här listan bör vara densamma som sannolikheten för att meddelandebokstaven motsvarar den noden. I det här fallet väljs den som väger minst bland flera fria noder i det framtida trädet. Dessutom, om minimiindikatorerna observeras i flera noder, kan du fritt välja något av paren.

bygga en huffman-kod
Sedan skapas föräldern.som ska väga lika mycket som summan av detta noderpar väger. Därefter skickas föräldern till listan med gratis noder och barnen tas bort. I det här fallet får bågarna motsvarande indikatorer, enor och nollor. Denna process upprepas exakt så länge som nödvändigt för att endast lämna en knut. Sedan skrivs de binära siffrorna uppifrån och ner.

Förbättrar kompressionseffektiviteten

För att förbättra komprimeringseffektiviteten måste duNär du bygger ett kodträd, använd all information om sannolikheten för att bokstäver ska visas i en viss fil som är bifogad trädet och låt dem inte spridas över ett stort antal textdokument. Om du först går igenom den här filen kan du omedelbart beräkna statistik över hur ofta bokstäver från objektet som ska komprimeras hittas.

Påskynda komprimeringsprocessen

För att påskynda algoritmen, identifiera bokstäverbör utföras inte enligt indikatorerna för sannolikheten för utseendet på en viss bokstav, utan enligt frekvensen för dess förekomst. Detta gör algoritmen enklare och mycket snabbare att arbeta med. Det undviker också flytande punkt och division operationer.

dynamisk huffman-kod
Dessutom fungerar i detta läge, den dynamiskaHuffman-koden, eller snarare algoritmen i sig, kan inte ändras. Detta beror främst på att sannolikheten är direkt proportionell mot frekvenserna. Det är värt att ägna särskild uppmärksamhet åt att filens slutliga vikt eller den så kallade rotnoden är lika med summan av antalet bokstäver i objektet som ska bearbetas.

slutsats

Huffman-koder - enkla och etableradeen algoritm som fortfarande används av många välkända program och företag. Dess enkelhet och tydlighet gör att du kan uppnå effektiva resultat av komprimering av filer i alla storlekar och minska deras lagringsdiskutrymme avsevärt. Med andra ord är Huffman-algoritmen ett långt studerat och välutvecklat schema vars relevans inte minskar fram till i dag.

huffman-kodning
Och tack vare möjligheten att minska filstorlek,deras överföring över nätverket eller på annat sätt blir enklare, snabbare och bekvämare. Genom att arbeta med algoritmen kan du komprimera absolut all information utan att skada dess struktur och kvalitet, men med maximal effekt av att minska filvikten. Med andra ord har Huffman-kodning varit och förblir den mest populära och aktuella metoden för komprimering av filstorlek.

gillade:
0
Populära inlägg
Andlig utveckling
mat
y