关于信息熵 Shannon Entropy

学了关于信息熵的内容,简单描述一下。
Entropy,熵,在信息的理论中实际描述的是信息的不确定
一件事发生的概率越小,所得信息量越大:若是发生概率为1,肯定会发生的事信息量就是0.
在信息熵的运用方面,我们可以以此判断许多操作。例如,对一个有n个元素的数组排序,对排序操作的熵 h 近似 nlogn,故可推测排序的复杂度为nlogn.

下面介绍如何计算信息熵:
假设
事件x 发生的概率为p(x)
事件x 获得的信息为q(x)

上述可知,这两个变量呈负相关。

且两个事件同时发生的概率 :

\[p(xy)=p(x)p(y) \]

两个事件同时发生与否获得的信息量一致

\[q(xy)=q(x)q(y) \]

满足上述条件的函数表达可理解为

\[q(x)=-logp(x) \]

我们将熵定义为平均信息量:

h(x)=p(x)q(x)

由此,当我们有n个可能结果(事件)时,每个事件的概率为pi,可以得到

\[h=-\sum_{i}^{n}{p_i}log{p_i} \]

当所有事件概率一样,例如1/n时,带入公式可以得到

\[h=logn \]

注意:独立随机变量常使用以2为底n的对数,即lgN,N=2^n

在各种算法情况中时常遇到N=n! 的情况,此时 h(N)=log(n!)

鉴于我们计算不出来,所以就近似值代替

\[lg(n!)=lg0+lg2+lg3+lg4...+log(n-1)+lg(n) \]

必然小于等于nlgn

于是我们直接近似,h(N)~NlogN

该结论可以运用到许多问题上,如

当n很大时,排序有n个元素的随机无序数组最好的情况就是进行nlogn次操作

另:当n个事件不是完全一致的情况(例如排序一堆球,里面有红球蓝球黄球等不同种类

假如此时有r个种类,每种n/r个元素, 概率mi=(n/r)

套公式可以得到

\[\begin{aligned} h(N)&=\frac{lg(n!)}{\sum_{r}lg{m_i}}\\ &=lg(n!)-\sum_{r}lg{m_i}\\ &=log(n!)-rlg(\frac{n}{r}!)\\ 近似&=nlgn-nlg(\frac{n}{r})\\ &=nlgr \end{aligned} \]

故有r个种类时熵近似于nlgr

posted @ 2021-09-29 06:24  Lamplight  阅读(579)  评论(0)    收藏  举报