书城现实数学心
18217400000476

第476章 需要问多少个问题

正是如此!

那咱们看看典型序列一共有多少个。把这个要算的数记作 T。

首先注意一下每个典型序列有多大的概率被老千掷出来。因为每个典型序列“差不多”由 n/3 个1 和 2n/3 个0 组成,而这个序列中的所有随机变量又是相互独立的,那么,每个典型序列被掷出来的概率“差不多”就是(1/3)^(n/3)*(2/3)^(2n/3)。不知道同学们注意到没有,每个典型序列被掷出来的概率“差不多”都是这个数。同时注意到只有典型序列才可能被掷出来,也就是说,所有典型序列出现的概率之和“差不多”就是 1。这样俺们就可以得出,典型序列的数目 T “差不多”就是 1 除以每个典型序列出现的概率,也就是

1/((1/3)^(n/3)*(2/3)^(2n/3))=(1/3)^(-n/3)*(2/3)(-2n/3).

针对这 T 个序列问问题,就“差不多”等同于俺跟你玩一次这样的“二十个问题”游戏:俺从{1, 2,…, T}里取一个数,而且这个数服从均匀分布;然后你问俺“是不是”问题来猜这个数。那么你最少需要多少问题呢?现在回头找到之前让你们用红笔圈出的结论:最优解是二分法;你最少需要的问题总数是 log T!而且不管俺取的是哪个数,你都需要这么多问题!

认真的同学可能会叫板说,哎,这个 T 也未必是 2 的整数次方啊,二分法能用吗?!嗯,这个问题不错。但可以这样想,只要把 n 弄得足够大,总可以让 T 非常接近 2 的某个整数次方。而且,即使 T 真的不是 2 的整数次方,还可以换一个角度得到我们后面要得到的结论,比如,一定存在一个整数K 使得 T 是在 2^K 和 2^(K+1)之间......总之,当 n 无穷大的时候,凌乱的世界都变整齐了,这个问题不再是问题了。

这个最少问题数 log T 是用来问这个长度为 n 的硬币序列的。平均到每次掷硬币,平均需要的最少问题数就是(log T)/n。稍微整理一下这个表达式就应该可以看到,这个数字正好等于-(1/3) log(1/3)-(2/3) log (2/3)。

这也就是压缩这个“老千掷硬币”信息源所需要的最少比特数。