数据压缩
外观
有很多算法——甚至更多算法的实现——接受未编码(明文)信息并将其编码为使用更少的位。也许更重要的是,成对的算法接受编码后的位并提取信息。
每一对算法——一个创建编码形式,另一个接受编码形式并提取信息——被称为数据压缩算法。这类算法越来越多,其变体也越来越多,大多数都利用基于字典的方案和统计方法。它们也越来越专业化,用于压缩特定类型的数据——文本、语音、音乐、照片或视频...
数据压缩在某些情况下很有用,因为与它所代表的未编码信息相比,“压缩数据”将节省时间(在读取和传输方面)和空间。许多程序员试图开发新的算法来将数据尽可能紧密地压缩成尽可能少的位(同时仍然能够恢复相关信息)。然而,其他程序员——在测试了几种算法之后——故意选择了一种与能够提供最少压缩位的算法不同的算法。他们故意牺牲一些位,以提高延迟,减少压缩时间或减少解压缩时间。
一些通信系统仔细地、有意地添加少量“冗余”——数据编码理论维基教科书有更多细节。
也有几种数据压缩基准可用,用于比较数据压缩算法——甚至有一个价值 50,000 欧元的现金奖励,用于将一个特定的基准文件压缩到尽可能小的程度(当然,之后要解压缩它)。
在这本书中,我们首先描述解压缩器,原因有几个:[1]
- 解压缩例程通常比配对压缩例程更容易理解。
- 太多的人首先编写压缩器,然后才发现它没有保存足够的信息来重建原始文件。
- 一旦我们有了解压缩器,我们通常可以单独改进压缩器,而无需更改文件格式或解压缩器。
- 许多压缩系统只记录和标准化解压缩器和文件格式。(可能是由于上述原因)。