欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

压缩的思考及探索 压缩 

程序员文章站 2024-03-25 15:09:16
...
                   压缩的思考及探索
      
思考:
用哈夫曼压缩方法将900KB的文件aaa,压缩为450KB的文件bbb,压缩率为50%,如果我继续用哈夫曼压缩文件bbb,是否可以得到225KB的文件ccc???
1)若可以,那么在不考虑时间复杂度的情况下,我将压缩过程循环n次,便能将一个无限大的文件压缩到足够小。???
2)若不可以,是越压越大还是没有效果,原因是什么???

    经过反复试验,二次压缩得到的文件与首次压缩得到文件大小差不多,若连续压缩,会比上一级压缩文件大1-2KB。重复压缩的文件经过多次解压便可得到原文件。
    重复压缩不会将文件越压越小,这个很好理解。哈夫曼压缩,说的直接点就是利用文件中重复出现的字符来节省空间,压缩过的文件中重复出现的字符很少,所以重复压缩文件不会越压越小。
    但为什么多次压缩之后会比上一级压缩文件大1-2KB呢?这应该是头文件的问题,每次压缩,都会把前一次压缩的头文件当做文件内容存进新的压缩文件中,因此导致文件越压越大,并且压缩文件大小以一个很稳定的幅度增加。
    进一步猜想:假设哈夫曼压缩法能将900KB的原文件aaa压缩为450KB的文件bbb,用LZW字典压缩法能将原文件压缩为300KB的文件ccc,那么,将哈夫曼压缩法与LZW字典压缩法交替使用,将文件多次压缩,猜想每次哈夫曼压缩结果都接近450KB,而每次字典压缩的结果将接近300KB。并且可以解压。(经试验证明,此猜想成立)
相关标签: