- Randomized Selection
1.1 R Select (array A, length n, order statistic i)
(0): if n =1 return A[1]
(1):choose pivot p from A uniformly at random.
(2):partition A around p;
let j = new index of p
(3): if j=i, return p;
(4): if j > i, return RSelect (1st part of A, j-1, i)
(5):if j > i , return RSelect(1st part of A, j-1, i)
(6):if j < i: return RSelect(2nd part of A, n-j, i-j) - Running Time of RSelect
2.1 RSelect Theorem: for every input array of length n, the average running time of RSelect is O(n) O ( n ) .
2.2 Tracking Progress via Phases.
Note: RSelect uses <=cn <= c n <script type="math/tex" id="MathJax-Element-27"><= cn</script> operations outside of the recursive call [for some constant c > 0]
Notation: RSelect is in phase j if current array size between (34)j+1n ( 3 4 ) j + 1 n and (34)jn ( 3 4 ) j n .
Xj= X j = numbers of recursive calls during phase j.
Note: running time of RSelect <=∑phasejXj⋅c⋅(34)jn <= ∑ p h a s e j X j ⋅ c ⋅ ( 3 4 ) j n <script type="math/tex" id="MathJax-Element-31"><=\sum_{phase j} X_j \cdot c \cdot (\frac{3}{4})^j n</script>
(1) (34)jn ( 3 4 ) j n : <= array size during phase j j
(2) : work per phase j subproblem.
(3) Xj X j :of phase -j subproblems.
2.3 Proof II: Reduction to Coin Flipping
Xj X j :# of recursive calls during phase j j
Note: if RSelect choose a pivot giving a spltit (or better): then current phase ends!(new subarray length at most 75% of old length).
Recall: probability of 25%−75% 25 % − 75 % split or better is 50% 50 % .
So: E[xj]<= E [ x j ] <= expected number of times you need to flip a fair coin to get one “head”.
( heads≈goodpivot,tails≈badpivot h e a d s ≈ g o o d p i v o t , t a i l s ≈ b a d p i v o t )
2.4 Proof III: Coin Flipping Analysis
Let N= N = number of coin flips until you get heads
(a “geometric random varible”)
Note: E[N]=1+1α⋅E[N] E [ N ] = 1 + 1 α ⋅ E [ N ]
1 1 : 1st coin flip.
: probablity of tails
E[N]: E [ N ] : # of further coin flips needed in this case.
Solution: E[N]=α E [ N ] = α (Recall E[xj]<=E[N] E [ x j ] <= E [ N ] )
expected running time of RSelect:
≤E[cn∑phasej(34)jXj]≤cn∑phasej(34)jE[Xj]≤2⋅cn∑phasej(34)j≤8⋅cn=O(n)(2) (2) ≤ E [ c n ∑ p h a s e j ( 3 4 ) j X j ] ≤ c n ∑ p h a s e j ( 3 4 ) j E [ X j ] ≤ 2 ⋅ c n ∑ p h a s e j ( 3 4 ) j ≤ 8 ⋅ c n = O ( n )
其中: E(ofcoinflipsN)=2 E ( o f c o i n f l i p s N ) = 2
∑phasej(34)j≤11−34=4 ∑ p h a s e j ( 3 4 ) j ≤ 1 1 − 3 4 = 4
算法week4---algorithms-divide-conquer--part1(RSelect)
最新推荐文章于 2022-03-08 21:53:26 发布