使用BWT进行文本压缩和解压缩

时间:2017-12-31 06:15:41

标签: java compression burrows-wheeler-transform

我想问一下,我们可以结合使用BWT MTF和Huffman算法来获得更高的压缩率吗?这个过程会是什么? Wriring 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;
}

1 个答案:

答案 0 :(得分:0)

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

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

一般:应用MTF可以提高可压缩性,例如:http://michael.dipperstein.com/bwt/

  

BWT很有用,因为它将数据转换为格式   通常由行程编码器和统计可压缩   订单大于0的编码器。另外申请   移动到前面的编码,数据将采用一般的格式   即使是零阶统计编码器也可以压缩得更多   霍夫曼编码或算术编码的传统实现。