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

问题描述 投票:0回答:1

我想问一下,我们可以将BWT MTF和Huffman算法结合起来,以便在java中获得更高的压缩率吗?这个过程会是什么? 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;
}
java compression burrows-wheeler-transform
1个回答
0
投票

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

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

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

BWT很有用,因为它将数据转换为通常由行程编码器和顺序大于0的统计编码器可压缩的格式。通过另外应用移动到前端编码,数据将采用通常更多的格式甚至可以通过零级统计编码器压缩,例如霍夫曼编码或算术编码的传统实现。

© www.soinside.com 2019 - 2024. All rights reserved.