3.1 Teorie kódování
|
Přibližný čas, který strávíte studiem této kapitoly, je 30 - 40 minut.
Kódování je předpis, který každému prvku konečné množiny A přiřazuje právě jedno slovo v konečné množině B. Je to tedy zobrazení
K: A → B,
A - zdrojová abeceda, její prvky jsou zdrojové znaky,
B - kódová abeceda, její prvky jsou kódové znaky.
Kódové slovo K(a) je konečná, neprázdná posloupnost prvků z množiny B, tedy posloupnost b1, b2, ..., bk, kde k je délka kódového slova.
Kód je množina kódových slov.
Prosté kódování je takové, kdy různým kódovým znakům odpovídají vždy různá kódová slova.
Kódování je jednoznačně dekódovatelné, jestliže ze znalosti zakódované zprávy můžeme vždy jednoznačně určit zdrojovou zprávu. Jinými slovy, jestliže je kódování zpráv prostým zobrazením.
Blokové kódování délky n je takové prosté kódování, při kterém všechna kódová slova mají stejnou délku, a to n. Toto kódování je jednoznačně dekódovatelné.
Prefixový kód je takový kód, který má tu vlastnost, že žádný symbol jeho kódové abecedy není předponou (prefixem, začátkem) jiného (delšího) symbolu abecedy. Pokud je nějaký kód prefixový, je možné řetězce symbolů tohoto kódu jednoznačně dekódovat, aniž by mezi jednotlivými symboly musely být oddělovače. Mezi prefixové kódy patří i Huffmanovy kódy.
Kód s následující kódovou abecedou je prefixový kód:
{ 1, 21, 22, 231, 232, 24, 35, 535, 7 }
Kód s následující kódovou abecedou není prefixový kód:
{ 1, 21, 22, 221, 222, 24, 35, 355, 7 }
U prvního kódu není žádný symbol předponou jiného delšího symbolu. U druhého kódu se však symbol 22 objevuje jako předpona symbolů 221 a 222, symbol 35 je předponou symbolu 355, takže se nejedná o prefixový kód.
Z řetězce symbolů prvního kódu, např. 2312224535121, lze jednoznačně určit, že posloupnost původních symbolů byla 231, 22, 24, 535, 1, 21. U řetězce symbolů druhého kódu, např. 2472217, však toto jednoznačně určit nelze. Původní posloupnost mohla být jak 24, 7, 22, 1, 7, tak i 24, 7, 221, 7.
Označme délky kódových slov pro dané kódování d1, d2, ..., dr a odpovídající pravděpodobnosti výskytu těchto slov p1, p2, ..., pr, kde r je počet kódových slov. Průměrná délka kódového slova je
d* = d1p1 + d2p2 + ... + drpr
Úspěšnost komprese můžeme popsat parametrem faktor komprese, jenž udává, jakou část původního prostoru zabírají údaje po kompresi.
| Faktor komprese = | rozměr výstupního proudu |
| rozměr vstupního proudu |
Jinou možností je jeho převrácená hodnota - kompresní poměr. Čím větší je kompresní poměr, tím úspěšnější je komprese.
| Kompresní poměr = | rozměr vstupního proudu |
| rozměr výstupního proudu |