Burrows-Wheeler-Transformation

Das Burrows-Wheeler-Transformation ist ein Algorithmus in Datenkompressionsprogramme wie bzip2 verwendet. Es wurde von Michael Burrows und David Wheeler erfunden.

Wenn eine Zeichenkette an die BWT zogen, keiner dieser Wertänderungen aufgrund der Transformation Tausch nur die Reihenfolge der Zeichen. Wenn der ursprüngliche String enthält viele Wiederholungen von bestimmten Teilstrings, dann in der Zeichenfolge werden wir verschiedene Orte, an denen das gleiche Zeichen viele Male wiederholt finden, umgewandelt. Dies ist nützlich für die Kompression, da es einfach wird, eine Zeichenfolge, in der es lange Sequenzen von Zeichen alle gleich zu komprimieren.

Zum Beispiel wird die Zeichenkette:

Es würde in die folgende umgewandelt werden:

Die transformierte

Die Transformation wird durch die Anordnung aller Drehungen des Textes und dann nehmen nur die letzte Spalte aus. Zum Beispiel kann die Text BNN ^ AA durch diese Schritte "^ Banane ist in transformierte":

Der folgende Pseudocode zeigt ein Verfahren, ineffizient, um die BWT und ihre Inverse zu berechnen. Davon aus, dass die Eingabezeichenfolge ein Sonderzeichen 'EOF' das ist immer das letzte Zeichen, und dass nie erscheint im Text, und deshalb wird ignoriert, wenn die Sortierung enthält.


Die inverse Transformation

Das Interessanteste an der BWT ist nicht, dass dies erzeugt Ausgangs leichter komprimierbaren original, da dies einfach, indem sie in alphabetische Zeichen erreicht werden, doch ist ihre Reversibilität: das Originaldokument aus den nur Zeichen rekonstruiert letzte Spalte.

Die inverse können auf diese Weise zu verstehen. Nehmen Sie an den Finaltisch des Algorithmus BWT und beseitigt alle außer der letzten Spalte. Angesichts nur diese Informationen können Sie ganz einfach zu rekonstruieren die erste Spalte. Die letzte Spalte erfahren Sie, was sind alle Zeichen des Textes, so legte sie um die erste Spalte zu erhalten. Nun ist die erste und die letzte Spalte sind bekannt und zusammen sie Ihnen alle Paare von aufeinanderfolgenden Zeichen in dem Dokument, wo Paare geben, zyklisch, immer vor dem letzten und dann das erste Zeichen des Paares in dem Originaldokument. Sortieren der Liste von Paaren Holen Sie sich das erste und die zweite Spalte. Fortsetzung auf diese Weise können Sie die gesamte Liste neu zu erstellen, dann ist die Zeile mit dem Zeichen 'EOF' am Ende der Originaltext. Die inverse Transformation des obigen Beispiels wird so durchgeführt:

Bestimmte Optimierungen machen diese Algorithmen sind effizienter ausgeführt werden, ohne Veränderung, es besteht keine Notwendigkeit, die gesamte Tabelle in den Speicher zu halten, wesentlich weniger Speicherplatz und müssen nicht den kontinuierlichen Rechts Beispiel wiederholen. Jede Zeile wird in dem Speicher mit einem einfachen Zeiger auf den Anfang des gleichen Zeichen dargestellt.


Umsetzung beispiels

Hinweis: Geschrieben in C

Perl-Implementierung:


  0   0
Vorherige Artikel I die Mühe machen
Nächster Artikel Union des Zentrums

In Verbindung Stehende Artikel

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha