210 likes | 357 Views
The Wheel of Fortune. Honza Blažek - gimli@matfyz.cz. Roz šíření Definice Motivy D on ’t care symboly Algoritmy Datová struktura Trie LZW, LZ77 Off-Line g reedy textual substituton Implementace V ý sledky Literatura. Obsah. (abeceda)
E N D
The Wheel of Fortune Honza Blažek - gimli@matfyz.cz
Rozšíření Definice Motivy Don’t care symboly Algoritmy Datová struktura Trie LZW, LZ77 Off-Line greedy textual substituton Implementace Výsledky Literatura Obsah
(abeceda) je množina všech znaků vyskytujících se ve vstupu následně i v Trii značení (vstupní data) pole (řetězec) znaků s[], kde s[i] i {1, 2, …, |s|} (abeceda s don’t care) ∪{-}, kde – značí don’t care symbol (motif m) řetězec abecedy ∪{-}, kde m[1], m[|m|] (seznam výskytů) množina všech pozic na kterých začíná motiv m v řetězci s Lm = (l1, l2, …, lp), kde p<|s| (maximální motiv) je takový m, který nelze prodloužit při zachování Lm. (irredundant motiv) maximální motiv m se seznamem výskytů Lm, takovým že Lm Lm1∪ Lm2∪ … ∪ Lmp(tj. nepřekrývá se se žádným z ostatních motivů) Definice
don’t care symbolika nahrazení konkrétního symbolu v motivu don’t care symbolem ( - ) zavedení abecedy ∪ {-} příklad: neochotný ≠ neschopný nahradíme: ne-cho-ný = ne-cho-ný výhody don’t care: počty motivů se sníží četnost výskytu se zvýší slovník se zmenší nevýhody don’t care komprese se bez dalších úprav stává ztrátovou pro zachování bezztrátovosti je třeba komprimovat i vynechané znaky problematická implementace do algoritmů, tedy konkrétní výběr znaků, jenž se budou vynechávat více [4] Motivy a „don’t care“
Trie – klasická • stromová struktura • následníci vrcholu jsou všechny znaky požadované abecedy • slovo je vyhledáváno od kořene k listům a výsledné slovo je udáno cestou od kořene a hodnotu listu • všichni následovníci jednoho vrcholu mají stejný prefix • v daném vrcholu je 0 (pokud je vrchol prázdný) a slovo(pokud obsahuje hodnotu) • příklad • abeceda ={a, b, c} • slovo ve stromu je uloženo ve vrstvě podle počtu písmen
Trie – komprimovaná • def: vnitřní vrchol stromu • vrchol, který není kořen a má následovníky (listy nebo vnitřní vrcholy) • Trie -> komprimovaná Trie • obsahuje-li vnitřní vrchol v, jehož všichni synové (následovníci) jsou listy bez významu a jeden vnitřní vrchol w, je nahrazen tímto vrcholem. Takto se postupuje dokud takové vrcholy Trie obsahuje. • příklad • nahrazeny 3 vnitřní vrcholy
bezztrátový algoritmus Původně pro kompresi textu Dnes komprese i datových a grafických souborů (compress – Unix) Doplňuje ztrátové kompresní algoritmy komprese v reálném čase při nižších požadavcích na rychlost lepší kompresní poměr variabilní velikost okna symetrická komprese a dekomprese vlastní algoritmus v okně dané velikosti je vyhledáván maximální shodný řetězec nalezený ve floating window ten je zakódován pomocí ukazatele na toto místo v okně a délky tohoto řetězce při dekompresi je nalezený ukazatel nahrazen řetězcem z dané pozice dané délky LZ77
bezztrátový algoritmus Původně pro kompresi textu Dnes komprese i datových a grafických souborů (gzip – Unix) Doplňuje ztrátové kompresní algoritmy komprese v reálném čase při nižších požadavcích na rychlost lepší kompresní poměr variabilní hloubka slovníku symetrická komprese a dekomprese vlastní algoritmus v textu jsou vyhledávány stejné řetězce, každý řetězec je uložen do slovníku komprimovaný řetězec je vyhledán a místo něj je uložen odkaz na místo ve slovníku kde se vyskytuje dekomprese – je tvořen stejný slovník jako při kompresi a z něj jsou získávány původní řetězce původní text: abbaaabaab komprimovaný text: abbaaa[3,3]b LZW
Off-Line statistika textu probíhá před začátkem komprese (tedy předpokládá se vícenásobný přístup k datům) Greedy je vybrán motiv, který umožňuje maximální kompresi v aktuálním kroku Kombinace obou statistika je obnovována po každém komprimovaném motivu výběr motivu probíhá až do doby, kdy už nedochází ke kompresi Způsoby komprese Off-line1 Ke komprimovanému souboru je přiložen slovník s motivy, jejich délkou, počtem výskytů a výskyty Off-Line2 V textu je zachován jeden výskyt komprimovaného motivu a na něj je odkazováno Off-Line3 Ke komprimovanému souboru je přiložen slovník na který je v zakódovaném souboru odkazováno (jsou místo něj odkazy) Off-Line greedy textual substitution
Příklad Off-Line3 dictionary
Don’t care • ztrátová komprese (lc) • probíhá bez větších problémů, don’t care symboly jsou dopočítány dekodérem • bezztrátová komprese (llc) • chybějící symboly jsou v další Trii (tzv. resolver), slova jsou uložena odkazem do obou stromů • příklad: abbabbaaabaababaabababbaa
Zpracování vstupu u llc jsou výsledkem dva slovníky u lc probíhá obvyklým způsobem Ze slovníku se vybere motiv s |m|Lm maximálním a ten je zakomprimován Komprimovaný motiv se řídí Off-Linei předpisem problém s Off-Line2 (dodržení schématu je podstatně dražší) Opakování procedury ke komprimovanému textu se přidá resolver a potřebné slovníky Procedura se opakuje (zpracování vstupu, výběry motivů) Problémy zpracovávané motivy musí být irredundant algoritmus jinak ztrácí na efektivitě irredundant motivy se nepřekrývají – není třeba Trii stále obnovovat počet vln komprese musí být rozumně omezen časová náročnost kompresní poměr u lc dochází ke zbytečným ztrátám bez zvýšení efektivity Kombinace don’t care s greedy algoritmy
Implementace lc Ve vyhledávacím okně je nalezen nejvhodnější kandidát a na něj je z kódovaného signálu odkazováno Před začátkem komprese je stanoven index k určující maximální počet don’t care v řetězci k určuje výslednou kompresi a také ztrátu dekodér nahrazuje přímo konkrétním řetězcem z původního okna Implementace llc Nepoužívá se – nároky na pomocný slovník jsou příliš velké, jak časové tak prostorové LZ77 a don’t care
Implementace lc Komprese Při zpracování textu je budován slovník s již vynechanými znaky, každý uzel má jako své syny ∪{-}, don’t care symboly fungují ve slovníku jako defaultní cesta, pokud není nalezen hledaný řetězec Při kompresi daného řetězce je odkazováno do slovníku Dekomprese Ze slovníku je vždy rozbalen daný řetězec don’t care symboly jsou dopočítávány pomocí nějaké spojité funkce (v závislosti na signálu (obrázek, el. signál) Implementace llc Komprese Při budování slovníku je budován reslover Odkaz je slepen z odkazu do resolveru a do původního slovníku Dekomprese Resolver je dekomprimován Odkazy jsou rozbaleny a chybějící symboly jsou rozbaleny LZW a don’t care
Literatura [1] Alberto Apostolico and Laxmi Parida, “Compression and the Wheel of Fortune”, IEEE Computer Society Press, 2003 [2] Alberto Apostolico, Matteo Comin and Laxmi Parida, “Motifs in Ziv-Lempel-Welch Clef”, IEEE Computer Society Press, 2004 [3] Alberto Apostolico and Stefano Leonardi, “Off-Line Compression by Greedy Textual Substitution”, IEEE, 2000 [4] Alberto Apostolico and Laxmi Parida, “Incremental Paradigms of Motif Discovery”, IEEE, 2003
Odkazy • http://gimli.mysteria.cz/komprese/seminar