数学中的熵-相关问题

1. 猜数字游戏

A 写下一个数 \(x\),其取值范围为 \(x\in [1,n]\),B 来猜这个数字是多少,A 会告诉 B 猜的数字比 \(x\) 大了还是小了,问 B 最少猜多少次可以猜出这个数字?

\(x\) 看作一个随机数,他的取值范围是\([1,n]\),B 第一次任意猜一个数,猜中的概率是 \(P(x) = \frac{1}{n}\)。利用数学中的熵的定义,B 猜中的熵是
\[S_{x\in[1,n]} = -\Sigma_{x\in[1,n]}{P(x)\log_2 P(x)} = \log_2 n\]

假如 B 第一次猜的数是 \(y\),则 \(P(x\in[1,y]) = \frac{y}{n}\)\(P(x\in(y,n]) = \frac{n-y}{n}\), 则 条件熵(给定条件下的熵)为 \[S_1 = P(x\in[1,y])S_{x\in[1,y]} + P(x\in(y,n])S_{x\in[y,n]}\\ =\frac{y}{n} \log_2 y +\frac{n-y}{n}\log_2 (n-y)\]

\(y\) 取何值时,熵最小?
\[\frac{dS_1}{dy} = 0\rightarrow y = \frac{n}{2}\]

所以每次都猜一个区间的中间值是最优的选择。由于 A 会告诉 B 两种状态,因此 B 只需要猜 \(\lceil\log_2 n \rceil\) 就可以猜出 A 给定的数。n 代表可取的状态数,2 代表给定信息的个数

2. 排序问题

\(n\) 个互不相等的数,需要通过多少次比较才可以将这些数从小到大排序?

比较两个数 \(a,b\) 的大小有两种状态,所以对数的底应取为 2,n 个数排序的方式,即可取的状态数为 \(A_n^n = n!\),所以需要比较 \(\lceil(\log_2 n!)\rceil\) 次。

3. 猜球问题

有 n 个球,其中有一个球与其他 n-1 个球的重量不一样,现在有一个天平,问需要称多少次可以找出这个球?

天平有三种状态,故对数的底应为3,n 个球要么重了要么轻了,故有 2n 中状态数,所以需要称 (\(\lceil\log_3 2n\rceil\)) 次可以找出这个球。

转载于:https://www.cnblogs.com/wale2016/p/10242126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值