0

我想问一下,我们可以结合 BWT MTF 和 Huffman 算法在 java 中获得更高的压缩率吗?过程是什么?MTF 文件写入错误?

public class MTF{
    static File f=new File("MTF.txt");
public static File encode(String msg, String symTable)throws Exception{
            if(!f.exists())
                f.createNewFile();
    StringBuilder s = new StringBuilder(symTable);
    for(char c : msg.toCharArray()){
        int idx = s.indexOf("" + c);
                    FileWriter writer = new FileWriter(f); 
                    writer.write(idx+" "); 
                    System.out.print(idx+" ");
                    writer.flush();
                    writer.close();
        s = s.deleteCharAt(idx).insert(0, c);
    }
            System.out.println("MTF done");
    return f;
}
4

1 回答 1

0

测试这个假设很容易,过程是:

  • 获取一组有代表性的字符串(您的程序将在“现实世界”中处理的字符串);
  • 使用 BWT MTF 进行编码(互联网上的实现很多);
  • 用霍夫曼压缩;

一般来说:应用 MTF 应该可以提高可压缩性,例如这里提到的:http: //michael.dipperstein.com/bwt/

BWT 很有用,因为它将数据转换为通常更容易被游程编码器和阶数大于 0 的统计编码器压缩的格式。通过额外应用移至前编码,数据将采用通常更甚至可以被零阶统计编码器压缩,例如霍夫曼编码或算术编码的传统实现。

于 2017-12-31T06:30:33.527 回答