Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Komprimace dat a kryptologie.  Myšlenka: Jak zakódovat vstupní data do jediného čísla?  Data se zakódují do zlomku n, 0 ≤ n < 1, n ∊ R  Bezztrátová.

Podobné prezentace


Prezentace na téma: "Komprimace dat a kryptologie.  Myšlenka: Jak zakódovat vstupní data do jediného čísla?  Data se zakódují do zlomku n, 0 ≤ n < 1, n ∊ R  Bezztrátová."— Transkript prezentace:

1 Komprimace dat a kryptologie

2  Myšlenka: Jak zakódovat vstupní data do jediného čísla?  Data se zakódují do zlomku n, 0 ≤ n < 1, n ∊ R  Bezztrátová komprese

3  Podle pravděpodobnosti výskytu znaku je každému znaku přiřazena poměrná část intervalu <0,1). To je interval rozdělení znaků. SymbolPravděpodobnostInterval a 0.30<0.00, 0.30) b 0.15<0.30, 0.45) ……… z0.10<0.9,1.00)

4  Potom postupně upřesňujeme počáteční interval <0,1), dokud není vyprázdněn vstup. Číslo n leží ve vypočítaném intervalu.  Zavedeme symboliku:  Horní hodnota intervalu … high  Spodní hodnota intervalu … low  Rozpětí intervalu … range

5  Výpočet nových hranic intervalu pro jednotlivé znaky:  high = low + range * horní hodnota intervalu znaku  low = low + range * spodní hodnota intervalu znaku  Výpočet probíhá pro všechny symboly na vstupu.

6  Číslo, které kóduje vstupní řetězec může být libovolné číslo z výsledného intervalu.  Obvykle se bere to, které má nejkratší binární zápis.

7  Chceme zakódovat řetězec „ace“.  Máme např. abecedu se znaky a,b,c,d,e.  Provedeme rozdělení pravděpodobnosti výskytu znaků do intervalu znaků <0,1). SymbolPravděpodobnostInterval a 0.30<0.00, 0.30) b 0.15<0.30, 0.45) c 0.25<0.45, 0.70) d 0.10<0.70, 0.80) e 0.20<0.80, 1.00)

8  Výpočet nových hranic intervalu pro každý znak.  Výsledný interval: <0.195,0.210)  Jako výslednou hodnotu vybereme např. n=0.20 KrokSymbolPředchozí range lowhigh 001 1a c e

9  Při dekódování není potřeba předávat výsledný interval, stačí jen zvolené číslo n.  Musíme mít ale k dispozici pravděpodobnosti výskytu znaků abecedy.  Číslo n postupně upravujeme a při každém kroku k němu najdeme příslušný znak podle intervalu, ve kterém právě leží n.  Nová hodnota n se vypočítá podle vztahu:  n = (n – low) / range  low, high … hodnoty intervalu, do kterého patří n  Opakujeme tak dlouho, dokud není celý řetězec dekódován.

10  n = 0.20  Stanovíme jednotlivé znaky:  Výsledný řetězec: „ace“ nlowhighrangeSymbol a c e

11  Problém: nekonečně dlouhý řetězec povede na interval s nekonečně velkou přesností.  Je potřeba nekonečně mnoho bitů pro uložení.  Řešení:  V proměnných low a high se ukádá jen několik posledních desetinných míst, zbytek je zapsán na výstupu.  V době kdy se rovnají MSB (nejvýznamnější bity) horní i dolní hranice intervalu, vypíšeme hotnotu na výstup a posuneme vlevo obě proměnné o jeden bit.

12  Pokud se MSB nerovnají, může nastat další další problém – podtečení.  V situaci, kdy jsou hranice intervalu velmi blízko a stále nemají stejný MSB, mění se dále už jen ostatní bity, nikoli MSB – nedojde k posunu bitů vlevo a přesnost se ztratí.  Podtečení nastává v případě, že dva MSB v low a se liší od jejich protějšků v high.

13  Řešení:  Posun bitů vlevo od druhého bitu.  Např.:  low = high =  podtečení posun: low = high =

14 begin spočti četnosti zdrojových jednotek output(četnosti) interval I := nový interval 0..1 rozděl I podle četnosti jednotek readSymbol(X) while (X!=EOF) do begin if (MSB(low) == MSB(high)) then begin output(MSB) případné zahozené číslice na výstup shift left high i low end else begin if (nebezpečí podtečení) then begin shift left high i low od druhé pozice end spočti nové low a high readSymbol(X) end output(zbytek) end

15  Srovnatelné s Huffmanovým kódováním  Komprese trvá déle, ale má lepší kompresní poměr.  JPEG  JBIG2


Stáhnout ppt "Komprimace dat a kryptologie.  Myšlenka: Jak zakódovat vstupní data do jediného čísla?  Data se zakódují do zlomku n, 0 ≤ n < 1, n ∊ R  Bezztrátová."

Podobné prezentace


Reklamy Google