28
Komprimace dat a kryptologie Tomáš Foltýnek [email protected] Kompresní algoritmy

Kompresní algoritmy

  • Upload
    mari

  • View
    61

  • Download
    0

Embed Size (px)

DESCRIPTION

Kompresní algoritmy. Opakování. Co je to kódování? Jaký je rozdíl oproti šifrování? Jak pracuje Shanon-Fanovo kódování? Jak pracuje Huffmanovo kódování?. Problém komprese. Balení věcí do skříně nebo batohu Úspora úložného prostoru Zjednodušení transportu - PowerPoint PPT Presentation

Citation preview

Page 1: Kompresní algoritmy

Komprimace dat a kryptologie

Tomáš Foltýnek

[email protected]

Kompresní algoritmy

Page 2: Kompresní algoritmy

Komprimace dat a kryptologie

Opakování

• Co je to kódování? Jaký je rozdíl oproti šifrování?

• Jak pracuje Shanon-Fanovo kódování?

• Jak pracuje Huffmanovo kódování?

Page 3: Kompresní algoritmy

Komprimace dat a kryptologie

Problém komprese

• Balení věcí do skříně nebo batohu

• Úspora úložného prostoru

• Zjednodušení transportu

• Nezáleží na kapacitě, problém nedostatku místa nakonec vždycky přijde

Page 4: Kompresní algoritmy

Komprimace dat a kryptologie

Komprese dat

• Komprese a komprimace jsou synonyma• Kompresní algoritmus transformuje řetězec

S1 délky d1 na řetězec S2 délky d2

• Požadujeme, aby:– d2 < d1

– I(S1) = I(S2), kde I je informační hodnota

• Jak to udělat?

Page 5: Kompresní algoritmy

Komprimace dat a kryptologie

Jak to udělat?

• Základní myšlenka: Vyhledáme nadbytečné informace, které vypustíme.– Viz teorie informace z minulé přednášky

• Příklad: qu v angličtině

• Jiná myšlenka: Vypustíme nějaké informace tak, “aby to nebylo poznat“.

• Text lze komprimovat 1:2, obrázky 1:50, video až 1:1000

Page 6: Kompresní algoritmy

Komprimace dat a kryptologie

Vlastnosti kompresních algoritmů

• Ztrátovost / bezeztrátovost komprese• Kompresní poměr k = d2/d1 (k<=1)

– někdy udáván v procentech– kompresní zisk: z = 1 – k

• Metody lze rozdělit na:– statické x adaptivní– symetrické x asymetrické– proudové x blokové

Page 7: Kompresní algoritmy

Komprimace dat a kryptologie

Historie kódování a komprese

• 1820 Braillovo písmo– pole 3x2 bodů– písmena, slova

• 1838 Morseovaabeceda– Samuel Morse– kódování pro

telegraf

Page 8: Kompresní algoritmy

Komprimace dat a kryptologie

Historie kódování a komprese

• 1800 Baudotův kód– 5bitový kód pro telegraf– písmena, znaky– přepínač LTRS/FIGS

• Dvacáté století– s rozvojem IT jde i rozvoj

kompresních algoritmů– Huffmann, Shannon, Lempel,

Ziv, Welch

Page 9: Kompresní algoritmy

Komprimace dat a kryptologie

Jednoduché kompresní metody

• Komprese slovníku– opakující se

písmena nahradíme číslem vyjadřující jejich počet

– 54 zn. 44 zn.

• Jaký je kompresní poměr a zisk?

Adam Adam

adaptace 3ptace

adekvátní 2ekvátní

adept 3pt

admirál 2mirál

afekt 1fekt

aféra 2éra

agenda 1genda

agent 4t

Page 10: Kompresní algoritmy

Komprimace dat a kryptologie

Metoda potlačení nul

• Jedna z nejstarších, v kombinaci s jinými dodnes používaná

• V souboru se vyskytují sekvence stejných znaků (mezery)

• Sekvenci nahradíme indikátorem a číslem• Dekomprese: načteme-li indikátor, přečteme číslo a

vypíšeme příslušný počet nul• Efektivní až při sekvenci tří nul• Posunutá stupnice => při 8bitovém kódování 258

až nul v jednom znaku

Page 11: Kompresní algoritmy

Komprimace dat a kryptologie

Metoda potlačení nul – příklad

• Vstupní text: AB---CAB----B-A-------CB

• Výstupní text: ABI0CABI1B-AI4CB

• Řetězec 24B zkomprimován na 16B

• Dekomprese: Při načtení I přečteme číslo (x) a vypíšeme x+3 nul

• I se nesmí vyskytovat v textu

Page 12: Kompresní algoritmy

Komprimace dat a kryptologie

Metoda bitové mapy

• Potlačení výskytu často opakovaného znaku (nuly)

• Ke každé osmiznakové sekvenci vytvoříme bitovou mapu výskytu nul

• Ukládáme vždy bitovou mapu a sekvenci nenulových znaků

• V souboru musí být alespoň 1/8 nul

Page 13: Kompresní algoritmy

Komprimace dat a kryptologie

Metoda bitové mapy – příklad

• Vstupní text: AB-CA--C

• Bitová mapa:11011001

• Výstupní text: <11011001>ABCAC

• Řetězec 8B zkomprimován na 6B

• Při dekompresi se doplňují nuly podle bitové mapy, ostatní znaky podle textu

Page 14: Kompresní algoritmy

Komprimace dat a kryptologie

Proudové kódování – RLE

• Run Length Encoding (kódování délkami sekvencí)• Vylepšení metody potlačení nul• Označme an posloupnost znaku a délky n• Každou posloupnost an nahradíme sekvencí Ian• Příklad

– Vstupní text: abbbbcccaaaaaaaabbbb– Výstupní text: aIb4cccIa8Ib4– Řetězec 20B zkomprimován na 13B

• Efektivní pro n>3

Page 15: Kompresní algoritmy

Komprimace dat a kryptologie

RLE s posunutou stupnicí

• Náhradu sekvence an provádíme jen při n>3

• Na výstup umístíme Ia(n-3)• V 1B až 258 opakování (místo 255)• Příklad

– Vstupní text: abbbbcccaaaaaaaabbbb– Výstupní text: aIb1cccIa5Ib1– Řetězec 20B zkomprimován na 13B

Page 16: Kompresní algoritmy

Komprimace dat a kryptologie

RLE bez indikátoru komprese

• Znak I se nesmí vyskytovat v textu – nevýhoda

• Každou sekvenci an pro n>=3 nahradíme sekvencí aaa(n-3)

• Dekomprese: Při načtení trojice stejných znaků načteme číslo – počet zbývajících znaků

• Nepotřebujeme indikátor komprese• Při n=3 dochází k expanzi!!! aaa0

Page 17: Kompresní algoritmy

Komprimace dat a kryptologie

Využití algoritmu RLE

• V grafických a zvukových souborech s malými změnami– malá barevná hloubka, jednoduchá kresba– záznam hlasu

• Hlavní algoritmus: *.PCX• Pomocný algoritmus: *.JPG• Faxy

– většina faxu je bílá, ojediněle černý bod

Page 18: Kompresní algoritmy

Komprimace dat a kryptologie

Kódování delta

• U některých typů dat nastává lineární růst (pokles)– hudba, animace

• První byte uložíme tak, jak je• Každý další byte je kódován jako rozdíl

(delta) oproti předcházejícímu bytu• Příklad

– Vstupní soubor: 10 12 14 16 15 22 32– Delta kódování: 10 2 2 2 -1 7 10

Page 19: Kompresní algoritmy

Komprimace dat a kryptologie

Kódování delta – použití

• Sekvence stejných znaků jsou nahrazeny sekvencemi nul

• Kromě toho získáme nové sekvence stejných znaků– následné kódování RLE má větší efekt

• Použití zejména v audioformátech

Page 20: Kompresní algoritmy

Komprimace dat a kryptologie

Algoritmus LZW84

• Lempel – Ziv – Welch• Vylepšení LZ78 (Lempel – Ziv 1978)• Slovníkový algoritmus pro bezeztrátovou

kompresi• Použitý ve formátech GIF, TIFF a PDF• Do roku 2004 chráněn patentem• Dnes již překonaný• Čím delší text, tím lepší kompresní poměr

Page 21: Kompresní algoritmy

Komprimace dat a kryptologie

Vývoj algoritmu LZW84

• LZ77– Používá klouzavé okno, v něm hledá opakující

se sekvence– Vstup: Leze leze po železe– Výstup: Leze l[2,3] po že[5,4]

• LZ78– Místo klouzavého okna tvoří vlastní slovník– Slovník narůstá a je třeba jej vyprazdňovat

Page 22: Kompresní algoritmy

Komprimace dat a kryptologie

LZW komprese

forall c doadd c to dictionary

w = ‘’while read(c) do

if wc is in dictionary then w = wcelse

add wc to dictionarywrite code(w)w = c

endifdone

Page 23: Kompresní algoritmy

Komprimace dat a kryptologie

LZW dekomprese

read(k)write(dictionary_entry(k))w = kwhile read(k) do

if k is in dictionary thenentry = dictionary_entry(k)

elseentry = w + w[0]

endifwrite(entry)add w+entry[0] to dictionaryw = entry

done

Page 24: Kompresní algoritmy

Komprimace dat a kryptologie

Předpřipravení dat pro kompresi

• Úkolem těchto algoritmů je modifikovat data tak, aby měla následná komprese lepší poměr– typicky se jedná o vhodnou reverzibilní

permutaci

• Burrows-Wheelerova transformace

• Move-to-front transformace

Page 25: Kompresní algoritmy

Komprimace dat a kryptologie

Burrows-Wheelerova transformace

• Příprava textu pro RLE• Výsledný text má stejnou délku

– plus znak začátku a konce– ale lépe se komprimuje

• Algoritmus transformace:– přidej k textu znak začátku a konce– vytvoř tabulku všech posuvů daného textu– seřaď řádky podle abecedy– na výstup zapiš poslední sloupec

Page 26: Kompresní algoritmy

Komprimace dat a kryptologie

Burrows-Wheelerova transformace

• Zpětná transformace– opakuj tolikrát, kolik je znaků ve vstupním

textu• vezmi aktuální tabulku a před první sloupec

vepiš vstupní text• seřaď řádky aktuální tabulky podle abecedy

– výsledkem je původní tabulka– vezmi řádek začínající znakem začátku

řádku

Page 27: Kompresní algoritmy

Komprimace dat a kryptologie

Move-to-front transformace

• Příprava textu tak, aby častější symboly byly kódovány nižšími čísly

• Proudové zpracování• Algoritmus transformace

– Začínáme se seřazenou abecedou (tabulkou)– Zapíšeme index symbolu na vstupu– V tabulce indexů právě použitý symbol

přesuneme na začátek• Kódování je reverzibilní

– zpětná transformace probíhá stejně

Page 28: Kompresní algoritmy

Komprimace dat a kryptologie

Další algoritmy

• PPM (Prediction by Partial Matching)– adaptivní statistická metoda– předpověď následujících dat na základě

předchozích

• CM (Context Mixing)– kombinace více statistických metod