Burrowsova–Wheelerova transformace
From Wikipedia, the free encyclopedia
Remove ads
Burrowsova-Wheelerova transformace (anglicky Burrows-Wheeler transform – zkráceně BWT) je pomocný algoritmus používaný v technikách komprese dat. Transformaci objevili Michael Burrows a David Wheeler.
Samotná transformace data nijak nekomprimuje. Způsobí pouze změnu pořadí symbolů (permutaci). V případě, že vstupní řetězec symbolů má několik podřetězců, které se v něm vyskytují vícekrát, bude mít výstupní řetězec několik míst, kde se vyskytuje stejný symbol několikrát za sebou. To je výhodné například pro RLE kompresi. Transformace ovšem přidává k výstupnímu řetězci informaci o umístění symbolu konce původního řetězce (tzv. EOF symbol).
Princip této transformace spočívá v tom, že se ze vstupního řetězce (zakončeného symbolem EOF) vytvoří všechny jeho možné rotace. Tyto se dále lexikograficky seřadí. Ze seřazeného pole rotací původního řetězce se do výstupního zapíše postupně od počátku poslední symbol z každé rotace. Na výstupu je tedy transformovaný vstup rozšířený o ukazatel na konec původního řetězce.
K transformaci se používá datová struktura sufixový strom, která umožňuje rychlé operace s řetězci. Tuto transformaci využívá například kompresní metoda bzip2.
Remove ads
Příklad
Příklad transformace textového řetězce "^BANANA@
" (zavináč značí EOF symbol) je řetězec "BNN^AA@A
".
Vstupem zpětné transformace je výstup původní transformace, tedy poslední sloupec seřazené tabulky. Pomocí něj můžeme získat první sloupec jeho seřazením. Známe-li první a poslední sloupec, známe všechny dvojice po sobě následujících znaků, které se v textu vyskytují – a jejich seřazením dostaneme první a druhý sloupec. Takto postupně zrekonstruujeme celou tabulku a posléze odečteme původní řetězec.
Remove ads
Externí odkazy
- Burrows, M.; Wheeler, David J., A block-sorting lossless data compression algorithm. Archivováno 7. 6. 2011 na Wayback Machine. – původní článek s popisem transformace na stránkách HP Labs (anglicky)
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads