如何理解用信息熵来表示最短的平均编码长度

原创 2017年09月01日 23:27:31

       之前弄明白了信息熵是什么,由于信息熵来源于信息论,要怎么才能跟编码联系起来呢?这个问题当时没有想明白,今天查了一下资料,理解了一下,做笔记整理一下,如有错误欢迎指正。

如果信息熵不明白的请看这里:http://blog.csdn.net/hearthougan/article/details/76192381

首先给出结果:

最短的平均编码长度 = 信源的不确定程度 / 传输的表达能力。

其中信源的不确定程度,用信源的熵来表示,又称之为被表达者,传输的表达能力,称之为表达者表达能力,如果传输时有两种可能,那表达能力就是,如果是传输时有三种可能,那表达能力就是。以例子来描述,尽量做到通俗易懂。


例1:昨天小明错过一场有8匹赛马的比赛,编号为1~8号,每匹马赢的概率都一样,那么作为朋友的你要把获胜马的编号发送给他,那么你该怎么做?

方法一:直接发送马的编号,这样描述一匹马需要3比特(000,001,010,011,100,101,110,111)。

方法二:利用数据结构中的Huffman编码,如下:


建立Huffman树:


由上图可知,当等概率的时候,发送信息仍至少需要3比特。

被表达者:直接根据概率求熵即可,1/8×log8 * 8 = 3比特。

表达者:由图可以看出来Huffman树是一颗二叉树,要么是0,要么是1,所以表达能力就是log2.

平均编码长度 = 3/log2 = 3比特,注意其中的log 都是以2为底的。


例2:昨天小明错过一场有8匹赛马的比赛,编号为1~8号,1~8号获胜的概率分别为{1/2、1/4、 1/8、 1/16、 1/64、 1/64、 1/64、 1/64},那么作为朋友的你要把获胜马的编号发送给他,那么你该怎么做?

方法一:仍然直接发送马的编号,这样描述一匹马需要3比特(000,001,010,011,100,101,110,111)。

方法二:利用数据结构中的Huffman编码,如下:


建立Huffman树:


由于概率不相等,则根据Huffman树可知平均编码为:(1 × 1/2 + 2 × 1/4 + 3 × 1/8 + 4 × 1/16 + 6 × 1/64 + 6 × 1/64 + 6 × 1/64 + 6 × 1/64) = 2比特,当概率不相等的时候,发送的平均长度为2比特。

由上图可知:

被表达者(不确定程度):


表达者:由图可以看出来Huffman树是一颗二叉树,要么是0,要么是1,所以表达能力就是log2.

平均编码长度:2/log2 = 2比特。


例3:假设有5个硬币:1,2,3,4,5,其中一个是假的,比其他的硬币轻。有一个天平,天平每次能比较两堆硬币,得出的结果可能是以下三种之一:
左边比右边轻
右边比左边轻
两边同样重
问:至少要使用天平多少次才能保证找到假硬币?

答案:是2次,

方法一:可作出如下图的抉择:


所以至少称重2次,才可以确保找出。

方法二:

设X表示硬币,Y表示天平,则,X的取值可以是5枚硬币中的任意一枚,每个硬币的概率都是1/5,那么随机变量X的不确定程度就是:

H(X) = 1/5×log5 + 1/5×log5 + 1/5×log5 + 1/5×log5 +1/5×log5 = log5

Y表示天平,A、B两个硬币放在天平,有三种情况:A < B, A > B, A = B。也就是说Y的表达能力就是log3.因此:

平均编码长度: log5 / log3 = 1.46;换算成次数,也就是至少2次可以确保找到假硬币!


例4、假设有5个硬币:1,2,3,…5,其中一个是假的,比其他的硬币轻。已知第一个硬币是假硬币的概率是三分之一;第二个硬币是假硬币的概率也是三分之一,其他硬币是假硬币的概率都是九分之一。
有一个天平,天平每次能比较两堆硬币,得出的结果可能是以下三种之一:
左边比右边轻
右边比左边轻
两边同样重
假设使用天平n次找到假硬币。问n的期望值至少是多少?

方法一:同样利用Huffman编码的思想,得出下图:


       由上图可以知道,至少称重2次才可以找到假硬币,这一题与上一题的差别就是,是每一枚硬币的可能性都不一样,所以先比较概率最大的两枚1,2,找到假币的概率占了2/3,如果不在1 、2中,那么从3~5中随便取出两枚硬币,(上图选取的是3 、4两枚硬币)再称一次,就可以找打假硬币!


方法二:

设X表示硬币,Y表示天平,则,X的取值可以是5枚硬币中的任意一枚,每个硬币的概率分别是{1/3,1/3,1/9,1/9,1/9},那么随机变量X的不确定程度就是:

H(X) = 1/3 * log3 + 1/3 * log3 + 1/9 *log9 + 1/9 *log9 + 1/9 *log9 = 4/3 *log3;

天平的表达能力同样还是log3;

则平均编码长度:4/3×log 3 / log 3 = 4/3,所以还是需要称重两次。

总结:

由上面4个例子,可以知道很清楚的知道,最短的平均编码长度(也就是我们猜的次数,称重的次数),是由随机变量的熵,除以,表达能力的,得到!

版权声明:本文为博主原创文章,转载需注明出处。

相关文章推荐

最大似然估计

首先看两个例子:   例1:天上有乌云,问那么下雨的概率是多少?这是一个条件概率,也称为后验概率;如果现在正在下雨,那么天上有乌云的概率是多少?这就是似然,由结果去找原因。   例2:有两个人去打...

异或的妙用

异或 ^ ,相同为0,不同为1.通过这个性质,我们能得出许多巧妙的解决问题的办法. 异或的一些性质: A^A=0; 0^A=0; A^B^A=B;(满足交换律)...

理解信息熵

什么是信息熵?信息的作用是消除人们对事物的不确定性,而信息熵则是对信息这一作用的一种定量表示。信息熵由香农(Claude E. Shannon)提出,其计算公式为: H(x) = -∑(p(xi)l...
  • wyc09
  • wyc09
  • 2013年11月22日 11:02
  • 1202

设计一个算法,给一个字符串进行二进制编码,使得编码后的字符串长度最短

本题目来源于牛客网,关于哈夫曼树的一个题目

通俗理解信息熵

1  信息熵的公式 先抛出信息熵公式如下: 其中P(xi)代表随机事件X为xi的概率,下面来逐步介绍信息熵的公式来源! 2  信息量 ...

信息熵的理解

信息熵的由来: 信息是个很抽象的概念。人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。 直到1948年,香农提出了“信息熵”的概念,才解决...

对信息熵与信息增益的初步理解

菜鸟级的博主,有错误请不吝赐教 ================= 一 信息熵 1948年香农提出了信息熵(Entropy)的概念。 假如事件A的分类划分是(A1,A2,...,An)...
  • minenki
  • minenki
  • 2012年11月05日 17:00
  • 8971

对字符串HELL0_HULU中的字符进行二进制编码,使得字符串的编码长度尽可能短,最短长度为?

这个题主要考察的是对haffman树的解法。先给出代码,因为其中还有点小错误,但是影响不大。 #include #include #include typedef struct Huffman...
  • zzran
  • zzran
  • 2012年10月16日 17:19
  • 2774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何理解用信息熵来表示最短的平均编码长度
举报原因:
原因补充:

(最多只允许输入30个字)