数据压缩

计算机科学信息论中,数据压缩或者源编码是按照特定的编码机制用比未经编码少的数据位元(或者其它信息相关的单位)表示信息的过程。例如,如果我们将「compression」编码为「comp」那么这篇文章可以用较少的数据位表示。常見的例子是ZIP文件格式,此格式不仅仅提供压缩功能,还可作为归档工具(Archiver),能够将许多文件存储到同一个文件中。

概要

对于任何形式的通信来说,只有当信息的 发送方和接受方都能够理解编码机制的时候压缩数据通信才能够工作。例如,只有当接受方知道这篇文章需要用汉语字符解释的时候这篇文章才有意义。同样,只有当接受方知道编码方法的时候他才能够理解压缩数据。

数据压缩能够实现是因为多数现实世界的数据都有 统计冗余。例如,字母「e」在英语中比字母「z」更加常用,字母「q」后面是「z」的可能性非常小。非破壞性資料壓縮通常利用了统计冗余,这样就能更加简练地、但仍然是完整地表示发送方的数据。

如果允许一定程度的 保真度损失,那么还可以实现进一步的压缩。例如,人们看图画或者电视画面的时候可能并不会注意到一些细节并不完善。同样,两个音频录音采样序列可能听起来一样,但实际上并不完全一样。破壞性資料壓縮在带来微小差别的情况下使用较少的位数表示图像、视频或者音频。

然而,经常有一些文件不能被破壞性資料壓縮压缩,实际上对于不含可以辨别样式的数据任何压缩算法都不能压缩。另外,试图压缩已经经过压缩的数据通常得到的结果实际上是增加数据。

实际上,破壞性資料壓縮也会最终达到不能工作的地步。例如一個极端的例子:压缩算法每次去掉文件最后一个字节,那么经过这个算法不断的压缩直至文件变空,压缩算法将不能继续工作。

由于可以帮助减少如硬盘空间与连接带宽这样的昂贵资源的消耗,所以压缩非常重要,然而压缩需要消耗信息处理资源,这也可能是费用昂贵的。所以数据压缩机制的设计需要在压缩能力、失真度、所需计算资源以及其它需要考虑的不同因素之间进行折衷。