从Shannon's Source Coding Theorem我们知道压缩字符串的熵受原始字符串的熵限制,如下所示:
H(X) <= L < H(X) + 1/N
其中H(X)是源字符串的熵,N是源字符串的长度,L是压缩字符串的预期长度。
这必然意味着无损压缩存在限制。
我想知道的是:
我们可以直接将熵与某些预期的压缩比相关联吗?
我们可以使用熵来找到压缩率的上限吗?
答案 0 :(得分:6)
香农定理是根据随机数据和概率定义的。类似地,字符串的 entropy 仅为随机字符串定义 - 熵是分布的属性,而不是字符串本身。所以,我们可以非正式地重申香农的定理:
如果你从给定的概率分布中随机选择一个字符串,那么我们可以得到的最佳平均压缩比是由概率分布的熵率给出的。
给定任意随机字符串,我可以轻松编写压缩算法,将该字符串压缩为1位,但我的算法必然会增加其他字符串的长度。我的压缩算法的工作原理如下:
相应的解压缩算法是:
这里的关键是我们不能写下一个算法,对于来自给定发行版的所有字符串,它平均以高速率压缩它们 all 。有太多的字符串了。
如果我们有一个给定的字符串概率分布,我们可以计算分布的熵率,然后根据分布随机选择字符串并尝试使用压缩它任何算法,压缩字符串的相对大小平均来说永远不会小于熵率。这就是香农定理所说的。
答案 1 :(得分:2)
在不知道源串的长度的情况下,不能直接将熵与压缩比相关联,但是通过求解L的最小可能值,可以看到最大压缩比的理论极限。您可以使用此限制作为压缩算法效率的度量标准,尽管糟糕的度量标准并不意味着已发现甚至存在更好的算法。
所以,是的。您可以使用熵来找到理论上的最大无损压缩比,但不能,您不能使用它来确定任何给定压缩算法的预期压缩比。
答案 2 :(得分:2)
是。英语的熵率通常被引用为每个字符1.5比特(给予或接受)。典型编码每个字符使用8位。因此,最大压缩文本应为原始大小的1.5 / 8(~19%)。简奥斯汀“傲慢与偏见”纯文本版本的实际结果:orig = 701K,bzip2 = 178K,约为25%。
答案 3 :(得分:0)
是的!我认为this paper会指出你正确的方向。
ETA 您似乎需要成为IEEE会员才能阅读实际论文。如果有人能够找到公开的资源(或者在这里解释数学),那当然会好得多!