数据压缩:为提高存储空间的利用率,我们一般会使用数据压缩技术对需要的文件进行压缩。这样不但不会损失文件的有效信息,还能提高文件在网络中的流传效率。
数据压缩技术分为有损和无损压缩。80766
压缩理论的形成可以追溯到摩尔斯码的发明。摩尔斯码的原理是利用在生活中处处都存在的脉冲信号来设计一种双方都能理解的密码,发送方和接收方借用这种方法来实现简单信息的交流。
而在这些消息传输的过程中,摩尔斯发现在我们说话交流中,一个字、词甚至是一句话的出现频率各不相同。所以经过他对信息方面孜孜不倦的研究,决定使用短脉冲和长脉冲分别来表示不同频次的字和词。这个初步的压缩方法极大的提高了整个通讯系统信息的传输效率,可以在尽可能短的时间内传递尽可能多的有效信息。
在现今这个社会,计算机的使用也变得平民化。所以数据压缩的地位也愈来愈重要。在整个数据压缩的研究史上一直都有两种不同的声音但都十分重要。一种是在数学界的理论研究中建立一个数学模型对数据进行理论上的压缩方法。另一个方法就是在实际生产中类似于蒸汽机推动工业式的工程实践。但不管是工程实践还是理论的研究,总体来说,20世纪70年代之前随之发展的还是至今还在流行的Lempel-Ziv无损存储算法的发明。虽然其压缩速度十分耗时,但它针对于解压速度以及压缩率的基础优化还是值得去推广的。论文网
新事物的发明是值得肯定的,针对于这种压缩算法人类并没有迟滞不前。理论科学研究发展至今,计算机对于数据的I/O急剧增加,以至于压缩的效率变得缓慢甚至是迟滞不前。但在前人智慧的照耀下,Shannon-Fano编码算法的出现,获得比之前更快的压缩速度。它在摩尔斯码的基础上以符号的出现概率来编写算法,这样的方式可以更快的对数据进行压缩。
人们常说,发现一件事或许需要很长时间甚至永远不会发现它,但只要存在,人们总会找到更快的方式,这或许也是学无止境的另一种解释吧。在Shannon-Fano编码算法出现之后的一段时间,一位名叫David Huffman学生在上老师的信息理论课上,临近期末他在课题名称为“寻找二叉编码的最优算法”上努力好几个月无果快要放弃的情况下,迸发出新的灵感,重新编写了一种比之前的Shannon-Fano编码更为快速的算法。两种编码算法的不同点在于其构建概率树的过程。Shannon-Fano是自下而上的得到一个次优结果,而Huffman算法正好相反。总体来说,Huffman算法编码具有优秀的压缩效果,这种编码算法在计算机数据压缩领域的比重至今都占据相当大的份额,后来不少改良的算法也都是基于Huffman算法编码的基础上不断推进的。之后的几年,由于Huffman编码中一些无法消除的足以致命的弱点。数学家们以Huffman编码为主,着手从另一个角度设计出算数编码--它更能精确表达且极为接近信息论中”熵”的极限。由于这种算数编码的精确设计以及优异的表现(可以用尽可能少的符号精准的表达其想要的信息的原始内容,做到最大限度的减少对于信息的冗余度),使人们朝着极限压缩迈进了一大步。
虽然算术编码效果显著,但想要达到运行算术编码的目的,给程序员的劳动强度和计算机软件系统提出了新的要求--消耗大量的计算时间。这些早期的压缩方案的实现大都基于硬件和硬编码。
随着社会的进步和互联网的发展,科学家对数据压缩算法的兴趣也日渐浓厚,不是只专注于信源编码领域,对语音信号分析和处理、数字图像信号等等的技术也在其相关领域被大量引用。由于互联网概念和在线存储技术的的支持,才有了以Huffman编码为理论基础输入数据动态产生技术--软件压缩技术。科学家们为了兼得两者的优点(压缩效果优于Huffman编码而且程序不会增加对系统资源的依赖和时间的耗损)而做了大量的研究。