zip压缩与哈夫曼树

学习自

https://blog.****.net/21aspnet/article/details/232316


在学习之前,我有一个基础,就是哈夫曼树,对于高频的东西,倾向于用短符号表示,对于低频的东西,倾向于用长符号表示。


首先压缩的对象自然是文件,是连续的,需要占用空间来存放的。

短语式重复

这个文件很有可能,会有一段字节多次出现,我们称之为短语式重复。比如写小说,人名、地名会重复出现,所以这种短语式重复是非常普遍的。

单字节重复

某些字节出现的多。这也是可以理解的,汉语里你我他用的很多,而一些生僻的字却用的很少。


编码还是有要求的

zip压缩与哈夫曼树

假如有个编码用1100表示,你还能正确解码吗?所以任何一个字符,都不能是另一个字符加上若干位0、1就可以的出来的,否则就无法正确解码了。


哈夫曼树

一般用它来压缩比较好,对低频率的放在树的底端。

构建方式:不断从所有节点中找出最小的2点去合成大点然后作为新的节点放回所有节点之中。以此类推。