一 引言
随着互联网的飞快发展,整个互联网产生原来越多的数据,这个世界充满了数据,人们的生活离不开数据,然而能够有效表达数据的算法在现代的计算机基础架构中有着重要的地位。当我们在欣赏图片,听音乐,看视频,无论是用PC或移动终端浏览信息时,我们始终在和数据形影不离。
在计算机系统
中处理的数据,都有一个共同的特点,它们始终是用二进制表示的。因为大多数数据有很大的冗余,所以数据压缩算法能够节省很大的空间。虽然现在的硬盘越来越便宜,人们可以存储的数据越来越多,正是如此,数据压缩的存储可以节省更多的存储空间。目前,我们很多的数据都是通过网络传输的,数据压缩可以使传输的数据空间变小,从而在传输过程中可以节省传输数据的时间。
基于保存数据信息空间的节省和传输时间的变短两个原因,还是很有必要研究数据的压缩算法的。
数据压缩算法可以分为
无损压缩算法和有损压缩算法,数据压缩的有损和无损是针对压缩后数据还原到原始数据来说的。比如,有些数据文件或程序代码经过压缩,再经过还原后,必须要保持和原来数据的一致,这种是无损的压缩;同样,允许存在数据(比如视频,图片等)还原展开后可以和原始的数据存在相似,不一定完全相同,这是有损的数据压缩。
数据压缩的基础模型可以采用下面的图来简单的表示。
假设原始的数据用D表示,压缩之后的数据用C(D)来表示,数据压缩的基础模型可以简单的简述为:通过“压缩“组件将原始数据D压缩成数据C(D),压缩后的数据C(D)可以在适当的时机,通过还原组件还原为数据D。
数据压缩算法的评价可以通过多种因素来评价。其中,
压缩率是比较常用的参数之一,数据压缩之后的大小与原始数据的大小比值,成为压缩率,即 C(D)/ D。在综合考虑压缩算法的性能时,还可以参考压缩的时间效率,对于有损压缩,还可能要考虑到压缩的质量因素。
二 常见的压缩算法
1.哈夫曼压缩
1.1 哈夫曼简介
哈夫曼压缩是一种能够大幅度压缩自然语言文件空间的数据压缩技术。它的主要思想是将频繁出现的字符用较少的比特表示,用较多的比特表示出现频繁率低的字符。这样可以减少文件的存储空间。
1.2 哈夫曼编码
mark,下次继续