Huffman kódolás - tömörítés - fa - online dekódolás

A Huffman kódolás visszafejtése

Huffman kódoló generátor

Szerszám Huffman kódolással tömörítésre/kicsomagolásra. A Huffman kódolás egy veszteségmentes adattömörítési algoritmus, amely bináris fát és változó hosszúságú kódot használ az előfordulás valószínűsége alapján.

Válaszok a kérdésekre

Hogyan kell kódolni a Huffman Coding segítségével? (Titkosítási elv)

A kód Huffman használja a betűk megjelenési gyakoriságát a szövegben, számítsa ki és rendezze a karaktereket a leggyakoribbaktól a legkevésbé gyakran.

Példa: A DCODEMESSAGE üzenet háromszoros E betűt, kétszer D és S betűt és 1 alkalommal A, C, G, M és O betűt tartalmaz. .

A. Algoritmusa Huffman létrehoz egy fát, amely a levelek számára megtalálja a betűket, és az érték (vagy súly) alapján megadja az előfordulásuk számát az üzenetben. Ennek a fának a létrehozásához keresse meg a 2 leggyengébb csomópontot (a legkisebb súly), és akassza fel őket egy új csomópontra, amelynek súlya a 2 csomópont összege. Ismételje meg a műveletet, amíg csak egyetlen csomópontja nem lesz, amelyik lesz a gyökér (és amelynek súlya az üzenet teljes betűinek száma lesz).

Ezután az egyes karakterek bináris kódját úgy kapjuk meg, hogy a fát a gyökértől a levélig haladjuk, és mindegyik csomópontban feljegyezzük a pályát (0 vagy 1).

Példa: A DCODEMOI egy fa létrehozásához vezet, így a leggyakrabban jelenlévő D és O rövid kóddal rendelkezik. D = 00, O = 01, I = 111, M = 110, E = 101, C = 100 vagy 00100010010111001111 (20 bit)

huffman

Hogyan lehet dekódolni a Huffman-kódot? (A visszafejtés elve)

Kód visszafejtése Huffman megköveteli a levelezési fa vagy szótár ismeretét (bináris kód karakterek)

A megfejtéshez keresse meg a fát a gyökértől a levelekig (általában fentről lefelé), amíg meg nem kap egy meglévő levelet (vagy a szótárban ismert értéket).

Példa: Dekódolja a 00100010010111001111 üzenetet, a 0 keresés nem ad levelezést, majd folytassa a 00-val, amely a D betű kódja, majd 1 (nem létezik), majd 10 (nem létezik), majd 100 (C kódja) stb.