我想问一下,我们可以将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;
}
测试这个假设很容易,过程如下:
一般来说:应用MTF应该可以提高可压缩性,例如:http://michael.dipperstein.com/bwt/
BWT很有用,因为它将数据转换为通常由行程编码器和顺序大于0的统计编码器可压缩的格式。通过另外应用移动到前端编码,数据将采用通常更多的格式甚至可以通过零级统计编码器压缩,例如霍夫曼编码或算术编码的传统实现。