距离编码(DC)BWT

时间:2012-03-18 17:16:57

标签: java huffman-code burrows-wheeler-transform

我正在尝试用Java编写带有Huffman压缩程序的 BWT 。在 BWT 中,我想实现距离编码(DC)。我正在寻找一些例子,但没有那么多。

我找到了这个例子:

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

DC以29页开头。但它真的很难理解,因为没有评论。

也许某人已经实现了DC或者知道如何在实际代码中实现它? :)

我理解那个首先需要写出char的部分。但是随着距离我没有得到它。

我红色表示每个字符,DC在序列中找到它的下一个出现并将其写入S并输出距离。如果没有出现,则写入0。

感谢。

1 个答案:

答案 0 :(得分:1)

我用Java编写了一个实现: http://code.google.com/p/kanzi/source/browse/java/src/kanzi/function/DistanceCodec.java

您可以在代码的开头看到算法的解释(完整示例)。 另外,看一下Block编码器(它包括BWT + MoveToFront +零长度变换+熵编码): http://code.google.com/p/kanzi/source/browse/java/src/kanzi/function/BlockCodec.java

我尝试使用距离编码而不是移动到前面。与MTFT相比,DC的输出更小(压缩效果更好)。然而,在熵编码之后,结果是相反的:MTFT看起来更适合于熵压缩。