
1994年にMichael BurrowsとDavid J. Wheelerによって開発されたBWTは、テキストデータの効率的な圧縮を可能にした。その後、bzip2やGoogleのPageRankなど多くの重要なアプリケーションで採用され続けている。
この記事の目次
- BWTの基本原理
- BWTのアルゴリズム構造
- BWTの適用例
- BWTとLZ77の比較
- まとめ
BWTの基本原理

BWTは、入力テキストを最終回転後の文字列とする方法で、これによって一連の文字列に共通部分が大量に出現する。そのため、頻繁に出現するパターンは短い符号で表現でき、圧縮効率が向上する。この仕組みは後から高速な検索にも応用可能だ。
たとえばDNA配列のデータをBWTで処理すると、同じ塩基配列の繰り返し部分が効果的に短縮される。
BWTのアルゴリズム構造

BWTでは、入力データを文字列全体で考える。まず最初に全順序のリストを作成し、そのリストについて全ての回転変形を行う。次にこのすべての回転変形に対してアルファベット順にソートを行い、最終的に各回転の最後の文字だけを取り出すという手順をとる。
このプロセスは効率的な計算アルゴリズムとして設計されており、特に大量のデータを処理する際にはその恩恵が大きい。
BWTの適用例

BWTはテキストデータだけでなく、他の形式のデータでも効果を発揮する。たとえば、Webページのコンテンツを圧縮する場合もこのアルゴリズムが利用されることがある。
その過程ではまず入力データを受け取り、その後で変換処理を行った後、実際にファイルサイズを削減し、最後に必要であれば高速な復元プロセスを行う。
BWTとLZ77の比較

BWTとLZ77は両方ともテキスト圧縮を目的とするが、それぞれ異なるアプローチで達成する。BWTは回転文字列のソートを通じて効率的な圧縮と同時に高速な検索機能を持つ一方で、LZ77は重複した部分の記録を簡潔に保つことでファイルサイズを削減している。
これは両者ともその特性を活かし、異なる状況や目的に向いていることを示している。
まとめ
BWTはテキスト圧縮と高速検索のための革新的な技術であり、その理論的背景や実用性について理解しておくことは重要である。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント