Kompresní metoda ACB Associative Coder of Buyanovsky autor: George Buyanovsky připravil Tomáš Skopal podle knihy „Data Compression“ od D. Salomona, 1997, Springer, New York
ACB – Hlavní rysy slovníková bezeztrátová komprese velmi efektivní (lepší než RAR) vhodná pro kompresi textu relativně pomalá efektivita značně závislá na následném kódování není do detailu zveřejněna
Context & content posuvné okno podobně jako u LZ 77 text: swiss miss is missing contextcontent každý posun okna o jeden znak vytvoří novou položku context-content : ss m|iss is mis
Context & content posuvné okno podobně jako u LZ 77 text: swiss miss is missing contextcontent každý posun okna o jeden znak vytvoří novou položku context-content : ss m|iss is mis s mi|ss is miss
Context & content posuvné okno podobně jako u LZ 77 text: swiss miss is missing contextcontent každý posun okna o jeden znak vytvoří novou položku context-content : ss m|iss is mis s mi|ss is miss mis|s is missi
Kontextový slovník Struktura slovníku je tvořen položkami kontext-content setříděná historie všech kontextů- contentů zdrojového textu položka je zatřizována lexikálně podle svého kontextu vůči kontextům položek ve slovníku – a to zprava doleva...swiss |m...swi|ss m...s|wiss m...swis|s m...swiss|m...sw|iss m kontextycontenty
Kontextový slovník Stav slovníku je tvořen identicky pro kompresi i dekompresi narůstá o jednu položku pro každý zpracovaný znak textu (tj. na konci zpracování textu o n znacích má n položek) realizován ukazateli do zdroj. textu...swiss |m...swi|ss m...s|wiss m...swis|s m...swiss|m...sw|iss m kontextycontenty
Základní metoda ACB Aktuální stav slovníku: 1 …swiss |m 2 …swi|ss m 3 …s|wiss m 4 …swis|s m 5 …swiss| m 6 …sw|iss m Nová položka: swiss m|iss is missing zpracovaný text nový kontext Stav po šesti zpracovaných znacích (stejný u komprese i dekomprese) …
Základní metoda ACB Algoritmus jednoho kroku komprese Aktuální stav slovníku: 1 …swiss |m 2 …swi|ss m 3 …s|wiss m 4 …swis|s m 5 …swiss| m 6 …sw|iss m Nová položka kontext: swiss m content: iss is m… položka 2 2. Nalezení vzdálenosti nejvíce podobného contentu ve slovníku od pozice nalezeného kontextu (poloměr hledání) : položka 6, vzdálenost Nalezení nejvíce podobného kontextu ve slovníku (zprava doleva) :
Základní metoda ACB Algoritmus jednoho kroku komprese Aktuální stav slovníku: 1 …swiss |m 2 …swi|ss m 3 …s|wiss m 4 …swis|s m 5 …swiss| m 6 …sw|iss m Nová položka kontext: swiss m content: iss is m… 4 3. Zjištění délky shodné části obou contentů : 4. Zjištění prvního neshodného znaku v aktuálním contentu : 5. Na výstup jde trojice [vzdálenost, délka, znak] tj: 4 4 ´i´ [4, 4, ‘i’]
Základní metoda ACB Algoritmus jednoho kroku komprese Aktuální stav slovníku: 1 …swiss |m 2 …swi|ss m 3 …s|wiss m 4 …swis|s m 5 …swiss| m 6 …sw|iss m Nová položka kontext: swiss m content: iss is m… 6. Přidáme do slovníku nové položky, které vznikly postupným rozšířením (posunutím) kontextu o nově zakódované znaky : …swiss m|iss i …swiss mi|ss i …swiss mis|s i …swiss miss| i
Základní metoda ACB 1 …swiss miss |i 2 …swiss |miss i 3 …swiss mi|ss i 4 …swi|ss miss i 5 …swiss m|iss i 6 …s|wiss miss i 7 …swiss mis|s i 8 …swis|s miss i 9 …swiss miss| i 10 …swiss| miss i 11 …sw|iss miss i Stav slovníku s novými položkami:
Základní metoda ACB 1. Nalezneme nejvíce podobný kontext ve slovníku (zprava doleva) : Aktuální stav slovníku: 1 …swiss |m 2 …swi|ss m 3 …s|wiss m 4 …swis|s m 5 …swiss| m 6 …sw|iss m Poslední položka kontext: swiss m content: neznámý trojice: [4,4,´i´] položka 2 2. Z prvního členu trojice [v,d,z] a nalezené položky spočítáme pozici položky podobného contentu: v=4 položka 6 4 Algoritmus jednoho kroku dekomprese
Základní metoda ACB Aktuální stav slovníku: 1 …swiss |m 2 …swi|ss m 3 …s|wiss m 4 …swis|s m 5 …swiss| m 6 …sw|iss m Poslední položka kontext: swiss m content: neznámý trojice: [4,4,´i´] 4 Algoritmus jednoho kroku dekomprese 3. Z druhého členu trojice a nalezeného contentu získáme textový řetězec : d=4 „iss „ 4. Řetězec pošleme spolu s třetím členem trojice na výstup : 5. Doplníme slovník stejně jako u komprese i=´i´ „iss i„
Základní metoda ACB Parametry metody: max. délka kontextu max. délka contentu poloměr hledání contentu
Vylepšená metoda ACB …your |swiss mis …your swiss |mis …your swiss mi|s …your swi|ss mis …your swiss m|is …yo|ur swiss mis …young mis|creant… …unusual mis|fortune… …plain mis|ery… …no swiss mis|spelled it so… …no swiss mis|s is mistaken… …or swiss mis|read it to… …your swiss mis|s is missing… …always mis|placed it… …your swis|s mis 1. V každém kroku vytvoříme asociativní seznam tak, že ze slovníku vybereme všechny ty položky, jejichž kontexty se shodují s aktuálním kontextem v alespoň k znacích. Aktuální položka (řetězec S): …your swiss mis|s is mistress… pro k = 9
Vylepšená metoda ACB Aktuální položka (řetězec S): …your swiss mis|s is mistress… 2. Tento seznam setřídíme zleva doprava a zjistíme, mezi které položky padne řetězec S. 1. swiss mis|read it to… 2. swiss mis|s is missing… 3. swiss mis|s is mistaken… 4. swiss mis|s is trouble… 5. swiss mis|spelled it so… 3. swiss mis|s is mistaken… S. swiss mis|s is mistress… 4. swiss mis|s is trouble…
Vylepšená metoda ACB 3. Nyní budeme pracovat s trojicí řetězců jako s bitovými poli. A protože jsou setříděné, mohou nastat dva případy. a) 3. xx…x0zz…z0A S. xx…x0zz…z1B 4. xx…x1CC… b) 3. xx…x0CC… S. xx…x1zz…z0B 4. xx…x1zz…z1A xx…x – bity, ve kterých se shodují všechny tři řetězce zz…z – bity, ve kterých se shoduje řetězec S s jedním z ostatních řetězců
Vylepšená metoda ACB 4. Na výstup jde trojice [m,b,l], kde m je index předchozí položky před S, b je hodnota podtrženého bitu a l je délka řetězce zz…z a) 3. xx…x0zz…z0A S. xx…x0zz…z1B 4. xx…x1CC… b) 3. xx…x0CC… S. xx…x1zz…z0B 4. xx…x1zz…z1A
Vylepšená metoda ACB Dekomprese proběhne opět inverzně.
Kódování – statistika trojic Referenční příklad: Textový (html) soubor, 250 kB, povídka v češtině, Abeceda: znaky hodnot ASCII Základní metoda ACB Konečný výsledek komprese je podstatně závislý na konečném kódování
Kódování – statistika trojic posloupnost prvních členů trojic Ovlivňuje zejména parametr ‘poloměr hledání contentu’ Rozsah hodnot
Kódování – statistika trojic četnost prvních členů trojic
Kódování – statistika trojic posloupnost druhých členů trojic Rozsah hodnot
Kódování – statistika trojic četnost druhých členů trojic
Odkazy Buyanovsky G., Associative Coding, Monitor, duben 1994 Moskva, č. 8 Salomon D., Data Compression, 1997, Springer, New York Web: