这一系列文章记录了我遇到过的一些 趣题

文章内容 简介
奇思妙想 数学和计算机领域,通过小小思考后能豁然开朗的趣题。
概率和期望 数学和计算机领域,与概率和期望相关的趣题。
算法题精选-1 OI/ICPC 向的算法题,去其琐碎、留其精髓,望博君一笑。
算法题精选-2 OI/ICPC 向的算法题,相比上一期题意更简洁,出处往往不可考

简单游走问题

题意:初始时你在数轴的位置 00 处,每单位时间能向左/右走一格。问第一次走到 11 的期望步数。

解法一:设 fif_i 表示正好向右走了 ii 步的期望。得 fi=12(fi1+fi+1)+1f_i=\frac{1}{2}(f_{i-1}+f_{i+1})+1f0=0f_0=0,联立化简后得 fi=2fi1fi22(i2)f_i = 2f_{i-1}-f_{i-2}-2(i \geq 2)。继续化简得 fi=(3i4)f1(i1)if_i=(3i-4)f_1-(i-1)i。我们要求的是 f1f_1。假设 f1=xf_1=x,则 fn=(3n4)x(n1)nf_n=(3n-4)x-(n-1)n,当 n+n \rightarrow +\inftyfnf_n \rightarrow -\infty,显然矛盾。所以 f1=+f_1=+\infty

解法二:设 f1f_1 表示正好向右走了一步的期望。注意期望是有可加性的,所以f1=12(0+2f1)+1f_1=\frac{1}{2}(0+2f_1)+1,化简得 f1=f1+1f_1=f_1+1。显然 f1=+f_1=+\infty

构造固定概率的函数

题意:一个函数 f()f() 会以 pp 的概率返回 11,以 1p1-p 的概率返回 00。构造一个函数 g()g(),以正好 0.50.5 的概率返回 0011。注意:pp 是一个固定但是未知的概率。此题在 知乎 上有详细讨论。

解法:连续调用两次 f()f(),显然返回 01011010 的概率相同,我们可以根据这个来决定 g()g() 的返回,如果返回值相同,就继续这么操作。显然,当 p0/1p \rightarrow 0/1 时,这个的期望步数趋于无穷大。

改进后解法:我们可以设计算法使期望步数进一步下降。对于询问序列的一个前缀长度 nn,一旦 CnmC_n^m 是偶数(mm 是返回的 11 的个数),其实我们就能立即结束并得到返回值(总能分成两半)。如何决定返回什么呢?每次看当前 01 序列和它的回文哪个字典序小,一样就递归一半,复杂度 O(N)O(N)

找号码牌的概率题

题意:有 100100 个人编号为 11001 \sim 100,对应他们编号的 100100 个号码牌被打乱放在了100100 个抽屉里。每个人可以打开至多半数的抽屉,并从中找出对应自己编号的号码牌。只有所有人都找到了自己的号码牌,任务才算成功(所有人会依次独立地操作,彼此不能交流,操作完后所有抽屉都会复原)。假设抽屉的各种放置状态出现的概率均等,设计一种固定的策略,所有人都成功的概率尽可能的大。

策略:首先打开自己号码的抽屉,如果没中,继续打开抽屉里号码牌对应的抽屉……重复 5050 次。

成功概率计算:显然,所有人都能找到自己,当且仅当所有圆环的长度不超过 5050

下面就是要计算,对于一个随机排列,置换环长度全都不超过 5050 的概率是多少。容斥。从 100100 个数中选出 m(>50)m(> 50) 个数构成大环(剩下的随便排)的方案数是:C100m(m1)!(100m)!C_{100}^m \cdot (m-1)! \cdot (100-m)!

所以最终答案为 P=1m=511001mP=1-\sum \limits_{m=51}^{100} \frac{1}{m}。且当 nn \rightarrow \infty 时,P1ln2P \rightarrow 1-\ln{2}

抛硬币使得连续两次正面朝上

题意:抛一枚质地均匀的硬币。问期望多少次抛出连续两个向上。

解法:这一类期望问题都不宜直接在序列上计算,可以直接根据概率的意义计算。设 fif_i 表示连续抛出 ii 个向上的期望抛硬币次数。显然 f1=2,fi=fi1+1+12fif_1=2,f_i=f_{i-1}+1+\frac{1}{2}f_i,化简得 fi=2fi1+2f_i=2f_{i-1}+2,原问题里 f2=6f_2=6

正面是反面两倍的概率

题意:抛一枚质地均匀的硬币,一旦正面朝上次数不低于反面朝上次数的两倍就停止,求能无限进行的概率。

转化问题:考虑一个初始在 x=1x=-1 的质点,每次有 12\frac{1}{2} 的概率向右移动一步,还有 12\frac{1}{2} 的概率向左移动两步。在 x=0x=0 处有一个吸收壁,求小球不被吸收的概率。

题解:假设小球被吸收的概率是 pp,则 p=12+12p3p=\frac{1}{2}+\frac{1}{2}p^3,解得 p=512p=\frac{\sqrt 5-1}{2}

最大化正好获得一个礼物的概率

来源:2019 Multi-University Training Contest 10 C by chenjb

题意:有 nn 个包裹,第 ii 个包裹有 pip_i 的概率存放着礼物。现在要选择一个包裹的子集,使得全打开后正好获得一个礼物的概率尽量的大。

分析:如果已经知道选择的集合,答案显然是 kpkik(1pi)\sum \limits_k p_k \prod \limits_{i \ne k} (1-p_i)

记已经打开的包裹中没有礼物的概率是 s0s_0,恰好有一个礼物的概率为 s1s_1。那么,再打开一个概率为 pp 的包裹会使 (s0,s1)(s0(1p),s1+(s0s1)p)(s_0, s_1) \rightarrow (s_0 (1 - p), s_1 + (s_0 - s_1) p)。显然,当 s0s1s_0 \leq s_1 时加入任何包裹都不会使答案变优。类似地,如果删除一个礼物之后 s0s1s_0 \leq s_1,那么删除这个包裹不会使答案变得更差。因此,任意一个最优解对应的非空包裹集合 GG 都满足 s0s1s_0 \leq s_1,且该集合每个真子集均有 s0>s1s_0 > s_1,也即 TG,s1s0=pTp1p<1\forall T \subsetneqq G, \frac{s_1}{s_0} = \sum \limits_{p \in T}{\frac{p}{1 - p}} < 1

不难发现 p1p\frac{p}{1 - p}pp 的单调性相同,因此,如果一个满足上述条件的非空包裹集合 GG 不是由包含礼物概率最大的那些包裹构成,那么可以把集合内概率最小的包裹 aa 换成集合外概率最大的包裹 bb,从而得到一个答案不会更劣的包裹集合 (G{a}){b}(G - \lbrace a \rbrace) \cup \lbrace b \rbrace。设新集合中概率最小的包裹为 cc,新集合的真子集 ((G{a}){b}){c}((G - \lbrace a \rbrace) \cup \lbrace b \rbrace) - \lbrace c \rbrace 可能不满足 s0>s1s_0 > s_1,此时可以不断地删去集合中概率最小的包裹,直到该集合满足条件。这个过程不会使答案变劣,不断地替换和删除包裹可以得到最优解。

结论:按照概率从大到小的顺序打开包裹直到 s0s1s_0 \le s_1 或者全部打开为止,可得到一个最优解。

不放回随机采样的实现

题意:有 nn 个物品,分别有权重 wiw_i,现在要不放回地选取其中的 kk 个物品,设计一种采样方法使得:每轮每个物品被选中概率是它的权重与剩余所有物品权重和的比值。

模拟解法:每一轮我们在 [0,irestwi)[0,\sum \limits_{i \in rest}w_i) 随机一个数,然后去定位这个数字所在的前缀和位置。可以用树状数组来加速模拟这一过程。复杂度 O(n+klogN)O(n+k\log N)

正解:本题有一个 等价转化。经过转化后,我们可以对每一个物品设一个随机变量 ui(0,1)u_i \sim (0,1),注意不同物品的 uiu_i 条件独立。对于每个物品,它的概率估价值 pi=ui1/wip_i=u_i^{1/w_i}。回到原题,如果要不放回地选取其中的 kk 个物品,我们直接把 uiu_i 按从大到小排,取前 kk 大即可。

简略证明:只考虑两个物品,假设他们的权重分别是 aabb

P(x=a)=0101[x1/ay1/b] dx dy=01dx01[yxb/a]dy=01xb/adx=aa+b\begin{align} \mathcal{P}(x=a)&=\int_{0}^1 \int_0^1 [x^{1/a} \ge y^{1/b}]~dx~dy \\ &=\int_{0}^1 dx \int_{0}^{1} [y \le x^{b/a}]dy \\ &=\int_{0}^1 x^{b/a}dx \\ &=\frac{a}{a+b} \end{align}

石头剪刀布只能出两个

题意:两个人绝顶聪明的人猜拳,甲只能出石头和剪刀,乙都可以出。双方玩无限次。每次胜利记 1 分,平局记 0 分,失败记 -1 分。双方都希望自己的得分尽量高。问无限局下情况如何。

结论1:乙出石头永远不会输。其实这个结论对解这道题没啥帮助= =。

结论2:乙永远不可能出剪刀。因为乙可以把出剪刀的局全部替换成石头,一定不会变劣。

总结:这样双方其实都只能出两个。不妨设双方各执最优策略下甲出石头和剪刀的概率分布是 a,ba,b,乙出石头和步的概率分布是 x,yx,y,我们有乙得分期望 E=bx+ayby=1+2a+2x3axE=bx+ay-by=-1+2a+2x-3axEExx 求偏导解得 a=23a=\frac{2}{3}。同理解得 x=23x=\frac{2}{3}。即在无限局情况下,甲获胜的概率是 19\frac{1}{9},乙获胜的概率是 49\frac{4}{9}

等概率乘 1.1 或 0.9

来源:知乎上的 讨论

圣彼得堡悖论

来源:知乎的 讨论,是 A Probability Path by Sidney I. Resnick 中名为 St. Petersburg paradox 的例子。

题意:如果有一个游戏,有 2n2^{-n} 的概率获得 2n(n1)2^n(n \ge 1) 元,那么玩 nn 场期望能赢多少钱?

直接转化:随机变量 XX 服从离散分布 P(X=2k)=2k,k=1,2,P(X=2^k)=2^{-k},k=1,2,\dots,则 E(x)=+E(x)=+\infty 确实成立。

悖论:如果我们玩 nn 次游戏(每次游戏都是独立同分布的),当 n+n \rightarrow +\infty 时,由大数定律可得样本均值可以逼近总体均值,也就是说平均每把游戏可以赢 ++\infty 元。但感觉实际操作不会赢那么多!

解释:大数定律的条件之一是 EXi<+E|X_i|<+\infty,所以上述描述不满足大数定律,即无法推出相关结论。

最终结论:经过 General Weak Law of Large Numbers 的 一系列推导 后可得:

Snnlog2np1\frac{S_n}{n \log_2n} \xrightarrow{p} 1

即当我们玩的次数 nn 足够大的时候,可以用 nlog2nn \log_2n 去近似玩 nn 次游戏总共赢得的钱。

三个随机变量的相关系数

来源知乎讨论-王赟的回答

题意:三个随机变量 A,B,CA,B,C。设 x,y,zx,y,z 分别是 AB,AC,BCAB,AC,BC 的相关系数,求当 x,yx,y 确定时 zz 的取值范围。

题解:列出协方差矩阵

M=[1xyx1zyz1]M=\left[ \begin{array}{ccc}1 & x & y \\x & 1 & z\\y & z & 1 \end{array} \right]​

由于方差非负,所以 MM 必须是半正定矩阵。又因为 MM 是实对称阵,等价于它的三个特征值均非负。

特征方程 λIM|\lambda I - M| 是一个关于 λ\lambda 的一元三次方程:

(λ1)3(x2+y2+z2)(λ1)2xyz=0λ33λ2+(3x2y2z2)λ+(x2+y2+z22xyz1)=0(\lambda - 1)^3 - (x^2+y^2+z^2) (\lambda - 1) - 2xyz = 0 \\ \lambda^3 - 3\lambda^2 + (3-x^2-y^2-z^2)\lambda + (x^2+y^2+z^2-2xyz-1) = 0

如果方程 λ3+bλ2+cλ+d=0\lambda^3+b\lambda^2+c\lambda+d=0 有三个实根 λ1,λ2,λ3\lambda_1,\lambda_2,\lambda_3,则三个实根均非负的充要条件是:

{b=(λ1+λ2+λ3)0(1)c=λ1λ2+λ1λ3+λ2λ30(2)d=λ1λ2λ30(3)\left\{ \begin{array}{lc}b = -(\lambda_1+\lambda_2+\lambda_3) \le 0 & (1) \\c = \lambda_1\lambda_2 + \lambda_1\lambda_3 + \lambda_2\lambda_3 \ge 0 & (2) \\d = -\lambda_1\lambda_2\lambda_3 \le 0 & (3)\end{array} \right.

由于 1x,y,z1-1\le x,y,z \le 1,前两个式子必定满足,等价于下列不等式恒成立:

x2+y2+z22xyz10x^2+y^2+z^2-2xyz-1 \le 0

如果 x,yx,y 已知,把方程看做是 zz 的一元二次方程,即

z22xyz+(x2+y21)0z^2 - 2xyz + (x^2+y^2-1) \le 0

注意到判别式 Δ=4(1x2)(1y2)0\Delta = 4(1-x^2)(1-y^2) \ge 0,那么该不等式的解为 z1zz2z_1 \le z \le z_2,即

xy1x21y2zxy+1x21y2xy-\sqrt{1-x^2}\sqrt{1-y^2} \le z \le xy+\sqrt{1-x^2}\sqrt{1-y^2}

数形结合:尝试用三角函数换元去分析这个结果。

因为 1x,y,z1-1\le x,y,z \le 1,分别设它们为 x=cosα,y=cosβ,z=cosγx = \cos\alpha, y = \cos\beta, z = \cos\gamma,其中 α,β,γ[0,π]\alpha, \beta, \gamma \in [0,\pi]

那么上述的结果等价于 cosαcosβsinαsinβcosγcosαcosβ+sinαsinβ\cos\alpha \cos\beta - \sin\alpha \sin\beta \le \cos\gamma \le \cos\alpha \cos\beta + \sin\alpha \sin\beta

三角恒等变换可得 cos(α+β)cosγcos(αβ)\cos(\alpha+\beta) \le \cos\gamma \le \cos(\alpha-\beta),即 αβγmin(α+β,2παβ)|\alpha - \beta| \le \gamma \le \min(\alpha + \beta, 2\pi - \alpha - \beta)

说明这里的随机变量可以看成无穷维空间的向量,协方差是它们的内积,而相关系数是向量的夹角的余弦。