Order Statistics(Selection Problem) A more interesting problem is selection: finding the i th...

17
Order Statistics(Selection Problem) A more interesting problem is selection: finding the i th smallest element of a set We will show: A practical randomized algorithm with O(n) expected running time A cool algorithm of theoretical interest only with O(n) worst-case running time Naive algorithm: Sort and index i-th element T(n) = Θ(nlgn)+Θ(1) = Θ(nlgn) using merge sort or heapsort (not quicksort) BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 1

Transcript of Order Statistics(Selection Problem) A more interesting problem is selection: finding the i th...

Page 1: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Order Statistics(Selection Problem)

• A more interesting problem is selection:

finding the ith smallest element of a set

• We will show:

– A practical randomized algorithm with O(n) expected running time

– A cool algorithm of theoretical interest only with O(n) worst-case running time

• Naive algorithm: Sort and index i-th element

T(n) = Θ(nlgn)+Θ(1)

= Θ(nlgn)

• using merge sort or heapsort (not quicksort)

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 1

Page 2: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Selection in Expected Linear Time

• Randomized algorithm

• Divide and conquer

• Similar to randomized quicksort

– Like quicksort: Partitions input array recursively

– Unlike quicksort:

– Only works on one side of the partition

– Quicksort works on both sides of the partition

– Expected running times:

– SELECT: E[n] = Θ(n)

– QUICKSORT: E[n] = Θ(nlgn)

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 2

Page 3: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Selection in Expected Linear Time

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 3

Page 4: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Randomized Selection

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 4

• Key idea: use partition() from quicksort

– But, only need to examine one subarray

– This savings shows up in running time: O(n)

• We will again use a slightly different partition than the book:

q = RandomizedPartition(A, p, r)

A[q] A[q]

qp r

Page 5: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Randomized Selection

RandomizedSelect(A, p, r, i)

if (p == r) then return A[p];

q = RandomizedPartition(A, p, r)

k = q - p + 1;

if (i == k) then return A[q]; // not in book

if (i < k) then

return RandomizedSelect(A, p, q-1, i);

else

return RandomizedSelect(A, q+1, r, i-k);

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 5

A[q] A[q]

k

qp r

Page 6: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Randomized Selection

● Analyzing RandomizedSelect()■ Worst case: partition always 0:n-1

T(n) = T(n-1) + O(n)

= O(n2) (arithmetic series)○ No better than sorting!

■ “Best” case: suppose a 9:1 partitionT(n) = T(9n/10) + O(n)

= O(n) (Master Theorem, case 3)○ Better than sorting!

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 6

Page 7: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Randomized Selection

● Average case■ For upper bound, assume ith element always falls in larger

side of partition:

■ Let’s show that T(n) = O(n) by substitution

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 7

1

2/

1

0

2

1,max1

n

nk

n

k

nkTn

nknkTn

nT

What happened here?

Page 8: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Randomized Selection

• Assume T(n) cn for sufficiently large c:

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 8

nncnc

nnn

nnn

c

nkkn

c

nckn

nkTn

nT

n

k

n

k

n

nk

n

nk

122

1

21

22

11

2

12

2

2

)(2

)(

12

1

1

1

1

2/

1

2/

The recurrence we started with

Substitute T(n) cn for T(k)

“Split” the recurrence

Expand arithmetic series

Multiply it out

Page 9: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Randomized Selection

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 9

What happened here?Subtract c/2

What happened here?

What happened here?

What happened here?

• Assume T(n) cn for sufficiently large c:

The recurrence so far

Multiply it out

Rearrange the arithmetic

What we set out to prove

enough) big is c if(

24

24

24

122

1)(

cn

nccn

cn

nccn

cn

nccn

ccn

nnc

ncnT

Page 10: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Worst-Case Linear-Time Selection

● Randomized algorithm works well in practice● What follows is a worst-case linear time algorithm, really of theoretical

interest only● Basic idea:

■ Generate a good partitioning element■ Call this element x

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 10

Page 11: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Selection in Worst Case Linear Time

SELECT(S, n, i) // return i-th element in set S with n elements if n≤5 then SORT S and return the i-th element DIVIDE S into n/5 groups first n/5 groups are of size 5, last group is of size n mod 5 FIND median set M={m1 , …, m n/5 } mj = median of j-th group x ← SELECT(M, n/5 , n/5 /2 +1) PARTITION set S around the pivot x into L and R if i ≤ |L| then return SELECT(L, |L| , i) else return SELECT(R, n–|L| , i–|L|)

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 11

Page 12: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Choosing the pivot

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 12

Page 13: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Analysis

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 13

Page 14: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Analysis

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 14

Page 15: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Analysis

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 15

Page 16: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Selection in Worst Case Linear Time

SELECT(S, n, i) // return i-th element in set S with n elements if n≤5 then SORT S and return the i-th element DIVIDE S into n/5 groups first n/5 groups are of size 5, last group is of size n mod 5 FIND median set M={m1 , …, m n/5 } mj = median of j-th group x ← SELECT(M, n/5 , n/5 /2 +1) PARTITION set S around the pivot x into L and R if i ≤ |L| then return SELECT(L, |L| , i) else return SELECT(R, n–|L| , i–|L|)

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 16

Page 17: Order Statistics(Selection Problem) A more interesting problem is selection:  finding the i th smallest element of a set We will show: –A practical randomized.

Selection in Worst Case Linear Time

BIL741: Advanced Analysis of Algorithms I (İleri Algoritma Çözümleme I) 17