我的理解的熵式是,它是用来计算的最低所需的位数来表示一些数据。这是通常的措辞是不同的当定义,但先前的理解是我的依靠,直到现在。

这里是我的问题。假设我有一个序列的100'1'接着100'0'=200位。字母是{0,1}、基熵是2。概率的符号"0"为0.5和"1"是0.5。所以熵为1或1位代表1。

但是你可以运行长进行编码,它的东西一样100 / 1 / 100 / 0 它的位数的出随后的位。似乎我有一个代表比数据。特别是如果增加100要大的多数。

我是使用: http://en.wikipedia.org/wiki/Information_entropy 作为参考的时刻。我做错了吗?是不是概率分配给符号?我不认为这是错误的。还是我得到的之间的连接压缩和熵是错误的?别的什么吗?

谢谢。

编辑

以下一些问题的答案,我的后续行动是:你会适用的熵式的一个具体实例中的一个消息来试图找出其信息的内容?它会是有效的取消息的"aaab",并说熵是-0.811.如果是的话,那么什么的熵1...10....0其中1和0的重复n次使用的熵式。是的答案1?

是的,我明白,你创建的一个随机的可变输入的符号和猜测的概率质量的功能基于你的消息。我想确认的是熵式没有考虑的位置符号的消息。

有帮助吗?

解决方案

还是我得到的之间的连接压缩和熵是错误的?

你是非常接近,但是这最后一个问题是错误的。如果你能够压缩的东西变成一种形式,是比较小的其原来表示,它意味着原来的表示至少有一些冗余。 每一位的消息真的没有输送的1位的信息。

因为冗余数据没有贡献的信息内容的一个消息,也不会增加其熵。想象一下,例如,一个"随机的位发生器",只有返回"0"值。这传达了没有信息!(实际上,它传达了一个 不确定 量的信息,因为任何二进制信息的组成只有一种符号,需要一个分通过零熵式。)

相比之下,有你模拟一个大数量的随机硬币翻转,它将很难减小这个消息多。各位将有助接近1位的熵。

当你压缩的数据,抽取得的冗余。在交流中,你支付一次熵的价格通过具有制定一个方案,知道如何压缩和解这一数据;这本身就需要一些信息。

但是你可以运行长进行编码,它的东西一样100 / 1 / 100 / 0 它的位数的出随后的位。似乎我有一个代表比数据。特别是如果增加100要大的多数。

概括地说,事实上,你可以制定一个方案使 编码的数据 较小比 原始数据 告诉你什么重要的东西。即,它说, 你的原始数据中所包含的信息非常少.


进一步阅读

为了更透彻的治疗,包括正是你如何计算的熵的任何任意的序列数字与几个例子,检查了 这短短的白皮书.

其他提示

看看 洛夫的复杂性

最低数量的位成这一串可压缩,而不丢失信息。这个定义是相对于一个固定的,但普遍的减压方案,由一个通用图灵机。

和你的特定情况下,不将自己局限于字母的{0,1}.对你的例子使用{0...0, 1...1} (百0和百的1)

你的编码工作在这个例子中,但它是可以想象一个同样有效的情况下:010101010101...这将是编码为1 / 0 / 1 / 1 / ...

熵是测所有可能的消息,这可以构在给定的字母,而不仅仅是病态的例子!

约翰Feminella得到它的权利,但是我认为还有更多要说的。

香农熵是根据概率,概率总是在旁观者的眼睛.

你说1 0分同样有可能(0.5).如果是这样,然后串的1 100随后100 0s有概率0.5^200,其中记录(基2)200位,因为你期望的。然而,熵的,string(在香条款)为其信息内容倍,其概率,或200*0.5^200,仍然是一个非常小的数目。

这是重要的,因为如果你做的运行长编码,以压缩串的情况下,在这串它将得到一个小时长,但是平均有2^200串,也不会做的很好。运气好的话,它将平均约为200,但不是更少。

另一方面,如果你看看你的原串并说的它是如此的引人注目的,凡是产生这是可能产生更多喜欢它,然后你真正想说的其概率大于0.5^200,所以你是一个不同的假设有关的原始概率结构的发电机的字符串,即,它具有较低的熵于200位。

就个人而言,我找到这个问题真的很有趣,特别是当你看到洛夫(计算)的信息。在这种情况下,定义的信息内容的一串的长度最小的程序,可能产生。这导致各种各样的见解,进入软件工程和语言的设计。

我希望这有所帮助,并感谢你的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top