1. 随机化算法分类中 Monte Carlo(可能错)与 Las Vegas(可能慢)的差异,以及随机化快速排序/快速选择的期望分析?
请解释随机化算法两大分类——Monte Carlo(可能错)与 Las Vegas(可能慢)——的差异,并说明随机化快速排序与快速选择的期望复杂度分析?
- 随机化算法两大类别的结果正确性保证与运行时间保证
- 随机化快速排序/快速选择的期望时间推导
- 随机化在对抗恶意输入下的鲁棒性意义
Monte Carlo 算法保证在限定的时间内运行并返回结果,但结果有概率错误(错误概率可通过重复运行以指数级降低);Las Vegas 算法保证结果一定正确,但运行时间可能在少量随机度下变慢(随机性只影响时间不影响正确性)。随机化快速排序每次随机选 pivot,期望比较次数为 O(n log n),期望快速选择为 O(n);随机化保证了"期望"是相对任意输入序列取平均,而非对固定输入取平均,从而能对抗最坏情形输入。在确定性选择固定 pivot 时,如果输入恰好糟糕,会退化到 O(n²);随机化把这种坏情况概率化并摊薄到所有输入上。
核心在于随机化把"运气"从输入转移到算法内部,使任何输入下期望时间都受控。期望分析用线性期望与递归方程:快排期望代价 T(n)=n+Σ_{k=0}^{n-1}(1/n)(T(k)+T(n-1-k)),解得 T(n)=O(n log n)。快速选择同理,期望 O(n)。Monte Carlo 与 Las Vegas 可互相转化:对 Las Vegas 可加超时转 Monte Carlo,对 Monte Carlo 可重复验证转 Las Vegas。