Datenkompression mit der Burrows-Wheeler-Transformation (BWT) Andreas Junghans, IM2
Inhalt Verfahren zur Datenkompression Die Burrows-Wheeler-Transformation (BWT) Datenkompression mit der BWT Implementierung Zusammenfassung und Ausblick
Verfahren zur Datenkompression verlustfrei und verlustbehaftet Wörterbücher und Statistiken Wörterbücher: schnell Statistiken: gute Kompression BWT BWT
Verfahren zur Datenkompression adaptiv und statisch Ströme und Blöcke Code-Tabelle/Wörterbuch 0010110101011010 0010110101011010 0010110101011010 0010 1101 0101 1010
Die Burrows-Wheeler-Transformation BWT = Vorsortierung (reversible Transformation) verlustfrei statistisch adaptiv oder statisch blockorientiert (ab 100 KB) Geschwindigkeit vergleichbar Wörterbüchern Effizienz vergleichbar Statistiken
Die Burrows-Wheeler-Transformation Vorwärtstransformation HelloCello ooHCeellll
Die Burrows-Wheeler-Transformation Rücktransformation
Die Burrows-Wheeler-Transformation Eigenschaften Gruppen gleicher Zeichen wenige, kurze Unterbrechungen a: rray swap(pStart a: rray localIndex = a: rray * (n a: rray (i.e. the posit a: rray (needed for rec a: rray (which must be A: rray = new byte[1]; a: rray and outputs the a: rray for * sortin a: rray must not be ide a: rray of <code>int</c a: rray of MTF codes
Datenkompression mit der BWT Ablauf BWT MTF RLE + Huffman / AC MTF: Move-To-Front-Coding („Nach-vorne-Codierung“) RLE: Run-Length-Encoding (Lauflängen-Codierung) AC: Arithmetische Codierung
Datenkompression mit der BWT MTF: Move-To-Front-Coding „A“ „A“ „B“ 1 1 1 1 1 „A“ ... ... ... ... 65 „A“ 65 „@“ 65 „@“ 65 „?“ „AAB“ 66 „B“ 66 „B“ 66 „B“ 66 „@“ 65, 0, 66 67 „C“ 67 „C“ 67 „C“ 67 „C“ ... ... ... ... 255 255 255 255 255 255 255 255
Datenkompression mit der BWT MTF: Move-To-Front-Coding
Implementierung Speicher sparen (800 GB vs. 4,4 MB) Effiziente Sortierung RLE vor BWT (Rekursionstiefe!) Huffman mit Codes für 0-Reihen Effizienzvergleich Datei Original WinZip bzip2 Eigenbau SRC-124.pdf 107.864 87.628 (81%) 89.355 (83%) 90.898 (84%) opngl32p.cpp 873.331 76.600 (9%) 52.221 (6%) 57.510 (7%) powerpnt.exe 4.247.604 2.151.382 (51%) 2.030.911 (48%) 2.132.403 (50%)
Zusammenfassung und Ausblick BWT ist Vorsortierung von Daten Ergebnis läßt sich meist sehr gut komprimieren Einsatz von RLE und statistischen Verfahren Andere Kompressionsmöglichkeiten? Andere Transformationen? Verlustbehaftete Kompression?