Ähnliche Dokumente
2. Digitale Codierung und Übertragung

Dynamisches Huffman-Verfahren

16 - Kompressionsverfahren für Texte

Kodierungsalgorithmen

Textkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3)

Ziv-Lempel-Kompression von André Lichei

Eigenschaften von Kompressionsverfahren

Kompressionsverfahren für Texte

Seminar. Codierungstheorie

Einleitung. Kapitel 1

Kompressionsverfahren

Einführung in die Informatik II Aus der Informationstheorie: Datenkompression

Farb-Fernsehsignal (Composite FBAS)

Digitalisierung. analoges Signal PAM. Quantisierung

Wann sind Codes eindeutig entschlüsselbar?

Algorithmus zur komprimierten Übertragung von Textdaten an mobile Endgeräte

Mehrwegbäume Motivation

Huffman-Kodierung. Fachbereich Medieninformatik. Hochschule Harz. Huffman-Kodierung. Referat. Henner Wöhler. Abgabe:

4.4 Anwendungen von Suffixbäumen und Suffix-Arrays

6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Basisinformationstechnologie II

Seminar über Algorithmen, SS2004. Textkompression. von Christian Grümme und Robert Hartmann

Hauptdiplomklausur Informatik Februar 2006: Multimedia Systems

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

Referat zum Thema Huffman-Codes

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Effiziente Algorithmen und Komplexitätstheorie

Molekulare Bioinformatik

Gierige Algorithmen Interval Scheduling

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Wintersemester 2012/13. Dr. Tobias Lasser. 7 Fortgeschrittene Datenstrukturen

Basisinformationstechnologie II

Textkompression: Burrows-Wheeler-Transformation

Image Compression. Kompression. Beseitigung der unnötigen Daten... Redundanz. Vorlesung FH-Hagenberg SEM. Backfrieder-Hagenberg. Backfrieder-Hagenberg

2. Repräsentation und Codierung von Daten. Klassen von Codierverfahren

Digitale Medien. Übung zur Vorlesung. Vorlesung: Heinrich Hußmann Übung: Renate Häuslschmid

Kompression: Lempel/Ziv-Algorithmen

Run Length Coding und Variable Length Coding

Image Compression. Kompression. Beseitigung der unnötigen Daten... Redundanz. Vorlesung FH-Hagenberg SEM. Backfrieder-Hagenberg. Backfrieder-Hagenberg

Universität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen

15 Optimales Kodieren

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Datenkompression. Vortrag von Markus Durzinsky Student der Otto-von-Guericke-Universität Magdeburg

2. Digitale Codierung und Übertragung

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Klausur Digitale Medien

2.2 Der Algorithmus von Knuth, Morris und Pratt

PPM - Prediction by Partial Matching

Übung zur Vorlesung. Digitale Medien. Vorlesung: Heinrich Hußmann Übung: Renate Häuslschmid, Hanna Schneider

Probeklausur Digitale Medien

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Algorithmen und Datenstrukturen (für ET/IT)

JPEG Kompression technische Realisierung

Proseminar. Thema: Shannon-Fano und Huffman Verfahren

Wie muss der Eingabetext beschaffen sein, damit er sich gut komprimieren lässt?

Arithmetisches Codieren

Mathematik für Information und Kommunikation

Algorithmen und Datenstrukturen (für ET/IT)

Proseminar WS 2002/2003

Datenkompression. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 167

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

(Prüfungs-)Aufgaben zur Codierungstheorie

Arbeiten im Datennetz der Universität Regensburg

6 Ü B E R S E T Z U N G E N U N D C O D I E R U N G E N. 6.1 von wörtern zu zahlen und zurück Dezimaldarstellung von Zahlen Num 10

Algorithmen und Datenstrukturen 2

Isomorphie von Bäumen

ADS: Algorithmen und Datenstrukturen 2

Kapitel 2 Quellencodierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Algorithmen und Datenstrukturen 2-3. Seminar -

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Beispielhafte Testfragen (auch aus Schülerreferaten, Fragen können redundant sein, keine Audio Kompression berücksichtigt):

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records.

2.7 Der Shannon-Fano-Elias Code

Häufige Mengen ohne Kandidatengenerierung. FP-Tree: Transaktionen. Konstruktion eines FP-Trees. FP-Tree: Items

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

A2.3: Zur LZ78 Komprimierung

Einführung in die medizinische Bildverarbeitung WS 12/13

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

Textkomprimierung. Stringologie. Codes. Textkomprimierung. Alle Komprimierung beruht auf Wiederholungen im Text. Textkomprimierung

Effiziente Algorithmen und Komplexitätstheorie

Computer Science Unplugged Algorithmen zur Textkompression

1 Grundlagen. 1.1 Erste Grundbegriffe 1.2 Kryptographische Systeme 1.3 Informationstheoretische Grundlagen

Suchen und Sortieren Sortieren. Heaps

Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.

7. Sortieren Lernziele. 7. Sortieren

Informatik II, SS 2014

Algorithmen und Datenstrukturen Heapsort

9. Vektoren. (auch Felder/array)

Technische Informatik - Eine Einführung

Redundanz. Technische Informationsquelle Entropie und Redundanz Huffman Codierung. Martin Werner WS 09/10. Martin Werner, Dezember 09 1

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Informatik-Seminar Thema 6: Bäume

Vorkurs Informatik WiSe 16/17

Vorlesung Datenstrukturen

Textkompression: Burrows-Wheeler-Transformation

Effiziente Algorithmen und Komplexitätstheorie

Greedy Algorithms - Gierige Algorithmen

2. Digitale Codierung und Übertragung

Transkript:

Textkomprimierung Multimedia-Seminar Leiter: Prof. Dr. Vornberger Referent: Stefan Fabrewitz Fr. 7..

Inhaltsverzeichnis Inhaltsverzeichnis Einleitung 5. Historie.............................. 5 Grundlagen 7. Modellvorstellung: statistische Modelle............. 7. Maßzahlen............................. 8 3 Run Length Encoding (Lauflängenkomprimierung) 4 Huffman-Methode 3 4. Statisches Verfahren:....................... 3 5 Adaptive Huffman-Methode 7 5. Verfahren:. Variante...................... 7 5. Verfahren mit ESCAPE -Funktion............... 9 6 LZW - Algorithmus 6. Varianten:............................. 6. Kennzeichen:........................... 6.3 Algorithmus............................ 7 BWT- Algorithmus 5 7. BWT:............................... 5 7. Dekodierung:........................... 7 8 Quellen und Literatur 3 3

4 INHALTSVERZEICHNIS

Kapitel Einleitung. Historie Beginn: In den 4er Jahren, den frühen Jahren der Informationstechnologie, begann die Entwicklung neuer effektiver codierungstechniken. Bemerkenswert: Zu dieser Zeit gab es noch keine Digitalcomputer, jedoch wurde damals schon das Binärsystem zur Codierung eingesetzt. Thema Mittlerweile existier eine Unzahl an Komprimierungsmethoden. Viele davon sind für ganz bestimmte Zwecke entwickelt worden und benötigen spezielle Hardwarekomponenten ( z.b. Stimmen-Komprimierungsschemata, die auf die festen Bandbreiten von Telefonnetzen abgestimmt sind ). Solche hardwareabhängigen Verfahren werden hier nicht betrachtet. Die softwaretechnisch bewerkstelligen Verfahren lassen sich in zwei Gruppen einteilen: Verlustfreie Verfahren: Diese Verfahren werden zur Komprimierung von Texten, Programmcodes, Binärdateien, Bildern usw. eingesetzt. Man wählt sie immer dann, wenn das Original ohne Verfälschungen wieder rekonstruiert werden muß oder soll. Einige bedeutende Vertreter werden hier behandelt. Verlustbehaftete Verfahren: Sie werden auf Informationen angewandt, die aus digitalisiertem Material gewonnen wurden ( wie Bild- und Audiomaterial ). Die Digitalisierung selbst stellt schon einen Informationsverlust dar. Die Verfahren werden dann benutzt, wenn ein kaum 5

6 KAPITEL. EINLEITUNG wahrnehmbarer Verlust an Information zu erheblich gesteigerten Komprimierungsraten führt. Diese Verfahren werden hier nicht beschrieben. Das sehr verbreitete JPEG-Verfahren hat Herr Vornberger in [5] beschrieben. Einteilung der verlustfreien Verfahren Die statistischen Komprimierungsverfahren benutzen zur Codierung einzelner Zeichen ein statistisches Modell. Die Komprimierung wird durch Codierung der Zeichen als Bitstrings erreicht, die weniger Bits als die Original-Zeichen beanspruchen. Die tabellengesteuerten oder Dictionary-Verfahren kodieren nicht Zeichen als Bitstrings variabler Länge, sondern Zeichenketten variabler Länge werden als Token kodiert. Diese Token stellen einen Verweis in ein Phrasenverzeichnis ( Tabelle, Dictionary ) dar. Sind die Token kleiner als die Phrasen, die sie ersetzen, kommt es zur Komprimierung. Diese Strategie entspricht der bei Datenbanken üblichen Technik, mit Indizes auf große Datensätze zu verweisen, die in einer Tabelle organisiert sind.

Kapitel Grundlagen. Modellvorstellung: statistische Modelle Datenkomprimierung = Modellierung + Codierung Datenkomprimierung: Ein Strom von Symbolen wird in entsprechende Codes umgewandelt. Der resultierende Ausgabestrom sollte kleiner als der Eingabestrom der Symbole sein. Modell: Bestimmt die Wahrscheinlichkeit der auftretenden Symbole. Codierer: Anhand der vom Modell bestimmten Wahrscheinlichkeit legt er den Code für ein Symbol fest. Implementierung: Auch im Programm sollten Modell und Codierung getrennt werden. Insbesondere gibt es oft verschiedene Methoden der Modellierung, die alle mit dergleichen Codierung arbeiten können. +-----------+ +--------+ Wahr- +-----------+ +-----------+! Eingabe-!!! schein-!!! Ausgabe-!!!--------->! Modell!-------------! Codierung!---------!!! Strom! Symbole!! lichkeit!! Codes! Stream! +-----------+! +--------+ +------->+-----------+ +-----------+ +-------------------+ 7

8 KAPITEL. GRUNDLAGEN. Maßzahlen Komprimierungsgrad KG: Es sind verschiedenen Definitionen gebräuchlich, hier soll folgende benutzt werden: KG =( kompr. Größe urspr. Größe ) KG = % bedeutet: Der erzeugte Code hat dieselbe Größe wie die ursprünglichen Symbole. KG = 3% bedeutet: Der komprimierte Code nimmt 3% des Umfanges der ursprünglichen Symbole ein. Entropie: Def. ( Informationstheorie): Ein Maß, wieviel Informationen in einer Meldung untergebracht sind. Je höher der Entropiegehalt einer Meldung ist, desto mehr Information beinhaltet sie. Entropiegehalt E eines Symbols: E ist definiert als negativer Logatithmus der Wahrscheinlichkeit W des Symbols. Damit der Informationsgehalt einer Meldung in Bits festgestellt werden kann, drückt man die Entropie mit Hilfe des Logarithmus zur Basis aus: E = log W Die Entropie eines Symbols ist keine absolute Größe. Von der Wahrscheinlichkeit W des Symbols hängt auch dieentropie vom verwendeten Modell ab. Entropie einer Meldung: Summe der Entropien der Einzelsymbole. Beispiel: Die Wahrscheinlichkeit WdesBuchstaben e sei. Dann gilt: 6 E(e)= log 6 E(e)=4bit

.. MASSZAHLEN 9 Dann ist die Entropie der Zeichenkette eeeee: E(eeeee)=5E(e)=bit Wird zur Codierung der Zeichenkette eeeee der Standard-8-Bit- ASCII-Zeichensatz benutzt, benötigt man 5 Byte entsprechend 4 Bit für diese Kodierung. Der Unterschied zwischen den Bit der Entropie und den 4 Bit des ASCII-Codes ist das Potential, das die Datenkomprimierung zu nutzen versucht. Ordnung eines Modells: Sie legt fest, wieviele der vorhergehenden Symbole für die Berechnung der Wahrscheinlichkeit in Betracht gezogen werden. Modell. Ordnung: vorhergehende Symbole bleiben unberücksichtigt Modell. Ordnung: das letzte Symbol wird berücksichtigt Bsp.: u hat bei einem Modell. Ordnung z.b. eine Wahrscheinlichkeit von %, bei einem Modell. Ordnung hat es nach demzeichen q z.b. eine Wahrscheinlichkeit von 95%.

KAPITEL. GRUNDLAGEN

Kapitel 3 Run Length Encoding (Lauflängenkomprimierung) Diese Codierung überträgt eine Folge von identischen Zeichen als Paar Anzahl,Zeichen»: ffl Anzahl x < 8: übernimmt die folgenden x + Zeichen ffl Anzahl x >= 8: das nächste Zeichen kommt 57 - x mal vor Das bedeutet: Es können maximal 8 Zeichen übernommen bzw. kopiert werden.

KAPITEL 3. RUN LENGTH ENCODING (LAUFLÄNGENKOMPRIMIERUNG)

Kapitel 4 Huffman-Methode 4. Statisches Verfahren: Veröffentlicht: D. Huffman, 95. Aufbau eines Baumes: Vorbereitung: ffl Liste aller Symbole mit Häufigkeiten ( = Gewichtung ) erstellen ffl Liste nach Gewichtung sortieren ffl die Symbole werden als freie Knoten eines noch zu konstruierenden Baumes gekennzeichnet ffl die Häufigkeit eines Symbols wird als Gewichtung des Knoten gespeichert wiederholen: ffl die beiden freien Knoten mit den geringsten Gewichten werden gesucht ffl ein Elternknoten wird für diese Knoten erzeugt ffl die Gewichtung des Elternknotens entspricht der Summe der Kindknoten ffl der Elternknoten wird in die Liste der freien Knoten hinzugefügt ffl die beiden Kindknoten werden aus der Liste der freien Knoten entfernt 3

4 KAPITEL 4. HUFFMAN-METHODE ffl dem Kindknoten mit dem höheren Gewicht wird als Code eine, dem mit dem geringeren Gewicht eine zugewiesen ffl diese Schrittfolge wird wiederholt, bis nur noch ein freier Knoten übrig ist, dieser ist die Wurzel des Baumes

4.. STATISCHES VERFAHREN: 5 Beispiel: String: H a l l o B a l l o Schritt : l 4 o a B H Schritt : H B a o 4 l Schritt 3: 4 B H l 4 o a Schritt 4: H B 4 l 6 a o 4 Schritt 5: H B 4 l 6 a o 4

6 KAPITEL 4. HUFFMAN-METHODE Generierung des Codes: ffl Ausgangspunkt: der äußere Knoten des entsprechenden Symbols ffl vom Knoten wandert man zur Wurzel ffl die Bit-Codes der passierten Knoten werden aneinandergereiht und bilden den Code des Symbols ffl diese Codes sollten unterschiedlich lang sein und in ihrer Summe kleiner als die Codelänge der ursprünglichen Symbole Code des Beispiels: H a l l o B a l l o 8 Bit Bit Vergleich: mit Shannon-Famo-Methode: ffl die Unterschiede sind im allgemeinen nicht sehr groß ffl Huffman hat bewiesen: keine Methode, die mit ganzzahliger Bitlänge arbeitet, komprimiert stärker als seine ( unter Verwendung des gleichen Modells und derselben Ordnung des Modells ) Einsatzgebiete: ffl FAX-Geräte ffl JPEG-Komprimierung

Kapitel 5 Adaptive Huffman-Methode Probleme der nicht-adaptiven Huffman-Methode: ffl macht keine Aussage zu dem zu verwendeten Modell aus ffl die Häufigkeiten der Symbole müssen irgendwie ermittelt werden ffl die Häufigkeitstabelle muß übertragen werden und mindert die Komprimierung ffl bei einem Wechsel zu Modellen höherer Ordnung wird die erzielte höhere Komprimierung durch die zu übertragende wesentlich größere Tabelle teilweise zunichte gemacht alternativer Ansatz: adaptive Verfahren ffl zu Beginn wird keine Tabelle mit den Häufigkeiten der Symbole ermittelt ffl das Modell wird anhand der zuvor gelesenen Daten und ohne Wissen über zukünftige statistische Daten während der Komprimierung ständig aktualisiert ffl es werden keine Häufigkeits-Tabellen übertragen 5. Verfahren:. Variante Eine Möglichkeit besteht darin, nach jedem Lesen eines Symbols den Huffman-Baum neu aufzubauen. Dies ist aber viel zu ineffizient. 7

8 KAPITEL 5. ADAPTIVE HUFFMAN-METHODE Anpassen des Huffman-Baumes: ffl Voraussetzung: ein gültiger Huffman-Baum ( Geschwister-Eigenschaft muß; erfüllt sein ) Binärbaum jeder Knoten ( außer Wurzel ) hat einen Geschwisterknoten ( genau einen zweiten Knoten mit demselben Elternknoten ) alle Knoten sind nach steigender Gewichtung geordnet der Baum wird in der Regel mit dem verwendeten Zeichensatz initialisiert, wobei alle Zeichen per Voreinstellung das Gewicht bekommen ffl Symbol hinzufügen: zunächst wird der Zähler des zu dem Symbol gehörenden Blattknotens inkrementiert dann wird die Inkrementierung bei den Elternknoten fortgesetzt, bis die Wurzel erreicht ist ffl Baum auf Gültigkeit ( Geschwister-Eigenschaft ) prüfen und anpassen: Eine Anpassung ist notwendig, sobald der inkrementierte Knoten über dieselbe Gewichtung verfügt, wie der nächst höhere Knoten in der Liste Tauschregel, wenn eine Anpassung notwendig wird: Beispiel: Λ der zu inkrementierende Knoten wird mit dem höchsten in der Liste getauscht, der dieselbe Gewichtung besitzt Λ dann wird der getauschte Knoten dekrementiert ffl gegeben sei der Baum aus dem vorigen Kapitel, der durch den String HalloBallo gebildet wurde ffl es soll das Zeichen a hinzugefügt werden ffl der Blattknoten hat das Gewicht ffl es existieren weiter Knoten mit dem Gewicht ffl getauscht wird mit dem Knoten, der am weitestens rechts und dann zeilenweise oben liegt

5.. VERFAHREN MIT ESCAPE - FUNKTION 9 ffl die zu tauschenden Knoten sind in der Zeichnung unterlegt: 4 6 4 a o l H B ffl nach dem Tausch sieht der Baum folgendermaßen aus: 4 7 3 4 o a l H B 5. Verfahren mit ESCAPE - Funktion Das einfache adaptive Verfahren (. Variante ) muß mit allen Symbolen, die vorkommen können, initialisiert werden ( gleichverteilt: alle Symbole erhalten per Voreinstellung das Gewicht ). Falls nicht alle Symbole in dem Eingabestrom vorkommen, wäre es sinnvoller, nur die vorhandenen Symbole in den Baum einzutragen: Verfahren: ffl Falls ein neues Symbol auftritt, wird es in den Baum eingetragen ffl dann wird nicht sein Code, sondern das Symbol selbst ( in der Standard- Codierung ) übertragen ffl zur Kennzeichnung der Übertragung eines Symbols wird ein ESCAPE- Code vorangestellt

KAPITEL 5. ADAPTIVE HUFFMAN-METHODE ffl zu Beginn wird der Huffman-Baum nur mit dem ESCAPE-Code und dem END-OF-FILE-Code initialisiert Initial-Codebaum: EOF ESC

Kapitel 6 LZW - Algorithmus Tabellengesteuerter bzw. Dictionary-Algorithmus 6. Varianten: LZ77: Lempel, Ziv 977 LZ78: Lempel, Ziv 978 LZW: Lempel, Ziv, Welch 984 6. Kennzeichen: ffl nur Tabellen-Indizes werden übertragen ffl die Tabellenlänge korrespondiert mit der Länge des übertragenen Codes Bsp.: -Bit-Codierung ergibt 496 Tabelleneinträge ( = 496 ) 6.3 Algorithmus Initialisierung: ffl bei ASCII-Zeichen ( oder sonstigen 8-Bit-Symbolen ) werden die Tabellen-Indizes bis 55 für die Ordnungszahlen des ASCII-Codes vergeben ffl ab Index 56 finden neue Einträge Platz

KAPITEL 6. LZW - ALGORITHMUS Pack-Algorithmus: ffl lese aus dem Eingabe-Stream solange Zeichen und akkumuliere sie in String S, wie sich S in einem Tabellen-Eintrag befindet ffl sobald ein Zeichen x gelesen wird, so daß sich der String Sx nicht in der Tabelle befindet, mache folgendes: leite den Tabellen-Index des Strings S in den Ausgabe-Stream füge den String S zur Tabelle hinzu ersetze String S durch das Zeichen x ffl wiederhole diese Sequenz, bis das Ende des Eingabe-Streams erreicht ist Beispiel: Tabelle Index vor Codierung nach Codierung......... 65 A A 66 B B 7 H H 97 a a 8 l l o o......... 56 frei» Ha 57 frei» al 58 frei» ll 59 frei» lo 6 frei» ob 6 frei» Ba 6 frei» all 63 frei» frei»

6.3. ALGORITHMUS 3 Codierung des Strings H a l l o B a l l o Eingabe S S Sx Sx Tabellen Ausgabe Zeichen String Index String Index Eintrag Code H H 7 a H 7 Ha 56:Ha 7:H l a 97 al 57:al 97:a l l 8 ll 58:ll 8:l o l 8 lo 59:lo 8:l B o ob 6:oB :o a B 66 Ba 6:Ba 66:B l a 97 al 57 l al 57 all 6:all 6:al o l 8 lo 59 EOF lo 559 lo 59 59:lo Hinweis zur Codierung: Um Platz zu sparen, beginnt man bei einer -Bit-Codierung nicht sofort mit -Bit-Codes, sondern: ffl 9-Bit-Codes bis zum Tabelleneintrag 5 ffl -Bit-Codes bis zum Tabelleneintrag 4 ffl -Bit-Codes bis zum Tabelleneintrag 48 ffl -Bit-Codes bis zum Tabelleneintrag 496 Nun ist die Tabelle voll. Zur Reinitialisierung wird die Tabelle in der Regel gelöscht und neu aufgebaut. Dies führt auch zu guten adaptiven Eigenschaften, besonders, wenn sich die Struktur des Eingabezeichenstromes ändert Einsatzgebiete: ffl UNIX-COMPRESS-Programm ffl GIF-Bild-Komprimierung

4 KAPITEL 6. LZW - ALGORITHMUS

Kapitel 7 BWT- Algorithmus Nachteile der adaptiven tabellengesteuerten und statistischen Verfahren: ffl schlechte Komprimierung in der Anfangsphase ffl starke Verschlechterung der Komprimierung, wenn sich die statistischen Eigenschaften im Datenstrom ändern ( wenn z.b. in einer Programm- Library nach dem Binärcode die Namen der Proceduren folgen ) 7. BWT: ffl hier ist ein Weg gefunden, um fast beliebig lange Kontexte für die Vorhersage des folgenden Zeichens zu verwenden ffl allerdings: Dekodierung ist erst möglich, wenn ein ganzer Block übertragen wurde und nicht kontinuierlich während der Übertragung ( z.b. ist der Aufbau eines Bildes während der Übertragung nicht möglich ) ffl 994 von Michael Burrows und David Wheeler veröffentlicht Methode: ffl BWT ist an sich gar kein Komprimierungsalgorithmus, sondern dient nur zur Transformation der Strings ffl Vorteil: die transformierten Daten lassen sich sehr effiktiv packen 5

6 KAPITEL 7. BWT- ALGORITHMUS Algorithmus: ffl Beispiel-String: HalloBallo ffl Erstellung einer quadratischen Matrix:. Zeile: Original-String jede weitere Zeile: enthält den String der Zeile darüber, nur um ein Zeichen nach links rotiert S H a l l o B a l l o a l l o B a l l o H l l o B a l l o H a 3 l o B a l l o H a l 4 o B a l l o H a l l 5 B a l l o H a l l o 6 a l l o H a l l o B 7 l l o H a l l o B a 8 l o H a l l o B a l 9 o H a l l o B a l l ffl Alphabetisches Sortieren der Zeilen: die. Spalte ist mit F ( first ) die letzte Spalte ist mit L ( last ) gekennzeichnet S F L 5 B a l l o H a l l o H a l l o B a l l o a l l o B a l l o H 6 a l l o H a l l o B l l o B a l l o H a 7 l l o H a l l o B a 3 l o B a l l o H a l 8 l o H a l l o B a l 4 o B a l l o H a l l 9 o H a l l o B a l l

7.. DEKODIERUNG: 7 Eigenschaft der L-Spalte: ffl Betrachtet man die Zeilen der Matrix als Kontext für die Zeichen in der Spalte L, so ergibt sich: ffl da die Kontexte alphabetisch sortiert sind, stehen ähnliche Kontexte nahe beieinander ffl ähnlichen Kontexten gehen meist gleiche Zeichen voran ffl d.h, es ist zu erwarten, daß in Spalte L Ketten gleicher Zeichen aufeinander folgen Übertragung: ffl übertragen werden die L-Spalte und die Anfangsposition des Original- Strings in der F-Spalte ffl vor der Übertragung wird der L-String natürlich noch mit anderen Verfahren komprimiert 7. Dekodierung: ffl F-Spalte rekonstruieren durch Sortieren der L-Spalte: ffl in der Praxis läßt sich das Sortieren vereinfachen: man zählt und speichert in der L-Spalte alle 56 zeichen deren Häufigkeit und konstruiert daraus für jedes Zeichen seinen Anfangsindex in der F-Spalte... ffl um den Original-String zu erhalten, wird ein < Transformationsvektor T() konstruiert ffl für ein Zeichen der F-Spalte mit dem Index i zeigt der Wert des Vektors T(i) auf den Nachfolger des Zeichens

8 KAPITEL 7. BWT- ALGORITHMUS i T S 5 3 S 5 S S S 4 S 3 S 6 5 S 6 4 S 6 S 5 S 7 7 S 7 6 S 3 8 S 3 7 S 8 9 S 8 8 S 4 S 4 9 S 9 S 9 ffl da man weiß, bei welchem Index man beginnen muß ( Anfangsposition in der F-Spalte wurde übertragen ), kann man durch wiederholte Anwendung des Vektors den Original-String rekonstruieren Konstruktion des Transformationsvektors T: S i L F L 5 o B a l l o H a l l o o H a l l o B a l l o H a l l o B a l l o H 6 3 B a l l o H a l l o B 4 a l l o B a l l o H a 7 5 a l l o H a l l o B a 3 6 l l o B a l l o H a l 8 7 l l o H a l l o B a l 4 8 l o B a l l o H a l l 9 9 l o H a l l o B a l l ffl um das Prinzip klar zu machen, ist in der Abbildung die L-Spalte links neben die F-Spalte eingetragen, da die L-Spalte die Vorgängerzeichen der F Spalte enthält ffl wir wissen, daß der Original-String in Zeile der Spalte F mit H beginnt ffl nach der nächsten Links-Rotation muß sich das H in der L-Spalte befinden: in Zeile

7.. DEKODIERUNG: 9 ffl dies ist der Wert von T, also: T() = ffl offensichtlich ist das Zeichen in der F-Spalte der. Zeile, das a, das. Zeichen des Original-Strings ( denn in der F-Spalte stehen immer die Folgezeichen der L-Spalte ) ffl durch Wiederholen dieses Schematas läßt sich der Original-String konstruieren Problem: Ein Problem stellt sich noch, wenn wir das Zeichen in der L-Spalte suchen, das zu a der F-Spalte in Zeile gehört: In der L-Spalte tritt a doppelt auf: Gehört das a aus F() zu L(4) oder L(5)? Regel: Gleiche Zeichen in der F- und L-Spalte gehören entsprechend ihrer Reihenfolge in den Spalten zusammen Begründung: ffl die Zeilen und 3, die mit a beginnen, sind alphabetisch sortiert ffl durch Rotation nach links entstehen daraus die zeilen 4 und 5 ffl da bei dieser Rotation dasselbe Zeichen a vorne entfernt und hinten angehängt wurde, entspricht die Reihenfolge von 4 und 5 derer von und 3, denn die zeilen 4 und 5sindauch sortiert Methode: ffl Hieraus ergibt sich für unseren String, daß das a an Position F() zu dem a an Position L(4) gehört, also: T() = 4 ffl durch wiederholte Anwendung läßt sich der String konstruieren Einsatzgebiete: ffl BZip - Kompressionsprogramm

3 KAPITEL 7. BWT- ALGORITHMUS

Kapitel 8 Quellen und Literatur Diesem Referat ist liegt hauptsächlich das Buch von Mark Nelson [] zugrunde. In dem Buch sind diese und weitere Komprimierungsverfahren ausführlich erläutert. Es enthält desweiteren komplette C-Implementierungen der Komprimierungs-Algorithmen und viele Hinweise zu den technischen Details der Implementierungen. Das Kapitel zum BWT-Algorithmus fußt auf den Artikeln von Mark Nelson [] und Michael Tamm [4]. Insbesondere ist das Textbeispiel, an dem sich sehr schön die Funktion des BWT-Algorithmus zeigen läßt, dem Artikel von Michael Tamm entnommen. Mark Nelson stellt in seinem Artikel [] wieder eine komplette C-Implementierung vor und gibt viele Hinweise für den Einsatz in der Praxis. Weitere Quellen sind in den unten zitierten Werken und im Internet zu finden. 3

3 KAPITEL 8. QUELLEN UND LITERATUR

Literaturverzeichnis [] Mark Nelson. Datenkomprimierung. Heise 993. [] Mark Nelson. Data Compression with the Burrows-Wheeler Transform. In: Dr. Dobb's Journal, September 996. [3] dito Online unter: http://www.dogma.net/markn/articles/bwt/bwt.htm [4] Michael Tamm. Packen wie noch nie. Datenkompression mit dem BWT- Algorithmus. In: c't 6/, Heise. [5] O. Vornberger. Computergrafik. SS. 33