/ / Huffman-koder: Eksempler, applikasjoner

Huffman-koder: Eksempler, applikasjoner

For øyeblikket er det få som tenker påhvordan filkomprimering fungerer. Sammenlignet med fortiden, har det blitt mye enklere å bruke en datamaskin. Og nesten hver person som jobber med filsystemet bruker arkiver. Men få mennesker tenker på hvordan de fungerer og etter hvilket prinsipp filkomprimering oppstår. Huffman-koder ble den aller første versjonen av denne prosessen, og de brukes fremdeles i forskjellige populære arkiver. Mange brukere tenker ikke engang på hvor enkel filkomprimeringen er og etter hvilket skjema det fungerer. I denne artikkelen vil vi vurdere hvordan komprimering oppstår, hvilke nyanser som hjelper med å fremskynde og forenkle kodingsprosessen, og også vil vi forstå hva prinsippet om å bygge et kodetre er.

Algoritmehistorie

Den aller første algoritmen for å utføre effektivkoding av elektronisk informasjon var koden foreslått av Huffman allerede i midten av det tjuende århundre, nemlig i 1952. Det er han som for øyeblikket er det viktigste grunnleggende elementet i de fleste programmer designet for å komprimere informasjon. For tiden er en av de mest populære kildene som bruker denne koden ZIP, ARJ, RAR og mange andre.

huffman-koder
Denne Huffman-algoritmen brukes også tilKomprimering av JPEG-bilder og andre grafiske objekter. Vel, alle moderne fakser bruker også koding, oppfunnet i 1952. Til tross for at det har gått så mye tid siden opprettelsen av koden, brukes den i dag i de nyeste skjellene og på utstyr av de gamle og moderne typene.

Prinsippet om effektiv koding

Huffman-algoritmen er basert på en krets,slik at du kan erstatte de mest sannsynlige, vanligste tegnene med binære systemkoder. Og de som er mindre vanlige erstattes med lengre koder. Overgangen til lange Huffman-koder skjer først etter at systemet bruker alle minimumsverdiene. Denne teknikken lar deg minimere kodelengden for hvert tegn i den opprinnelige meldingen som helhet.

huffman algoritme
Det viktige poenget er at i begynnelsenkoding av sannsynligheten for forekomst av bokstaver bør allerede være kjent. Det er fra dem den endelige meldingen vil bli samlet. Basert på disse dataene blir Huffman-kodetreet konstruert, på grunnlag av hvilken prosessen med å kode bokstaver i arkivet vil bli utført.

Eksempel på Huffman-kode

For å illustrere algoritmen, tagrafisk versjon av kodetreet konstruksjon. For at bruken av denne metoden skal være effektiv, er det verdt å avklare definisjonen av noen verdier som er nødvendige for konseptet med denne metoden. Settet med mange buer og noder som er rettet fra node til node, kalles en graf. Selve treet er en graf med et sett med spesifikke egenskaper:

  • hver node kan ikke inneholde mer enn en av buer;
  • en av nodene må være roten til treet, det vil si at den ikke skal omfatte buer i det hele tatt;
  • Hvis du begynner å bevege deg langs buer fra roten, bør denne prosessen tillate deg å komme til absolutt noen av nodene.

huffman-kodeeksempel
Det er også et slikt konsept inkludert i kodeneHuffman er som et tre av et tre. Det er en node som ingen buer skal gå ut av. Hvis to noder er forbundet med en lysbue, er den ene av dem en forelder, den andre er et barn, avhengig av hvilken node buen kommer ut fra og inn i den. Hvis to noder har den samme overordnede noden, kalles de vanligvis søsterknuter. Hvis det i tillegg til blader dukker opp flere buer ved nodene, kalles dette treet binært. Akkurat slik er Huffman-treet. Et kjennetegn ved knutepunktene i denne konstruksjonen er at vekten til hver av foreldrene er lik summen av vekten til alle sine nodale barn.

Huffman Tree Algorithm

Huffman-koden er laget av bokstaverinnføringsalfabet. En liste over de nodene som er gratis i det fremtidige kodetreet, blir dannet. Vekten til hver node i denne listen skal være den samme som sannsynligheten for en meldingsbokstav som tilsvarer den noden. Dessuten er den som veier minst valgt blant de få gratis noder for det fremtidige treet. Hvis minimumsindikatorene overholdes i flere noder, kan du dessuten fritt velge hvilket som helst av parene.

bygge en huffman-kode
Deretter opprettelsen av foreldrenenode, som skal veie like mye som summen av dette paret av noder. Etter det blir foreldrene sendt til listen med gratis noder, og barna blir slettet. I dette tilfellet får buene tilsvarende indikatorer, enheter og nuller. Denne prosessen gjentas så mye som nødvendig for å forlate bare en node. Deretter skrives binære sifre i retning fra topp til bunn.

Forbedring av komprimeringseffektivitet

Чтобы повысить эффективность сжатия, нужно во mens du bygger kodetreet, bruker du alle dataene om sannsynligheten for at bokstaver vises i en bestemt fil festet til treet, og ikke la dem spres over et stort antall tekstdokumenter. Hvis du først går gjennom denne filen, kan du umiddelbart beregne statistikk over hvor ofte bokstaver fra objektet som skal komprimeres.

Fremskynde komprimeringsprosessen

For å få fortgang i algoritmen ved å identifisere bokstaverdet er nødvendig å utføre ikke i henhold til indikatorene for sannsynligheten for utseendet til en bestemt bokstav, men i henhold til hyppigheten av dens forekomst. Dette gjør algoritmen enklere og mye raskere å jobbe med. Det unngår også flytende punkt- og divisjonsoperasjoner.

dynamisk huffman-kode
I tillegg opererer i denne modusen, den dynamiskeHuffman-koden, eller rettere sagt selve algoritmen, er ikke gjenstand for endringer. Dette skyldes hovedsakelig at sannsynlighetene er direkte proporsjonale med frekvensene. Det er verdt å være spesielt oppmerksom på at den endelige vekten til filen eller den såkalte rotnoden vil være lik summen av antall bokstaver i objektet som skal behandles.

konklusjon

Huffman-koder - enkel og veletablerten algoritme som fremdeles brukes av mange kjente programmer og selskaper. Dets enkelhet og klarhet lar deg oppnå effektive resultater av komprimering av filer i alle størrelser og redusere lagringsdiskplassen deres betydelig. Med andre ord, Huffman-algoritmen er et lenge studert og utdypet skjema, hvis relevans ikke avtar til i dag.

huffman-koding
Og takket være muligheten til å redusere filstørrelse,overføringen deres over nettverket eller på andre måter blir enklere, raskere og mer praktisk. Arbeid med algoritmen kan du komprimere absolutt all informasjon uten å skade strukturen og kvaliteten, men med den maksimale effekten av å redusere filvekten. Huffman-koding har med andre ord vært og er fortsatt den mest populære og nåværende metoden for komprimering av filstørrelse.

likte:
0
Populære innlegg
Åndelig utvikling
mat
y