“随机算法可视为 $\mathcal A c$ 上的分布 $\rho$,输入方的分布记为 $\mu$。两者相遇时的期望损失是”
形式陈述
随机化算法把随机比特或其他指定随机量作为额外输入。写作
它要求每个固定输入都具有该成功率,并不假定输入本身均匀随机。
两类常用保证控制的对象不同。Las Vegas 算法在返回答案时总是正确,并以概率一终止;通常进一步要求对每个输入的期望运行时间有限或满足给定上界。Monte Carlo 算法在指定时间界内完成,但允许小概率返回错误答案。Las Vegas 的随机性主要体现在工作量上,Monte Carlo 的随机性还体现在答案是否正确上。
对判定问题,错误只发生在“是”或“否”一侧,称为单侧错误;两侧都可能出错则为双侧错误。若算法允许返回显式的“本次未完成”,应单独计入失败事件,而不是把这个标记说成问题的正确答案。
直觉
随机化改变的是算法面对固定输入时的选择方式。一个排列可以让“总选第一个元素作枢轴”反复遇到极端划分,但未必能让“每次从当前元素中均匀选枢轴”也以高概率持续失衡。算法不需要输入天然友好,而是自己控制随机分布,再证明不利选择累计发生的可能性。
这与平均情形分析不同。平均情形分析对输入分布取平均;随机算法分析可以把输入完全固定,只平均内部随机选择。二者也能同时使用,但需要写成两层随机量,不能在证明中悄悄互换。
分析时可以先把所有随机选择收集成一条“随机带”
例子与边界
随机快排:答案不随机,代价随机
对互异元素,每轮随机选择枢轴、正确划分并递归的快速排序,无论选到什么枢轴,最终排序结果都正确。若总选到当前最小或最大值,工作量仍可达到
把元素按最终秩记为
这里使用期望的线性性,不需要假设不同元素对的比较事件相互独立。大量重复值时应使用正确处理相等块的划分方式,不能直接照搬互异秩的这段计数。
Freivalds 检验:少量随机投影检查矩阵乘法
设
一次检验只需矩阵—向量乘法,共
在
例如在实数域上取
这段证明使用精确域运算。
独立重复与重复同一次实验
对上面的错误矩阵,使用
双侧错误通常用多数投票放大。若每轮独立、每轮正确率至少为
最坏输入与最坏随机选择
表达式
推论与应用
有限期望时间可以转成带失败概率的时间界。取
随机种子有利于复现实验,但复现与概率保证处在不同层次。固定种子后,执行本身已经确定;理论保证针对规定的抽样分布。使用伪随机生成器时,应区分“按数学模型独立抽样”的定理与“具体实现如何近似或实现所需随机性质”的说明。
Moser–Tardos 重采样算法给出另一种 Las Vegas 构造:反复修复当前坏事件,返回时所有约束都满足。它把随机带按变量排成重采样表,用见证树控制期望修复次数;要得到期望时间界,还须计入抽样、收集受影响约束和重新检查的成本。
通用哈希通过函数族的碰撞概率控制搜索结构,随机选择通过枢轴质量控制剩余规模,随机检验通过投影避免计算全部结果。三者使用随机性的机制不同;应分别明确抽样对象、坏事件和成本,而不是把“加入随机数”当作效率证明。
随机线性网络编码随机选择局部有限域系数,终点通过验秩判断是否收到足够独立信息。其失败概率可由非零行列式多项式的零点界控制;失败可以显式检测并重试,而不是在秩不足时输出未经验证的数据。域大小、网络结构与随机系数分布共同决定概率保证。
参考资料
- Jeff Erickson,Algorithms 随机化讲义:Nuts and Bolts:平均输入与内部随机性的区别、随机选择和快速排序。
- Rajeev Motwani 与 Prabhakar Raghavan,Randomized Algorithms,1995,Chapter 1:Las Vegas、Monte Carlo 与随机验证;进一步阅读。
- Rūsiņš Freivalds,“Fast Probabilistic Algorithms”,Mathematical Foundations of Computer Science,1979,pp. 57–69:矩阵乘法随机检验的原始工作。