【发布时间】:2018-08-26 13:16:45
【问题描述】:
大多数数据压缩算法都基于“模式”。但我正在寻找一种不基于“模式”的数据压缩算法
【问题讨论】:
-
没有更多解释,我无法理解你的问题。
标签: algorithm computer-science data-compression
大多数数据压缩算法都基于“模式”。但我正在寻找一种不基于“模式”的数据压缩算法
【问题讨论】:
标签: algorithm computer-science data-compression
您的问题的答案几乎是“不”。推理很复杂,但我会尽力解释一下:
定义“(无损)数据压缩算法”的最简单方法是将一个字节序列以一种可逆的方式转换为一个新的字节序列的函数,这样新的字节序列通常会比原始序列短。
“通常”一词在那里,因为没有算法可以压缩每个可能的文件。因为压缩必须是可逆的,所以每个不同的输入文件必须映射到不同的输出文件。对于任何给定的长度 N,只有这么多长度为 N 或更短的文件。因此,如果压缩器将任何长于 N 的输入文件映射到 N 字节或更短的输出文件,那么它还必须将较短的文件映射到比 N 长,因为没有足够短的输出来压缩它们。
因此,最好的压缩算法是文件的排列。它不能压缩每个文件。它不能压缩“随机”文件,因为排列的输出仍然是随机的。
接下来的问题是“这些压缩器怎么可能工作?”他们通过尝试将最可能的输入文件分配给最短的输出文件来工作,这样平均输出将比输入短。就像它有一个按概率顺序排列的所有文件的大列表,它只是与按长度顺序排列的所有文件列表相匹配。
为了做到这一点,压缩器需要有一些模型来确定哪些文件更有可能被使用。基于 LZ 的压缩器基本上假设我们在现实生活中使用的文件往往具有比随机数据更多的重复字符串。因此,与没有重复的文件相比,具有更多重复字符串的输入文件被分配给更短的输出文件。霍夫曼和算术压缩器假设文件往往具有输入符号的倾斜分布。
所以每个压缩器本质上都有一个概率模型——它期望文件匹配的模式多于不匹配。匹配模式的文件可以很好地压缩,不匹配的文件则不能。
【讨论】: