Burrows Wheeler変換(BWT)のデコードアルゴリズムを理解するのに苦労しています。オンラインで読んでサンプルコードを調べましたが、すべて「プライマリインデックス」を使用してエンコードされた文字列をデコードしているようです。
私の質問は、「rdacraaaabb」のようなBWTでエンコードされた文字列を元の「abracadabra」にデコードするにはどうすればよいかということです。
いくつかのサンプルコードは素晴らしいでしょう。
Burrows Wheeler変換(BWT)のデコードアルゴリズムを理解するのに苦労しています。オンラインで読んでサンプルコードを調べましたが、すべて「プライマリインデックス」を使用してエンコードされた文字列をデコードしているようです。
私の質問は、「rdacraaaabb」のようなBWTでエンコードされた文字列を元の「abracadabra」にデコードするにはどうすればよいかということです。
いくつかのサンプルコードは素晴らしいでしょう。
http://www.phpclasses.org/package/3559-PHP-Compress-and-decompress-data-using-BWT-and-MTF.htmlを確認します。
逆の部分は、アルゴリズムの最も簡単な部分です。累積ヒストグラムを作成し、ランクに基づいて値を取得します。
BWTに基づく完全なブロックコンプレッサー/デコンプレッサーは、http ://code.google.com/p/kanzi/source/browse/java/src/kanzi/transform/BWT.javaにあります。