算法导论 — 思考题7-3 另一种快速排序的分析方法

另一种快速排序的分析方法)对随机化版本的快速排序算法,还有另一种性能分析方法,这一方法关注于每一次单独递归调用的期望运行时间,而不是比较次数。
  a. 证明:给定一个大小为 n n 的数组,任何特定元素被选为主元的概率为 1 / n 1/n 。利用这一点来定义指示器随机变量 X i = I X_i = I {第 i i 小的元素被选为主元}, E [ X i ] E[X_i] 是什么?
  b. T ( n ) T(n) 是一个表示快速排序在一个大小为 n n 的数组上的运行时间的随机变量,试证明:
  在这里插入图片描述
  c. 证明公式(7.5)可以重写为:
  在这里插入图片描述
  d. 证明:
  在这里插入图片描述
  (提示:可以将该累加式分为两个部分,一部分是 k = 2 , 3 , , n / 2 1 k = 2, 3, …, ⌈n/2⌉-1 ,另一部分是 k = n / 2 , , n 1 k = ⌈n/2⌉, …, n-1 。)
  e. 利用公式(7.7)中给出的界证明:公式(7.6)中的递归式有解 E [ T ( n ) ] = Θ ( n l g n ) E[T(n)] = Θ(n{\rm lg}n) 。(提示:使用代入法,证明对于某个正常数 a a 和足够大的 n n ,有 E [ T ( n ) ] a n l g n E[T(n)] ≤ an{\rm lg}n 。)
  
  
  a.
  数组每个元素都等可能地被选为主元。因此,对于单一元素,它被选为主元的概率为 1 / n 1/n E [ X i ] E[X_i] 就等于第 i i 小的元素被选为主元的概率,即
   E [ X i ] = P r E[X_i] = Pr {第 i i 小的元素被选为主元} = 1 / n = 1/n
  
  b.
  对于一个大小为 n n 的数组,如果选定第 q q 小的元素(该元素用 z q z_q 表示)为主元,那么划分得到的 2 2 个子数组的大小分别为 q 1 q-1 n q n-q 。于是可以得到以下递归式
  在这里插入图片描述
   T q ( n ) T_q(n) 表示在选定第 q q 小的元素为主元的前提下,对大小为 n n 的数组进行快速排序的运行时间。其实 T q ( n ) T_q(n) 也是一个随机变量,因为 T ( q 1 ) T(q-1) T ( n q ) T(n-q) 也是随机变量,即 [ T ( q 1 ) + T ( n q ) + Θ ( n ) ] [T(q-1) + T(n-q) + Θ(n)] 也是随机变量。于是可以写出 T q ( n ) T_q(n) 的期望
  在这里插入图片描述
   q q 的取值范围是 1 , 2 , , n 1, 2, …, n ,于是我们可以计算 T ( n ) T(n) 的期望
  在这里插入图片描述
  上式中, E [ X q ] E ( T ( q 1 ) + T ( n q ) + Θ ( n ) ) = E [ X q ( T ( q 1 ) + T ( n q ) + Θ ( n ) ) ] E[X_q ]∙E(T(q-1)+T(n-q)+Θ(n))=E[X_q (T(q-1)+T(n-q)+Θ(n))] 成立,是因为随机变量 X q X_q [ T ( q 1 ) + T ( n q ) + Θ ( n ) ] [T(q-1)+T(n-q)+Θ(n)] 是互相独立的。
  
  c.
  将公式(7.5)的累加求和部分展开,得到下表
  在这里插入图片描述
  由上表可知,第 q q 个累加项与第 n q + 1 n-q+1 个累加项是完全对称相等的。于是有
  在这里插入图片描述
  上式中, q = 0 q = 0 q = 1 q = 1 分别对应的 T ( 0 ) T(0) T ( 1 ) T(1) 都为常数时间,可以将它们拿掉,这样并不影响最终的结果。于是有
  在这里插入图片描述
  d.
  按照提示,将累加式分为2个部分,于是有
  在这里插入图片描述
  e.
  只需证明 E [ T ( n ) ] = O ( n l g n ) E[T(n)] = O(n{\rm lg}n) 即可。
  初始情况取 n = 2 n = 2 T ( 2 ) T(2) 为常数时间。显然,只要取足够大的 a a ,就可使得 T ( 2 ) a 2 l g 2 = 2 a T(2) ≤ a•2•{\rm lg}2 = 2a 成立。
  下面进行归纳过程。假设 E [ T ( n ) ] a n l g n E[T(n)] ≤ an{\rm lg}n 2 , , n 1 2, …, n-1 都成立,那么有
  在这里插入图片描述
  只要取足够大的 a a ,就能使得 a n l g n 1 4 a n + Θ ( n ) a n l g n an{\rm lg}n-\frac{1}{4} an+Θ(n)≤an{\rm lg}n 成立,即 E [ T ( n ) ] a n l g n E[T(n)] ≤ an{\rm lg}n 成立。

猜你喜欢

转载自blog.csdn.net/yangtzhou/article/details/88771305