复习微机原理实在无聊。。。想到了这个奇怪的问题
举几个栗子:
1) 如果十个手指每一个表示一个数【就像幼儿园老师一开始教的那样】,一个手指都不伸出表示0,伸出第一个手指表示1,第二个表示2,......,可以数出11种数(0..10)
2) 如果稍微改一下,两只手每一只表示一位,那么对于每只手,就有:
手势 | 表示的数字 |
一个手指都不伸 | 0 |
伸出第一个手指 | 1 |
第二个 | 2 |
第三个 | 3 |
第四个 | 4 |
第五个 | 5 |
这样一只手可以表示6种信息。两只手加起来呢?由乘法原理,可以数出6*6=36种
【原来幼儿园老师在骗我 Σ(っ °Д °;)っ
3) 如果每个手指表示一位呢?对于每个手指,伸出表示1,不伸出表示0
那么两只手就构成了一个十位的二进制数,范围从0(0000000000)到1023(1111111111),能数1024种
【二进制的威力果然无穷 _(:з」∠)_
从上面来看好像第三种最厉害的样子。。那么能否证明呢?
首先我们引出第一个概念:信息量
设一个信息由n个符号表示,第k个符号出现的概率是Pk,那么
$H=- sum ^{n}_{k=1}p_{k}log_{2}p_{k}$
在我们的数数问题中,每种符号(0....X中每个数)的出现概率可以认为是相等的,那么即
$H=log _{2}n$
设把十只手指头分成X位,每一位用Y个手指表示,那么X*Y=10,而且总信息量为
$H=Xcdot log _{2}(Y+1)$ //Y+1是因为还要考虑到0的情况
那么上面的问题就转化成了求这个函数的极值的问题。
这是个减函数,而我们的Y的取值又是离散的[1..10],所以当Y=1的时候信息量H最大,也就是用二进制表示。
如果换种方式呢?比如3、2、3、2(分四位,每一位的手指头数分别是3,2,3,2),那么H=log2(3)+log2(2)+log2(3)+log2(2)≈7.17,还是不如二进制。蛤蛤
由这个奇怪的问题可以接着扩展出信息熵的概念:信息熵可以理解为事件整体的信息量的数学期望值。
下面的柿子中,Pk表示第k种可能事件的概率,log2(1/Pk)即这种可能事件的信息量
事件的不确定性越大,那么它的其中一种可能性的信息量就越大,总体的信息也越大。
如果一个事件是确定的(即概率为1),那么信息熵就是0了。
另外还发现RuanYifeng大神一篇好玩的小文章:http://www.ruanyifeng.com/blog/2014/09/information-entropy.html
//Reference: https://zh.wikipedia.org/wiki/%E4%BF%A1%E6%81%AF%E8%AE%BA