Kezdőoldal » Számítástechnika » Programozás » Huffman-kódolás -- egy bemenet...

Huffman-kódolás -- egy bemenetnek ugye valóban lehet több bitszinten eltérő, de egymással egyenértékű, helyes megoldása? Az egyes implementációk kimenetei miért térnek el (általában)?

Figyelt kérdés

okt. 4. 07:57
 1/2 2*Sü ***** válasza:
74%

A Huffman-kódolás ugye azon alapul, hogy a karakterekt/bájtokat gyakoriság szerint sorrendbe rakjuk, és ennek mentén bináris fát építünk belőle úgy, hogy lépésenként az első két elemet azok gyakoriságának összegével helyettesítve végezzük el a következő lépést.


Ha minden karakter gyakorisága eltérő, és minden lépésben olyan összeg keletkezik, ami nem szerepel a gyakoriság számsorába, akkor egyetlen megoldás lesz. De ha két elem, vagy részfa gyakorisága azonos, akkor a kialakuló sorrend erősen függ attól, hogy milyen rendezési, beszúrási algoritmust használunk. A kódolás egyik estben sem lesz hatékonyabb, vagy kevésbé hatékony, de más kódot fog adni.


Pl. legyen egy olyan adatunk, amiben csak három karaktert tartalmaz (mondjuk A, B és C), és ezek gyakorisága a következő:

A: 10 darab

B: 10 darab

C: 20 darab


Itt a kiinduló sorrend elve lehet az, hogy A,B,C és lehet az is, hogy B,A,C. Mindenképpen az A és a B kap egy közös gyökeret, de hogy melyik melyik oldalra kerül, az a rendezési algoritmustól is függ.


A második lépésben az A és B gyakoriságának összegét szúrjuk be, ami 10+10=20, itt a beszúró algoritmustól függ, hogy az a C gyakorisága elé vagy mögé kerül.


Tehát a következő fák alakulhatnak ki:

(A, B), C

(B, A), C

C, (A, B)

C, (B, A)


Így az A, B, C karaktereket kódja is eltérő lehet:

00, 01, 1

01, 00, 1

10, 11, 0

11, 10, 0


Látható, hogy a hatékonyság ugyanaz, hiszen A és B két bittel, C meg egy bittel van kódolva, mindegyik egy 60 bites kódot fog eredményezni.

okt. 4. 11:07
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:
55%

"egy bemenetnek ugye valóban lehet több bitszinten eltérő, de egymással egyenértékű, helyes megoldása?"


Lehet, sőt, van is.


"Az egyes implementációk kimenetei miért térnek el (általában)?"


Ez több dologtól függhet. A fő ok az eltérő algoritmus, ami a kódfát építi fel. Lásd az előző hozzászólást. A másik ilyen ok: az adat-elemzésben van a különbség.

Találkoztam már olyan implementációval is, ami az adatok egy kisebb részét nem is tömörítette.

okt. 4. 16:48
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!