290 likes | 379 Vues
Kompresn í metoda ACB. A ssociative C oder of B uyanovsky. 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)
E N D
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 Context & content • posuvné okno podobně jako u LZ 77 text: swiss miss is missing • každý posun okna o jeden znak vytvoří novou položku context-content : ss m|iss is mis
context content Context & content • posuvné okno podobně jako u LZ 77 text: swiss miss is missing • 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 Context & content • posuvné okno podobně jako u LZ 77 text: swiss miss is missing • 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
...swiss |m ...swi|ss m ...s|wiss m ...swis|s m ...swiss|m ...sw|iss m kontexty contenty 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 kontexty contenty 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
zpracovaný text nový kontext Základní metoda ACB Nová položka:swiss m|iss is missing 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 Stav po šesti zpracovanýchznacích (stejný u komprese i dekomprese) …
položka 2 položka 6, vzdálenost 4 4 Základní metoda ACB Nová položka kontext: swiss m content: iss is m… Algoritmus jednoho kroku komprese 1. Nalezení nejvíce podobného kontextu 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 2. Nalezení vzdálenosti nejvíce podobného contentu ve slovníku od pozice nalezeného kontextu (poloměr hledání) :
Nová položka kontext: swiss m content: iss is m… Algoritmus jednoho kroku komprese 4 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 ´i´ 4 4 Základní metoda ACB 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’]
Základní metoda ACB Nová položka kontext: swiss m content: iss is m… Algoritmus jednoho kroku komprese 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 : 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 …swiss m|iss i …swiss mi|ss i …swiss mis|s i …swiss miss| i …swiss miss |i
Základní metoda ACB Stav slovníkus novými položkami: 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
položka 2 v=4 položka 6 4 Základní metoda ACB Poslední položka kontext: swiss m content: neznámý trojice: [4,4,´i´] Algoritmus jednoho kroku dekomprese 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 2. Z prvního členu trojice [v,d,z] a nalezené položky spočítáme pozici položky podobného contentu:
d=4 „iss „ Základní metoda ACB Poslední položka kontext: swiss m content: neznámý trojice: [4,4,´i´] Algoritmus jednoho kroku dekomprese 3. Z druhého členu trojice a nalezeného contentu získáme textový řetězec : 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 4. Řetězec pošleme spolu s třetím členem trojice na výstup : i=´i´ „iss i„ 4 5. Doplníme slovník stejně jako u komprese
Základní metoda ACB • Parametry metody: • max. délka kontextu • max. délka contentu • poloměr hledání contentu
Vylepšená metoda ACB 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. …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 Aktuální položka (řetězec S): …your swiss mis|s is mistress… pro k = 9
3.swiss mis|s is mistaken… S. swiss mis|s is mistress… 4.swiss mis|s is trouble… Vylepšená metoda ACB 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… Aktuální položka (řetězec S): …your swiss mis|s is mistress…
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 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. 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ů
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 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
Vylepšená metoda ACB Dekomprese proběhne opět inverzně.
Kódování – statistika trojic • Konečný výsledek komprese je podstatně závislý na konečném kódování Referenční příklad: Textový (html) soubor, 250 kB, povídka v češtině, Abeceda: znaky hodnot ASCII Základní metoda ACB
Rozsah hodnot Kódování – statistika trojic posloupnost prvních členů trojic Ovlivňuje zejména parametr ‘poloměr hledání contentu’
Kódování – statistika trojic četnost prvních členů trojic
Rozsah hodnot Kódování – statistika trojic posloupnost druhých členů trojic
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: http://www.ms.mff.cuni.cz/~jtro8667/vytvory/acb/acb.htm