当前位置:  开发笔记 > 编程语言 > 正文

香农的熵公式.帮助我的困惑

如何解决《香农的熵公式.帮助我的困惑》经验,为你挑选了2个好方法。

我对熵公式的理解是,它用于计算表示某些数据所需的最小位数.在定义时通常措辞不同,但之前的理解是我到目前为止所依赖的.

这是我的问题.假设我的序列为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> John Feminel..:

或者我是否在压缩和熵之间建立了连接错误?

你非常接近,但最后一个问题是错误的地方.如果您能够将某些内容压缩为小于其原始表示形式的形式,则意味着原始表示至少具有一些冗余.消息中的每个位实际上都没有传达1位信息.

由于冗余数据不会对消息的信息内容有所贡献,因此它也不会增加其熵.想象一下,例如,"随机位生成器"只返回值"0".这根本不传达任何信息!(实际上,它传达的未定义的信息量,因为仅由一种符号的任何二进制消息需要由熵公式中零的除法.)

相比之下,如果你模拟了大量的随机硬币翻转,那么很难减少这个消息的大小.每个位将贡献接近1位的熵.

压缩数据时,可以提取冗余.作为交换,您需要设计一个知道如何压缩和解压缩此数据的方案,从而支付一次性熵价格; 这本身就需要一些信息.

但是,您可以使用类似100/1/100/0的行程对其进行行程编码,其中输出的位数后跟该位.看起来我的表示比数据小.特别是如果你增加100到更大的数字.

总而言之,您可以设计一种方案来使数据编码小于原始数据,这一事实告诉您一些重要的事情.也就是说,它表示您的原始数据包含的信息非常少.


进一步阅读

有关这方面的更全面的处理,包括如何使用几个示例计算任意数字序列的熵,请查看此简短的白皮书.



2> Anonymous..:

看看Kolmogorov的复杂性

在不丢失信息的情况下压缩字符串的最小位数.这是通过通用图灵机给出的固定但通用的减压方案来定义的.

在您的特定情况下,不要将自己限制为字母{0,1}.对于您的示例,使用{0 ... 0,1 ... 1}(百分之0和百分之一)

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有