SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Teorie informace
SWI072 Algoritmy komprese dat2 Teorie informace u Informace obsažená ve zprávě z - nejmenší počet otázek typu ANO/NE, kterými lze odhalit obsah zprávy. u Hartleyho vzorec (1928) Je-li neznámá x prvkem N prvkové množiny, pak informace, kterou x nese, má hodnotu log 2 N bitů. |H|=N, (x 1,…, x k ) H k , buď S k nejmenší počet otázek, nutný k určení všech x i. log 2 N k S k log 2 N k +1 log 2 N S k / k log 2 N + 1/k S k / k - počet otázek, potřebný k určení jednoho prvku v průměrném případě.
SWI072 Algoritmy komprese dat3 Shannonův vzorec u Věta (Fadějev): Následující axiomy určují entropii jednoznačně až na mutiplikativní konstantu: –H 2 (p,1-p) je spojitá v oboru 0 p 1 a kladná alespoň v jednom bodě –H n je symetrická funkce svých proměnných (n = 2,3,...) –H n+1 (p 1,...,p n-1,q 1,q 2 ) = H n (p 1,...,p n )+ p n H n (q 1 /p n, q 2 /p n ), kde p n =q 1 +q 2 >0, p i 0, p p n = 1. u Buď X diskrétní náhodná veličina s oborem hodnot H a pravděpodobnostní funkcí p(x) = P(X=x) pro x H. u Claude Shanon (1948): Entropie H(X) –analogie ze statistické mechaniky (Boltzmann) –axiomatický přístup –souvislost s kódováním
SWI072 Algoritmy komprese dat4 Definice u Kód C pro diskrétní náhodnou veličinu X s oborem hodnot H je zobrazení C: H {0,1} * pravděpodobnostní funkcí p(x) = P(X=x) pro x H. Definujme C * : H * {0,1} * takto: C * (x 1...x k ) = C(x 1 )...(x k ). Kód C je jednoznačně dekódovatelný, pokud u,v H *, C * (u)=C * (v) u=v. u Pro x H bude l(x) značit délku kódového slova C(x). u Průměrná délka L(C) kódu C pro diskrétní náhodnou veličinu X s pravděpodobnostní funkcí p(x) L(C)= x H p(x)l(x)
SWI072 Algoritmy komprese dat5 Kraft-McMillanova nerovnost u Věta: Délky l 1,l 2, … kódových slov jednoznačně dekódovatelného kódu C splňují i 2 -l i 1. Naopak, pokud přirozená čísla l 1,l 2, … splňují nerovnost, pak existuje prefixový kód s kódovými slovy o těchto délkách. u Ověřte, zda je následující kód jednoznačně dekódovatelný, případně najděte prefixový kód se slovy stejné délky u Kolik znaků musí mít abeceda k zakódování všech 26 písmen (bez háčků), když kódová slova mají mít délku nejvýše 2 a pro samohlásky dokonce 1?
SWI072 Algoritmy komprese dat6 Horní a dolní odhady u Buď C jednoznačně dekódovatelný kód pro náhodnou veličinu X. Pak H(X) L(C). u Pro libovolný optimální prefixový kód C pro náhodnou veličinu X platí H(X) L(C) < H(X) + 1. Pro průměrnou délku kódového slova L Huffmanova kódu platí H L Je-li p max maximální pravděpodobnost výskytu znaku, pak l p max je-li p max < 0.5 l p max je-li p max 0.5
SWI072 Algoritmy komprese dat7 Příklad
SWI072 Algoritmy komprese dat8 Huffmannův kód nad rozšířenou abecedou Pro průměrnou délku kódového slova L Huffmanova kódu nad abecedou rozšířenou na bloky n znaků platí H L 1/n
SWI072 Algoritmy komprese dat9 Horní a dolní odhady - aritmetické kódování Pro průměrnou délku kódového slova L pro aritmetické kódování platí H L m kde m je délka vstupního řetězce.