Diskuze: Huffmanove kodovanie
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
U toho menšího zakódování bys měl problém s jeho zpětným dekódováním. Jak poznáš, že máš přečíst jenom jeden bit (znaky A a C) nebo dva (B a D)?
U Huffmanova kódování ti tento problém nenastane. V ideálním případě se navíc v kódovaném textu (pro tvůj případ) vyskytují znaky B a D málo často v porovnání s C (a zvláště pak s A).
Je to škoda, také existuje lepší kódování, aritmetické
kódování.
Jenže bylo mnoho let chráněno patentem, který vypršel až nedávno.
Vezmi si třeba svůj Huffmanův kód (tím myslím ten korektní), který
bys zkonstruoval například pro zprávu AAAACCDB
Výsledek by byl 00001010110111, to je 14 bitů
Tvůj nekorektní kód by sice dal 0000111101, což je jen 10 bitů, ale místo původní zprávy bys dekódoval AAAADDB.
V aritmetickém kódování bys stejnou zprávu kódoval 000000000001, což je jen 12 bitů.
Dále platí, že Huffmanův kód je optimální v případě, že frekvence prvků je mocnina 2, tedy F(p) = 2^-i, ale obecně není Huffman moc efektivní, zatímco aritmetické kódování je.
A ještě abych tě trochu zaujal, můžeš si zkusit zakódovat Huffmanovým kódem tuhle zprávu: AAAAAAAAAB.
Aritmetické kódování skončí na 011
Vypada to zaujimavo, idem sa s tym pohrat, uvidim aku to da kompresiu. Vdaka
Zobrazeno 5 zpráv z 5.