为此,我可能会收到各种各样的旗帜和罚款。所以请耐心等待。 2个问题
如果用log2(n)*(x)计算表示任意小数位数的最小位数.... n是范围x是长度,那么你应该能够计算最大压缩通过>>>将文件转换为小数bin到dec。?
这个结果是一个不能压缩到理论最小压缩极限以下的定律,还是一个近似极限? Jon Hutton
答案 0 :(得分:1)
实际上有点(ha)比较棘手。该公式假设数字来自均匀分布,而通常情况并非如此,但值得注意的是,是 的情况,通常被称为"随机数据" (虽然这是一个不准确的名称,因为数据可能是随机的,但是来自非均匀分布)。
以位为单位的X的熵H由下式给出:
H(X) = - sum[i](P(x[i]) log2(P(x[i])))
其中P给出X可能采用的每个值x[i]
的概率。 i
的界限是隐含的,不相关的,不可能的选项的概率为零。在统一的情况下,对于任何可能的x[i]
,P(x [i])(根据定义)为1 / N,我们有H(X) = -N * (1/N log2(1/N)) = -log2(1/N) = log2(N)
。
公式通常不应简单地乘以数据的长度,只有在所有符号都是独立且相同的分布时才有效(例如,在IID均匀随机数字的文件中,它确实有效)。通常对于有意义的数据,符号的概率分布取决于其上下文,实际上许多压缩技术旨在利用它。
没有法律规定你不能幸运,从而将单个文件压缩到比其熵所建议的更少的位。你可以安排它是有目的的(但它不一定会发生),例如,让我们说我们希望任何一封信都是同样可能的,但我们决定反对流并用单个位0编码A,并将任何其他字母编码为1,后跟5个位,表示它是哪个字母。这显然是一个坏编码给定期望,只有26个字母,它们同样可能但我们平均使用超过log2(26) ≈ 4.7
位,平均将是(1 + 25 * 6)/26 ≈ 5.8
。 然而,如果出于某种意外我们碰巧实际上得到了A(有可能发生这种情况的1/26,可能性也不算太差),我们将它压缩到一个位,比预期要好得多。当然,一个人不能靠运气,它只会让人感到意外。
如需进一步参考,请阅读entropy (information theory) on Wikipedia。