0

Javaでハフマン圧縮プログラムを使ってBWTを書こうとしています。BWTでは、Distance Coding (DC) を実装したいと考えています。いくつかの例を探していますが、それほど多くはありません。

私はこの例を見つけました:

http://www.cs.ucr.edu/~stelo/cpm/cpm07/move_to_front_gagie.pdf

DCは29ページから始まります。しかし、コメントがないので、本当にわかりにくいです。

誰かがDCを実装したか、実際のコードでそれを実装する方法を知っているのでしょうか? :)

まず最初にcharが何であるかを書く必要があるという部分を理解しました。しかし、その後、私はそれを得ることができませんでした。

各文字について、DC はシーケンス内の次の出現を見つけ、それを S に書き込み、距離を出力します。発生がない場合は 0 を書き込みます。

ありがとう。

4

1 に答える 1

1

私はJavaで実装を書きました: http ://code.google.com/p/kanzi/source/browse/java/src/kanzi/function/DistanceCodec.java

コードの最初にアルゴリズムの説明があります(完全な例)。また、ブロックコーダー(BWT + MoveToFront +ゼロレングス変換+エントロピーコーディングを含む)を見てください: http ://code.google.com/p/kanzi/source/browse/java/src/kanzi/function/ BlockCodec.java

MoveToFrontの代わりにDistanceCodingを使用しようとしました。出力は、MTFTと比較してDCの方が小さくなります(圧縮率が高くなります)。ただし、エントロピーコーディング後の結果は逆になります。つまり、MTFTはエントロピー圧縮の影響を受けやすくなります。

于 2012-03-25T20:39:49.080 に答える