像设备的成本大幅降低。
笼统地说,把一系列已有信息通过一定方法处理,使得其长度缩短,并且信息含量基本或者完全不变,就称之为压缩。
计算机上的压缩过程
我们都知道,计算机采用的是2进制系统。一个连续的n位二进制数集,就可以用来表示2n个字符。目前的国际标准是ascii码:用一个字节即8位数的2进制码,来表示各种字符和字母。
现在我们只使用2位二进制码,来简单地演示由4个符号组成的字符串的压缩过程。
假设我们有这么一串20个字母的数据……默认情况下,用2位2进制码来表示这四个字母……每个字符在字符串中各自出现的次数并不相等:
a:6次b:10次c:3次d:1次
而在计算机中,数据则是以2进制码的形式储存在硬盘上的……整理一下得到新编码:
原编码……新编码……看!数据成功被压缩。这一段40位长度的内容被压缩到了34位,压缩率是85%。
回顾过程容易发现压缩的秘密:出现频率最多的‘b‘由一位二进制码“0”来表示,而出现频率较低的‘c‘和‘d‘,则由长度增加了的三位二进制码来表示。通过合理分配不同长度的编码,肯定可以对数据进行一定程度的压缩。
另外可以证明,霍夫曼树就是此类编码替代的最优化的方案之一。因为假如存在一个字符的出现频率高于另一个字符,而它的变长码长度却长于另一个字符,那么必然可以通过交换两者的位置,使得输出结果的总长度变短。有限次操作后可以达到无法再交换的情况,也就是霍夫曼树规则下的情况。
还有一个有趣的问题是:虽然把40字节的内容压缩到了34字节,但需要将相应的码表一并发送给接收方(没有对应码表,无法解压)。这不反而使得压缩后的数据比压缩前的还要长?
但这不意味了算法错误。这是因为“n”过小(例子中为2,实际通常为8)导致的。
总长度的不够使得节省出来的那部分容量还不足以弥补码表本身的储存空间。实际应用中,如果你非要去压缩一个只有几个字节的文件,得到的压缩包也经常会大于文件本身。通常,压缩软件会在每压缩4kb到32kb数据后,重新生成并保存一个霍夫曼树。
……
给大家讲一个好笑的笑话:我相信爱情。
哈哈哈哈哈~~~
ps(刚刚就是在这里不小心按到了删除……喵的)!~!
{宜感谢各位书友的支持,您的支持就是我们最大的动力}
请收藏:https://m.69sb.cc
(温馨提示:请关闭畅读或阅读模式,否则内容无法正常显示)