前言:
现在兄弟们对“c语言信息熵”大致比较着重,姐妹们都想要分析一些“c语言信息熵”的相关知识。那么小编在网络上网罗了一些有关“c语言信息熵””的相关内容,希望看官们能喜欢,各位老铁们一起来学习一下吧!有趣的"信息熵"
注:本文章摘自《数学之美》第二版第六章"信息的度量和作用"
到目前为止,我们一直在讨论信息,但是信息这个概念依然有些抽象。我们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本50万字的中文书《史记》到底有多少信息量,或者一套莎士比亚全集到底有多少信息量。我们也常说信息有用,那么他的作用是如何客观、定量地体现出来呢?信息用途的背后是否有理论基础呢?
对于这两个问题,几千年来都没人给出很好的解答。知道1948年,香农(Claude Shannon)在他著名的论文"通信的数学原理"(A Mathematic Thery of Communication)中提出了"信息熵(读shang)"的概念,才解决了信息的度量问题,并且量化出信息的作用。
一条信息的信息量与其不确定性有着直接关系。比如说,我们要搞清楚一件非常非常不确定的事情,或者是我们一无所知的事情,就需要了解大量的信息。相反,如果已对某件事情了解较多,则不需要太多的信息就能把它搞清楚。所以从个人的角度来看,可以认为,信息量就等于不确定性的多少。
那么如何量化信息量的度量呢?来看一个例子。2014年举行世界杯足球赛,大家都会很关心谁会是冠军。假如我错过了看世界杯,赛后我问一个知道比赛结果的观众"哪支球队是冠军?"他不愿意直接告诉我,而是让我猜,并且我每猜一次,他要收一元才肯告诉我有没有猜对,那么我要掏多少钱才能知道谁是冠军呢?我可以把球队编上号,从1-32,然后提问:"冠军在1-16号之间吗?"假如他告诉我猜对了,我会接着问:"冠军在1-8号之间吗?"假如他告诉我猜错了,我自然知道冠军在9-16号中。这样我只需要5次,我就能知道哪支球队是冠军。所以,谁是世界冠军这条消息的信息量只值5块钱。
当然,香农不是用钱,而是用"比特"(Bti)这个概念来度量信息量。一个比特是一位二进制数,在计算机中,一个字节就是8比特。在上面的例子中,这条信息的信息量是5比特。(如果有早一日有64支球队进入决赛阶段的比赛,那么"谁是世界冠军"的信息量就是6比特,因为要多猜一次)读者可能已经发现,信息量的比特数和所有可能情况的对数函数log有关(log32 = 5,log64 = 6。)
有些读者此时可能会发现实际上可能不需要猜五次就能猜出谁是冠军, 因为像西班牙 、 巴西、饱国、意大利这样的球队得冠军的可能性比日本, 南非 、韩国等球队大得多。 因此,第一次衍测时不需要把32支球队等分成两个组, 而可以把少数儿支氐可能的球队分成一组,把其他队分成另一组。然后猜冠军球队是否在那儿支热门队中C 重复这样的过程, 根据夺冠概率对剩下的候选球队分组,宜至找到冠军队。这样,也许三次或四次就猜出结果。
因此,当每支球队夺冠的可能性(概率)不等时,谁是世界杯冠军" 的信息社比5比特少。 香农指出,它的准确信息量应该是
H=-(p1 ·logp1+ p2 ·logp2 +···+p32 ·logp32)
其中. P1.p2,...,p32, 分别是这32支球队夺冠的概率。香农把它称为 "信息墒" (Entrnpy) ,一般用符号H表示,单位是比特。有兴趣的读者可以推算一下当32支球队夺冠概率相同时,对应的信息墒等于5比特。有数学基础的读者还可以证明上面公式的伯不可能大于5。 对于任意一个随机变量X (比如得冠军的球队)它的熵定义如下
有了 "烧" 这个概念,就可以回答本文开始提出的问题,即一本so万字的中文书平均有多少估息员。 我们知道,常用的汉字(一级二级国标) 大约有7 000字。 假如每个字等概率,那么大约需要13比特(即13位二 进制数)表示一个汉字。 但汉字的使用是不平衡的。 实际上,前10%的汉字占常用文本的95%以上。 因此,即使不名虑上下文的相关性,而只考虑每个汉字的独立概率,那么,每个汉字的信息嫡大约也只有8-9比特。如果再考虑上下文相关性,每个汉字的信息嫡就只有5比特左右。 所以. 一本50万字的中文书,信息址大约是250万比特。如果用一个好的算法压缩一下,整本书可以存成一个320KB的文件。如果宜接用两字节的因标编码存储这本书,大约需要1MB大小,是压缩文件的三倍。 这两个数质的控距,在信息论中称作 "冗余度" (Redundancy) 。需要指出的是这里讲的250万比特是个平均数。 同样长度的书,所含的信息社可以相差很多。如果一本书重复的内容很多,它的信息品就小,冗余度就大。
不同由言的冗余度差别很大,而汉语在所行语言中冗余度是相对小的。
标签: #c语言信息熵