用信息论玩猜数字

Posted Jie Qiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用信息论玩猜数字相关的知识,希望对你有一定的参考价值。

看到3b1b用信息论玩Wordle,这里写一个玩猜数字的简化版本.

用信息论玩猜数字

信息论中衡量一个事件的信息是否丰富是从概率出发,在信息论中,1bit的信息量对应着 − log ⁡ 2 1 2 \\displaystyle -\\log_2\\frac12 log221,意味着,这个事情发生的概率是 1 2 \\displaystyle \\frac12 21,且发生之后将能够帮助我们筛选掉一半的搜索空间。

直观来看,如果一个事件发生的概率越小,那么发生之后提供的信息就越多,而如果一个事件是常常发生的,那么其发生之后带来的信息也是不多的。

举个例子,一个猜数字游戏,在1-10中随机选择一个数字,然后每次会告诉你是否猜对,如果没猜对则告诉你比它大还是比它小。假设我们一开始猜5,然后告诉我们比5大,于是这个数字一定是[6,7,8,9,10]之中的一个,因此该事件发生的概率是 5 10 \\displaystyle \\frac510 105,而该事件蕴含的信息量就是1bit!它成功将空间减少了一半。
那如果比5小呢?意味着数字一定是[1,2,3,4]中的一个,概率是 4 10 \\displaystyle \\frac410 104,其信息量是 − log ⁡ 2 4 10 = 1.321928   b i t \\displaystyle -\\log_2\\frac410 =1.321928\\ bit log2104=1.321928 bit,可以发现这个事件缩减的搜索空间更多,因此提供的信息量更大!

最后,如果结果是5猜对了,那么概率是 1 10 \\displaystyle \\frac110 101,信息量是 − log ⁡ 2 1 10 = 3.321928   b i t \\displaystyle -\\log_2\\frac110 =3.321928\\ bit log2101=3.321928 bit,是信息量最大的情况,这也是显然的,因为这个事件将搜索空间降低到了只有1个。

所以,就猜5而言,比它小跟比它大又或者猜对了所提供的信息量是不同的,那么这个策略能给我们的平均信息量是多少呢?显然将所有可能根据其发生的概率平均起来,就得到平均的信息量:

− 1 2 log ⁡ 2 1 2 − 4 10 log ⁡ 2 4 10 − 1 10 log ⁡ 2 1 10 = 1.360964   b i t -\\frac12\\log_2\\frac12 -\\frac410\\log_2\\frac410 -\\frac110\\log_2\\frac110 =1.360964\\ bit 21log221104log2104101log2101=1.360964 bit

而这个就是熵的定义了!

这时候如果我们需要判断,猜哪个数字的决策最好?是不是相当于问,猜哪个数字,将搜索空间平均减少的最多,也就是猜哪个数据的平均信息量(熵)是最大的!因此,用类似的方法,我把所有的猜的数字的熵计算一下,可以得到如下表:

猜哪个数字
1 − 1 10 log ⁡ 2 1 10 − 9 10 log ⁡ 2 9 10 = 0.4689956 -\\frac110\\log_2\\frac110 -\\frac910\\log_2\\frac910 =0.4689956 101log2101109log2109=0.4689956
2 − 1 10 log ⁡ 2 1 10 − 8 10 log ⁡ 2 8 10 − 1 10 log ⁡ 2 1 10 = 0.9219281 -\\frac110\\log_2\\frac110 -\\frac810\\log_2\\frac810 -\\frac110\\log_2\\frac110 =0.9219281 101log2101108log2108101log2101=0.9219281
3 − 2 10 log ⁡ 2 2 10 − 7 10 log ⁡ 2 7 10 − 1 10 log ⁡ 2 1 10 = 1.15678 -\\frac210\\log_2\\frac210 -\\frac710\\log_2\\frac710 -\\frac110\\log_2\\frac110 =1.15678 102log2102107log2107101log2101=1.15678
4 − 3 10 log ⁡ 2 3 10 − 6 10 log ⁡ 2 6 10 − 1 10 log ⁡ 2 1 10 = 1.295462 -\\frac310\\log_2\\frac310 -\\frac610\\log_2\\frac610 -\\frac110\\log_2\\frac110 =1.295462 103log2103106log2106101log2《LeetCode之每日一题》:201.猜数字游戏

什么是MD5

在线支付系列支付安全之数字签名

leetcode 299. 猜数字游戏(Bulls and Cows)

局域网发生信息

一句话解释数字签名。一句话解释数字证书

(c)2006-2024 SYSTEM All Rights Reserved IT常识