是否有不基于模式的数据压缩算法?

时间:2018-08-26 13:16:45

标签: algorithm computer-science data-compression

大多数数据压缩算法都基于“模式”。但是我正在寻找一种不基于“模式”的数据压缩算法

1 个答案:

答案 0 :(得分:3)

您的问题的答案几乎是“否”。推理很复杂,但我将尝试解释一下:

定义“(无损)数据压缩算法”的最简单方法是作为一种函数,该函数可以以可逆的方式将字节序列转换为新的字节序列,从而使新的字节序列通常会比原始序列短。

其中存在“通常”一词,因为没有算法可以压缩每个可能的文件。由于压缩必须是可逆的,因此每个不同的输入文件都必须映射到不同的输出文件。对于任何给定的长度 N ,文件的长度只有 N 个或更少。因此,如果压缩程序将长于 N 的任何输入文件映射到 N 个字节或更短的输出文件,则它还必须将一个较短的文件映射到一个比 N 长,因为没有足够短的输出来压缩它们。

因此,最好的情况下,压缩算法是文件的置换。它无法压缩每个文件。它无法压缩“随机”文件,因为排列的输出仍然是随机的。

然后提出问题,因为“这些压缩机可能如何工作?”它们的工作方式是尝试将最可能是 的输入文件分配给最短的输出文件,以使平均而言输出要短于输入。就像它有一个很大的按概率顺序排列的所有文件列表,它只是与按长度顺序排列的所有文件的列表相匹配。

为此,压缩程序需要具有一些模型,以便更可能使用哪些文件。基于LZ的压缩器基本上认为,我们在现实生活中使用的文件往往比随机数据具有更多的重复字符串。因此,与没有重复的文件相比,具有更多重复的字符串的输入文件分配给较短的输出文件。 Huffman和算术压缩器假设文件的输入符号分布往往偏斜。

因此,每个压缩程序本质上都有一个概率模型-一种模式,它希望文件匹配的频率更高。匹配模式的文件可以很好地压缩,而不能匹配的文件可以很好地压缩。