]> アルゴリズムイントロダクション 第 9 章 中央値と順序統計量 (その 1)

中央値と順序統計量 (その 1)

nanto_vi (TOYAMA Nao)

予定

  1. 順序統計量とは
  2. 選択問題とは
  3. 最小値と最大値
  4. 平均線形時間選択アルゴリズム
  5. 最悪線形時間選択アルゴリズム

順序統計量とは

i 番目の順序統計量
i 番目に小さい要素
最小値
1 番目の順序統計量
最大値
n 番目の順序統計量
中央値
n + 1 2 番目の順序統計量 (n が奇数)
n 2 番目 (小さいほうの中央値) と n 2 + 1 番目 (大きいほうの中央値) の順序統計量 (n が偶数)

選択問題とは

最小値と最大値

最小値 (最大値) のみを求める

Minimum A 1 min A 1 2 for i 2 to length A 3 do if min > A i 4 then min A i 5 return min

最小値と最大値を同時に求めるには

対の中で比較し、その小さいほうを現在の最小値と、大きいほうを現在の最大値と比較する。

平均線形時間選択アルゴリズム

Randomized-Select A p r i 1 if p = r 2 then return A p 3 q Randomized-Partition A p r 4 k q - p + 1 5 if i = k 6 then return A q 7 elseif i < k 8 then return Randomized-Select A p q - 1 i 9 else return Randomized-Select A q + 1 r i - k

実行時間の評価

Randomized-Select の実行時間を T n とする。

ところで、 X k := I 部分配列 A p .. q がちょうど k 個の要素を持つ = I A の中で k 番目に小さい要素がピボットとなる とすると、 E X k = Pr A の中で k 番目に小さい要素がピボットとなる = 1 n

Randomized-Select の 1 回の呼び出しにおける実行時間は、 T n k = 1 n X k · T max k - 1 n - k + O n = k = 1 n X k · T max k - 1 n - k + O n k = 1 n X k = k = 1 n X k · T max k - 1 n - k + O n

この期待値は、 E T n E k = 1 n X k · T max k - 1 n - k + O n = k = 1 n E X k · T max k - 1 n - k + O n = k = 1 n E X k · E T max k - 1 n - k + O n = k = 1 n 1 n · E T max k - 1 n - k + O n = 1 n k = 1 n 2 E T n - k + k = n 2 + 1 n E T k - 1 + O n 1 n k = 1 n 2 E T n - k + k = n 2 + 1 n E T k - 1 + O n = 1 n k = n 2 + 1 n E T k - 1 + k = n 2 + 1 n E T k - 1 + O n = 2 n k = n 2 n - 1 E T k + O n

右辺第 2 項はある定数 a を用いて a n で抑えられる。ここで、ある定数 c に対して E T n c n 、ある定数 d に対して n < d T n = O 1 と仮定すると、 E T n 2 n k = n 2 n - 1 c k + a n = 2 c n k = 1 n - 1 k - k = 1 n 2 - 1 k + a n = 2 c n n - 1 n 2 - n 2 - 1 n 2 2 + a n 2 c n n - 1 n 2 - n 2 - 2 n 2 - 1 2 + a n = 3 c n 4 + c 2 - 2 n + a n 3 c n 4 + c 2 + a n = c n - c n 4 - c 2 - a n = c n - c - 4 a 4 n - c 2

ここで、 c > 4 a とすると、 n 4 c - 4 a c 2 = 2 c c - 4 a E T n c n だから、 E T n = O n