文件的压缩一直都是互联网非常重要的一个环节,它的直接作用就是服务于文件的传输。
文件的压缩可以按照压缩方式分为三个类别, static 静态压缩, semi-static 半静态压缩和 adaptive,适应性压缩。
static:
利用已有的数据集直接进行压缩。
比如,用字典压缩一个文本,每一个单词都可以对应到这个单词的索引,如几页几行(便于理解,假设这种表示方式会节省bit的情况下)。再比如,利用某个数据集生成的一个压缩模型去压缩之后所有的数据。
优点: 拿到数据,立马就可以进行压缩工作。支持文章从任意中间点开始解压。
缺点: 如果用于生成模型的数据集和待压缩的数据集相差比较大的话,压缩效果会非常不好。
semi-static;
对于待压缩的文本,遍历一个遍获取symbol的概率,根据这个概率生成压缩模型,再根据模型进行压缩,比如huffman。
优点:效果比第一种方式要好,并且支持从任意中间点开始解压。
缺点:需要遍历两次文本,第一次用于生成压缩模型,第二次用于解压缩。
adaptive:
首先赋予文本一个初始压缩的概率模型,之后在压缩的同时,根据已出现的数据再对已有的模型进行优化,解压的时候也是用相同的初始模型进行解压,之后根据相同的优化方式进行模型的优化,从而达到压缩与解压缩过程中,模型匹配的问题。
优点:不用遍历两次文章。
缺点:没有办法从中间任意点开始进行解压。