3.3.2 Kódování pomocí tabulky
Průvodce studiem
|
Doba potřebná ke studiu
Přibližný čas, který strávíte studiem této kapitoly, je 20 - 30 minut.
Příklad
Zadání:
Zakódujme 4 znaky Huffmanovým kódem, známe-li pravděpodobnosti jejich výskytu, a spočítejme průměrnou délku kódového slova.
| Znak | Pravděpodobnost |
| E |
0,4 |
| F |
0,2 |
| G | 0,2 |
| H | 0,2 |
Řešení:
Krok 1 - budeme postupně vytvářet tabulku.
-
V prvním sloupci jsou zdrojové znaky uspořádané podle pravděpodobnostního výskytu.
-
Sečteme poslední dvě pravděpodobnosti (provedeme redukci) a výsledek zařadíme podle velikosti mezi ostatní pravděpodobnosti - třetí sloupec - redukce je odlišena modrou barvou.
-
Znovu sečteme poslední dvě pravděpodobnosti a výsledek opět zařadíme podle velikosti - pátý sloupec.
-
Spodním dvěma znakům v každém sloupci přiřadíme kódové znaky 1 a 0.
| E (0,4) |
|
E (0,4) | |
G, H, F (0,6) | 1 |
| F (0,2) |
|
G, H (0,4) | 1 |
E (0,4) | 0 |
| G (0,2) | 1 |
F (0,2) | 0 |
|
|
| H (0,2) |
0 |
|
|
Krok 2 - přiřazení kódových slov jednotlivým zdrojovým znakům.
-
Uděláme si novou tabulku, v prvním sloupci jsou všechny zdrojové znaky.
-
Dále budeme vycházet z předchozí tabulky a budeme postupovat od zadu. Znaky G, H, F mají přiřazenou 1 - ve druhém sloupci nově vytvářené tabulky budou mít hodnou 1 a znak E má přiřazenou 0 - ve druhém sloupci nově vytvářené tabulky bude mít hodnou 0. Tím je vyplněný druhý sloupec nové tabulky.
-
V předchozí tabulce se posuneme dopředu. Znaky G, H mají 1 - ve třetím sloupci nově vytvářené tabulky budou mít hodnou 1 a znak F má 0 ve třetím sloupci nově vytvářené tabulky bude mít hodnou 0. Tím je vyplněný třetí sloupec nové tabulky.
-
Posuneme se opět dopředu. Znak G má 1 - ve čtvrtém sloupci nově vytvářené tabulky bude mít hodnou 1 a znak H má 0 ve čtvrtém sloupci nově vytvářené tabulky bude mít hodnou 0.
-
V posledním sloupci nové tabulky jsou kódová slova pro jednotlivé zdrojové znaky.
| E |
0 |
|
0 |
|
| F |
1 |
0 |
10 |
|
| G |
1 |
1 | 1 |
111 |
| H |
1 |
1 |
0 |
110 |
Všiměte si také, že nám vyšel prefixový kód. Toto je vlastnost Huffmanova kódování. Toto kódování je tedy jednoznačně dekódovatelné.
Průměrná délka kódového slova je:
d* = 1x0,4 + 2x0,2 + 3x0,2 + 3x0,2 = 2