关于信息熵 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。

浙公网安备 33010602011771号