龙空技术网

信息熵怎么理解?

野夫读书 299

前言:

如今小伙伴们对“c语言信息熵”都比较讲究,小伙伴们都需要剖析一些“c语言信息熵”的相关知识。那么小编也在网络上搜集了一些关于“c语言信息熵””的相关知识,希望各位老铁们能喜欢,看官们快快来学习一下吧!

假设有一种语言只有4个字母:abcd组成。而4个字母在该语言中的概率分布也不同,p(a)=1/2,p(b)=1/4,p(c)=p(d)=1/8。如果一段文字,总共有100个字母组成,那如果用bit表示,最少需用多少bit。

方法1,比较笨的方法,每个字母用2bit表示,也就是平均要用2bit,100个字母,就要用200bit。

方法2,其实四个字母所占的比例不同,可以用1bit 表示占比最高的,即a;用2bit表示占比第二的,即b;用3bit表示c和d。看看会不会信息用得更少。

100×1/2×1=50

100×1/4×2=50

100×1/8×3×2=75

总共需要的信息50+50+75=175

比第一种方法少用了25个bit。

而且总数越大,两种方法的差距越大。

如总数是两百,

方法1需400bit

方法2需350bit。

而且可知总数是可以变化的,所以我们要求出一个平均值可以适用于任何总数,通过方法2的过程,可得知这个平均数是

1.75=1/2×1+1/4×2+1/8×3×2

正规的写法是

-(1/2log1/2+1/4log1/4+1/8log1/8×2)

log的底为2。至于为什么要用对数表达,我上一篇文章有讨论,可以参看。

我们可能听说熵表达的是不确定性,和bit有什么关系呢?没错熵其实就是量化不确定性,用于上面的例子就是一个字母需要的bit越多它的不确定性越大,正是因为不确定性大所以才需要更多的信息,需要的越少不确定性就越小。

所以熵和概率是不同的。概率其实是比例,是没有单位的;而熵是量化的,有单位的。

标签: #c语言信息熵