指示变量法
2025-03-26
0. 引入
根据期望的线性性:
那么,就可以通过找到
- 能够找到
这样的分解 - 计算
比直接计算 容易 - 计算出
后,对 求和容易,即计算 容易,特别地,若 ,则
条件 3 不必总是满足,有时
对于事件
立刻有
如果能找到一系列事件
那么只需
1. 逆序数
数列
逆序对是满足
考虑每对元素是否形成了逆序对,例如
令
则由对称性,
逆序对总数:
所以:
2. 快速排序 1
研究随机化的快速排序:对于每一个子问题,等概随机地选择主元。我们希望研究这个随机算法所选主元总数的期望。
快速回顾一下快速排序算法,可以知道每个元素最多被选为主元一次。如果某个元素从未被选为主元,那么大小上相邻的元素一定被选为了主元。因此,一共至少
简化模型,设被排序的数列
设随机变量
一个有用的观点是:随机化快速排序等价于给每个元素一个随机优先级;在任意子区间中,优先级最高的元素最先成为主元。
则
故
3. 快速排序 2
注:本节内容改自 SJTU CS1212 slides
问题
现在研究快速排序的时间复杂度。
快速排序的时间复杂度主要来源于比较元素,因此可以用比较的总次数
设被排序的数列
基本事实
下面给出几个事实:
- 对于
,某个轮次中 与 产生比较,等价于 或 是当轮的主元,且任意满足 的 都尚未被选为主元,否则 和 已经被分开 - 对于
,由于 与 终要分开,要么被其他主元分开,要么两者直接比较。所以 等价于任意满足 的 都未被选为主元,直到 或 成为主元,也就等价于, 或 是 中最先成为主元的。
把“
计算
对于这个结果,可以作渐进分析,得到快速排序时间复杂度的经典结论:
4. 最小元素
问题
从集合
直接计算
记子集最小元素为随机变量
进一步处理这个式子比较困难,下面展示指示变量法如何巧妙解决问题。
方法 1
令事件
那么,
换元,令
方法 2
可以证明原问题与下面的问题等价:
序列
求
令事件
那么,
若
若
故
总结
最终,解决了问题,并且获得了一个组合恒等式:
评论区
最新评论
--