Algoritmy komprese dat



Podobné dokumenty
Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Komprese dat (Komprimace dat)

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Komprese a dotazování nad XML dokumenty

Kompresní techniky. David Bařina. 15. února David Bařina Kompresní techniky 15. února / 37

Informační systémy ve zdravotnictví

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

TGH07 - Chytré stromové datové struktury

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Grafové algoritmy. Programovací techniky

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

Základy algoritmizace. Pattern matching

Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole

ZÁPADOČESKÁ UNIVERZITA V PLZNI

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

Grafové algoritmy. Programovací techniky

ADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Suffixové stromy. Osnova:

STRUKTURA RASTROVÝCH DAT

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP


Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill. Optimalizace komprese XML. Závěr

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3.

TGH07 - Chytré stromové datové struktury

Zobrazování barev Josef Pelikán CGG MFF UK Praha.

DIPLOMOVÁ PRÁCE. Petr Uzel Entropické kodéry

Interpret jazyka IFJ2011

Použití dalších heuristik

Spojová implementace lineárních datových struktur

Reprezentace dat. INP 2008 FIT VUT v Brně

Neuronální kódování a přenos informace

Algoritmy komprese dat

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Bc. Lukáš Unger. Vylepšení víceproudé komprese

Jan Ondruš LZPXj - vylepšení LZP algoritmu

Archivační a komprimační programy

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Algoritmy na ohodnoceném grafu

Komprese dat (KOD) Semestrální projekt Implementace RLE, BWT a LZW

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

NPRG030 Programování I, 2018/19 1 / :03:07

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat

Algoritmy výpočetní geometrie

Paměťový podsystém počítače

Datové typy a struktury

DIPLOMOVÁ PRÁCE. Efektivní ukládání html stránek

Algoritmy II. Otázky k průběžnému testu znalostí

1. Databázové systémy (MP leden 2010)

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

IB111 Úvod do programování skrze Python

TECHNICKÁ UNIVERZITA V LIBERCI

Kódy a kódování dat. Binární (dvojkové) kódy. Kód Aikenův

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Prioritní fronta, halda

Porovnání komprimačních metod grafických formátů z hlediska míry kvality obrazu

Kompresní algoritmy grafiky. Jan Janoušek F11125

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Programovací jazyk Pascal

Dynamické datové struktury III.

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Algoritmy I, složitost

PA152. Implementace databázových systémů

Datové struktury 2: Rozptylovací tabulky

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Matice sousednosti NG

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Dynamické programování

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Informatika Datové formáty

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Vyhledávání řetězců. a b a c a a b. a b a c a b. a b a c a b

Neztrátové komprimační algoritmy v počítačové grafice

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Časová a prostorová složitost algoritmů

Stromy, haldy, prioritní fronty

Pohled do nitra mikroprocesoru Josef Horálek

Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n)

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

Teorie informace: řešené příklady 2014 Tomáš Kroupa

Základní datové struktury III: Stromy, haldy

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Optimalizace & soft omezení: algoritmy

1. Formáty grafických dat

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Struktura a architektura počítačů (BI-SAP) 11

POPIS STANDARDU CEN TC278/WG4. 1 z 5. Oblast: TTI. Zkrácený název: Zprávy přes CN 4. Norma číslo:

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Katedra počítačů FEL

aneb jak se to tam všechno vejde?

Transkript:

Algoritmy komprese dat Slovníkové metody Phillip Walter Katz (1962-2000) 2.12.2015 NSWI072-10

Slovníkové metody komprese dat Idea opakující se fráze uloženy do slovníku výskyty fráze v textu ukazatel do slovníku Problémy a v praxi používaná řešení: NP-těžký problém konstrukce optimálního slovníku hladový algoritmus slovník musí znát i dekodér dynamické metody Jacob Ziv, Abraham Lempel [LZ77] A universal algorithm for data compression. IEEE Trans. Inform. Theory, IT-23(3):337-343, 1977. [LZ78] A compression of individual sequences via variable-rate coding. IEEE Trans. Inform. Theory, IT-24(5):530-536, 1978. 2

LZ77 Posuvné okno Inicializace prohlížecí okno (search buffer) 3 aktuální okno (look-ahead buffer) prohlížecí okno vyplníme mezerami do aktuálního okna načteme začátek vstupu V posuvném okně vyhledáme co nejdelší slovo S takové, že S začíná v prohlížecím okně S je shodné s nějakou předponou slova v aktuálním okně

LZ77 Posuvné okno Slovo S je zakódováno trojicí i,j,z, kde i je vzdálenost začátku slova S od začátku aktuálního okna j = S z je znak následující S 7,4,r prohlížecí okno Celé okno je posunuto o 4 aktuální okno j+1 znaků doprava

LZ77 Posuvné okno prohlížecí okno aktuální okno Velikosti posuvného okna 2 12 až 2 16 gzip 2 15 B Velikost aktuálního okna desítky až stovky B gzip 256 B 5

Příklad 0,0,d 7,4,r 3,5,d 6

Příklad: dekódování 0,0,d, 7,4,r, 3,5,d 7,4,r, 3,5,d 7

Příklad: dekódování 3,5,d 8

Analýza Pomalá komprese, rychlá dekomprese Rychlost komprese lze zvýšit použitím speciálních datových struktur současně však rostou paměťové nároky Typická aplikace jedna komprese vícenásobná dekomprese 9

Varianta LZSS Storer, Szymanski (1982) místo trojice (i,j,z) buďto (i,j) nebo z bitový indikátor k rozlišení: dvojice ukazatelů znak dvojice ukazatelů potřebuje stejnou paměť jako p znaků kóduj dvojicemi jen fráze délky >p» jinak kopíruj na výstup jednotlivé znaky prohlížecí okno cyklická fronta [0..N] 5 6 7 8 9 10 0 1 2 3 4 N=10 Možná implementace kódové slovo 16b, i = 11, j =5 bitové indikátory vždy po 8 v 1B 10

Variace na téma LZ77 LZB (Bell, 1987) LZSS s úspornějším kódováním ukazatelů (i,j) i binární kód rostoucí délky - nejprve 1b - po načtení 2. znaku 2b - po načtení 4. znaku 3b atd. j kód γ 11

Variace na téma LZ77 LZH (Brent, 1987) LZSS s Huffmanovým kódem pro ukazatele 1. průchod: LZSS + výpočet četností 2. průchod: statický Huffmanův kód Problém velké tabulky četností číslo i ve dvojici (i,j) je rozděleno na dvě části (každá s max hodnotou N) jedna tabulka četností pro položky všech 4 typů 12

Co mají společné?.zip.gz.jar.cab.png Metoda Deflate autor Phil Katz, 1991 původně pro PKZIP 2 kombinace slovníkové metody LZ77 a Huffmanova kódování 13

Metoda Deflate Phil Katz (1991) Jean-loup Gailly, Mark Adler: zlib (1996) http://www.gzip.org/zlib/rfc-deflate.html LZSS + Huffmanův kód velikost posuvného okna N = 32kB velikost aktuálního okna F = 258B» délka shody 3..258 Vstup rozdělen do bloků, 3b hlavička 1 bit: poslední blok ANO/NE 2 bity: typ bloku 14

Deflate (pokračování) 3 typy bloků 1: bez komprese 2: fixní kódovací tabulky pro Huffmanův kód 3: Huffmanův kód dle statistiky ze vstupních dat Blok typu 3 na začátku bloku 2 Huffmanovy stromy jeden pro literály (0..255) a délky shody (3..258)» jediná abeceda 0..285» 0..255 pro literály, 256 = end-of-block» 257..285 pro délku shody (+ extra bity) druhý pro posunutí 15

Deflate: kódování délky shody Extra Extra Extra Code Bits Length(s) Code Bits Lengths Code Bits Length(s) ---- ---- ------ ---- ---- ------- ---- ---- ------- 257 0 3 267 1 15,16 277 4 67-82 258 0 4 268 1 17,18 278 4 83-98 259 0 5 269 2 19-22 279 4 99-114 260 0 6 270 2 23-26 280 4 115-130 261 0 7 271 2 27-30 281 5 131-162 262 0 8 272 2 31-34 282 5 163-194 263 0 9 273 3 35-42 283 5 195-226 264 0 10 274 3 43-50 284 5 227-257 265 1 11,12 275 3 51-58 285 0 258 266 1 13,14 276 3 59-66 16

Deflate: kódování posunutí Extra Extra Extra Code Bits Dist Code Bits Dist Code Bits Distance ---- ---- ---- ---- ---- ------ ---- ---- -------- 0 0 1 10 4 33-48 20 9 1025-1536 1 0 2 11 4 49-64 21 9 1537-2048 2 0 3 12 5 65-96 22 10 2049-3072 3 0 4 13 5 97-128 23 10 3073-4096 4 1 5,6 14 6 129-192 24 11 4097-6144 5 1 7,8 15 6 193-256 25 11 6145-8192 6 2 9-12 16 7 257-384 26 12 8193-12288 7 2 13-16 17 7 385-512 27 12 12289-16384 8 3 17-24 18 8 513-768 28 13 16385-24576 9 3 25-32 19 8 769-1024 29 13 24577-32768 17

Deflate (pokračování) Vyhledávání řetězců v prohlížecím okně -> hašování tabulka obsahuje řetězce délky 3 řetězce ve spojových seznamech uspořádány dle stáří parametr omezující max délku seznamu Rozšíření hladové strategie nejprve se hledá primární shoda posun okna o 1 znak, sekundární shoda, je-li výhodnější, kóduje se literál + sekundární shoda rychlý režim: je-li primární shoda dostatečná, sekundární se neprovádí Kompresní poměr 30-40 % pro textové soubory 18

Phillip Walter Katz 1962 2000 198? archivační program ARC (SEA) shareware distribuce včetně zdrojového kódu v C Katz: shareware PKARC stejný formát jako ARC rychlejší, kritické funkce v asembleru SEA podává žalobu Katz použil zdrojový kód ARC včetně komentářů a chyb uživatelé stranili Katzovi jeho software rychlejší 19

Phillip Walter Katz 1989 PKZip 1993 PKZip 2 = Deflate otevřený formát standard pro kompresi souborů na různých platformách U 2000 (alkohol) 2004 PKWARE: SecureZIP PKZIP + 256 Bit AES Encryption 20

Datové struktury pro posuvné okno trie (information retrieval) stromová reprezentace slovníku sufixový trie pro slovo x reprezentuje všechny přípony slova x x = tata$ x = tata $ a 1 t a 3 t 5 a 4 t a 2 21 a t $ 1 a t $ 3 a t 5 $ zarážka zajistí, aby každý list reprezentoval příponu slova x a 4 $ 2

Patricia kompaktní trie Nevýhoda trie: kvadratická prostorová složitost Practical Algorithm to Retrieve Information Coded in Alphanumeric (D.R.Morrison, 1968) obdržíme eliminací všech vrcholů různých od kořene, které mají jediného syna a t $ 1 a t $ 3 $ a t 5 $ a 4 $ 2 Sufixový strom pro slovo x = kompaktní sufixový trie pro x 22 ta $ 1 ta $ 3 $ a 5 $ 4 ta$ 2

Sufixový strom T(abaabaab) 1 abaabaab$ 2 baabaab$ 3 aabaab$ 4 abaab$ 5 baab$ 6 aab$ 7 ab$ 8 b$ 9 $ 1,1 9,9 a b 2,2 $ 9 4,5 9,9 ab b 2,2 $ 3,5 aab 6,9 8 9,9 aab$ $ 3,5 9,9 9,9 6,9 3 aab $ 6 $ aab$ 7 5 2 6,9 aab$ 9,9 $ 1 4 1 2 3 4 5 6 7 8 9 a b a a b a a b $ 23

Sufixový strom v posuvném okně Reprezentace textu v posuvném okně sufixový strom Ukkonen (1992) z T(x) vytvoří T(xa) pro a Σ v amortizovaném čase O(log α) Fiala, Greene (1989) z T(ax) vytvoří T(x) pro a Σ v amortizovaném čase O(1) vyžaduje ukazatele z dětí na rodiče M.Senft (2005) komprese řízená sufixovým stromem 24

LZP (prediction, C.Bloom, 1996) hašovací funkce prohlížecí okno kontext délky N aktuální okno 25

Komprese P:= hash(c); hash(c):= Q; L :=0; hašovací funkce P Q if P nil then L := max. délka shodné předpony řetězců P a Q fi if L = 0 then output znak Q jako literál; posuň okno o 1 políčko doprava else output(l); posuň okno o L políček doprava fi 26

Problémy Start: prohlížecí okno:= prvních N znaků na vstupu for i:=1 to N do read(z); output(z) Co když se řetězec P neshoduje s kontextem C? Posun okna nutná aktualizace všech ukazatelů v hašovací tabulce (a) vstup rozdělen do bloků, délka okna = délka bloku (b) okno = cyklická fronta C.Bloom: LZP: A new data compression algorithm, DCC 96, p.425. http://www.cbloom.com/src/index_lz.html 27

LZP1 kontext délky N = 3 H = ((C>>11)^C) & 0xFFF velikost tabulky = 2 12, 14b položky délka okna = 2 14 příznak literál délka L 1 dva literály 01 literál, L 00 L příznaky a délky v 1B, následují literály literál - 8b ASCII délka L - kód v tabulce 28

LZP1 - příklad vstup: xyabcabcabxy výstup: "x""y""a""b""c""a""b"3"x""y" 11101101 "xyabcabxy" LZP2 Literály kódovány statickým Huffmanovým kódem 29

LZP3 kontext délky N = 4, 16b hodnota hašovací funkce H = ((C >> 15)^C) & 0xFFFF velikost tabulky = 2 16, položka tabulky = (ukazatel P, kontext C) while N>1 and (H(C) = nil or kontext H(C) C) do H(C) := nil; N-- if N=1 then output(literál) 30

LZP4 kontext C délky N = 5 I := kontext délky 4 H = ((I>>15)^I) & 0xFFFF bcde nopq a P H 31

Nevýhody LZ77 Omezený výhled prohlížecího okna větší délka =>» lepší komprese» náročnější prohledávání Omezená délka aktuálního okna => omezení délky shody 32