2025.1.21 NOI 2025 讲座 随机性与算法设计 笔记
生日悖论(Birthday Paradox)
\(n\) 个人中有至少两人同一天生日的概率为 \(1-\prod_{i=0}^{n-1}\frac{365-i}{365}=1-\frac{365!}{365^n(365-n)!}\)
以下是其部分取值:
| \(n=\) | \(10\) | \(20\) | \(23\) | \(30\) | \(50\) | \(57\) | \(80\) |
|---|---|---|---|---|---|---|---|
| \(P=\) | \(11.7\%\) | \(41.1\%\) | \(50.7\%\) | \(70.6\%\) | \(97\%\) | \(99\%\) | \(>99.9\%\) |
\(n\) 个人中至少有三人同一天生日,要使概率大于一半,需要 \(88\) 人
这些数据有些违背常理,因此称为悖论
双信封问题(Two Envelopes Problem)
给定两个信封,其中一个中的钱数为另一个的两倍,打开了一个后发现有 \(500\) 元,问是否交换
交换后似乎期望得到之前的 \(\frac 54\),显然这违背常理
正确做法是,假设一个中钱数为 \(x\),另一个钱数为 \(2x\),则 \(\frac 12\) 的概率由 \(x\) 变为 \(2x\),有 \(\frac 12\) 的概率由 \(2x\) 变为 \(x\),交换后期望获利不变
三门问题(Monty Hall Problem)
三扇相同的门,一扇后面有奖,你选择了一扇,有人为你打开了另一扇,后面没有奖,问是否改变选择
是否改变取决于“有人”的决策
初始有 \(\frac 13\) 的概率当前选择门之后有奖
其他 \(\frac 23\) 的情况下,若“有人”的决策为以 \(x\) 的概率打开有奖的门,以 \(1-x\) 的概率打开无奖的门,则总计 \(\frac 23\cdot x\) 的概率打开的门之后有奖,\(\frac 23(1-x)\) 的概率打开的门后面无奖
根据当前看到的情况,要么是 \(\frac 13\) 的概率当前选择门之后有奖,要么 \(\frac 23(1-x)\) 的概率第三扇门后面有奖
此时不换的获奖概率为 \(\dfrac{\frac 13}{\frac 13+\frac 23(1-x)}=\frac1{3-2x}\)
当 \(x< \frac 12\) 时,不换的获奖概率 \(<\frac 12\),此时换更优
文档比较
两个长为 \(n\) 的二进制文档,分别保存在两地,分别向你发送一段信息,要根据发来的信息以较高的正确率判断两者内容是否相同
朴素实现为 \(O(n)\) 时间复杂度,\(O(n)\) 通信复杂度,正确率 \(100\%\)
有一种通信复杂度 \(O(\log n)\) 的做法:在 \([n^2,2n^2)\) 中随机选择 \(O(\log n)\) 个两两不同的质数,再随机选择 \(O(\log n)\) 个两两不同的正整数,一个质数和一个正整数为一组
对于每组质数 \(p\) 正整数 \(x\) 和每个文档,求出将文档看做 \(x\) 进制数时,值对 \(p\) 取模的结果
若两文档的 \(O(\log n)\) 个信息相同,则判断两者相同,否则不同
错误率 \(\frac 1n\)
若要错误率不高于 \(\frac1{n^c}\),则可令 \(p\) 在 \([n^{c+1},2n^{c+1})\) 中取
若通信的单位为 \(bit\),则通信复杂度为 \(O(\log^2n)\)
矩阵乘法判定
给定 \(n\times n\) 的矩阵 \(A,B,C\),判断 \(A\times B=C\) 是否成立
朴素做法是矩阵乘法,直接乘为 \(O(n^3)\) 的,目前最优的算法时间复杂度为 \(O(n^{2.3728596})\),由于其常数过大而在 \(oi\) 中难以使用
考虑概率性算法
随机选择一个长为 \(n\) 的向量 \(\vec v\),计算 \(A\times(B\times\vec v)\) 和 \(C\times \vec v\),若两者不等则 \(A\times B\ne C\)
将上述过程重复 \(T\) 次,若仍然相等则判断相等
时间复杂度 \(O(Tn^2)\),一般 \(T\) 取 \(20\) 就够了
多项式相等判定
给定两个多项式(两者以多项相乘或类似的形式给出,可以 \(O(n)\) 将值带入未知元求值,但暴力展开时间复杂度无法接受),判断两者是否相等
为每个未知元赋一个随机数,带入后判断两者的值是否相等
若两个多项式中次数较高的为 \(d\) 次多项式,随机数在 \([0,p)\) 中选,则单次判断错误率为 \(\frac np\),一般令 \(p=O(n^2)\),重复 \(5\) 次左右即可保证正确率
走迷宫
走出一个没有标记的迷宫
有定理,在迷宫中随机游走,在 \(O(n^2)\) 的时间内有极高的概率到达迷宫每个角落
马尔科夫链蒙特卡洛方法(Markov-Chain Monte-Carlo Method)
一般用于计数,及最优化问题的近似求解
零知识证明(Zero-Knowledge Proof)
互不信任的双方仅通过通信证明某个命题极大概率正确,且过程中不透露任何额外信息
例如 \(A\) 要向 \(B\) 证明他有房间的钥匙,但是又不希望 \(B\) 看到钥匙的样子和开门的过程,则 \(A\) 可以让 \(B\) 在房间中选择一样东西,然后 \(A\) 开门将物品取出,从而证明自己有钥匙
关于圆周率随机性
猜想:任何 \(k\) 位数期望在圆周率前 \(O(10^k)\) 位小数中出现
关于素数随机性
- 定理:质数序列中包含任意长度的等差序列
- 孪生素数猜想:存在无穷对形如 \((p,p+2)\) 的正整数对,满足两者都是质数
去随机化
\(BPP\) 是在多项式时间内以概率图灵机解出的问题的集合,\(P\) 为多项式时间内有解的问题集合,则可以证明 \(P=BPP\)
例如:存在 \(O(\log n)\) 空间(以比特为单位)判断无向图是否联通的随机算法,之后发现的复杂度相同的确定算法
参考
讲座《随机性与算法设计》 by 孙晓明

浙公网安备 33010602011771号