110 likes | 197 Vues
Explore the performance analysis, comparison, and conclusions of Quick Select and Quick Sort algorithms by Gene Itkis. Learn about expected number of compares, hiring strategies, hiring cost analysis, and more.
E N D
CS 330: AlgorithmsQuick Select Gene Itkis
QuickSelect: random divide & concur QSort(A[], F, L): • if F>L then return; • k Partition(A[],F,L); • QSort(A[], F, k-1); • QSort(A[], k+1, L); ----------------------- • Worst case: • T(n)=O(n)+ T(n-1) T(n)=O(n2) • Best Case: • T(n)=O(n)+ 2T(n/2) T(n)=O(n lg n) • Average: ??? QSel(A[], F, L, r): • if F>L then return; • k Partition(A[],F,L); • if k=r thenreturn A[k]; • if k>r then returnQSel(A[],F,k-1,r); • if k<r then returnQSel(A[],k+1,L,r-k); ----------------------- • Worst case: • T(n)=O(n)+ T(n-1) T(n)=O(n2) • Best Case: • T(n)=O(n)+ T(n/2) (or even on 1st call) T(n)=O(n) • Average: ??? Gene Itkis
QSort Analysis • Average performance = Expected Number of Compares • Notation: • zi = i-th smallest element of A[1..n] • Ci,j=Cj,i = the cost of comparing zi and zj • Pi,j = the probability of QSort comparing zi and zj • E[#compares]= all i,j>i Ci,j Pi,j =all i,j>i Pi,j • zi and zj are not compared if for some k: i<k<j, zk is chosen as a pivot before either zi or zj • Pi,j=2/(j-i+1) Gene Itkis
QSel Analysis(same as QSort!) • Average performance = Expected # of Compares • Notation: • zi = i-th smallest element of A[1..n] • Ci,j=Cj,i = the cost of comparing zi and zj • Pi,j = the probability of QSel comparing zi and zj • E[#compares]= all i,j>i Ci,j Pi,j =all i,j>i Pi,j • zi and zj are not compared if for some k: i<k<j, zk is chosen as a pivot before either zi or zj • NOT as in QSort: zi and zj are alsonot compared if for some k: r<k<j, zk is chosen as a pivot before either zr or zj • Recall: zr is the element QSel is looking for Gene Itkis
QSel Analysis ? zi<zj • Thus, Pi,j = 2/(max{|i-j|, |i-r|, |j-r|} +1) • Let • j= r+D (-r<D<n-r) • i= r+D’ (|D’|<|D|) • Then Pi,j < 2/D zj zi zk zr D D’ For QSort: Pi,j < 2/d; d=|j-i| Gene Itkis
QSort Analysis • Thus • E[#compares]=all i,j>iPi,j= all i,j>i 2/(j-i+1)< all i,j>i 2/(j-i) • Let j=i+d, where 0<d n-i. Then • E[#compares]< all i,j>i 2/(j-i)= all i,d2/d= = i=1..n d=1..n-i 2/d < i=1..nd=1..n 2/d 2i=1..nln n 1.4 n lg n Gene Itkis
QSel Analysis E[#compares] = all i,j>iPi,j =all i,d2/d < i=1..nd=1..n2/d 2i=1..nln n 1.4n lg n • Thus • E[#compares]=all i,j>i Pi,j < all D,D’ (|D’|<|D|) 2/D≤ -r<D<n-r D’= 1-|D|…|D|-12/D< -r<D<n-r2D2/D= -r<D<n-r 4= 4 n 2ndmight be “over-counting”: e.g. r=5, D=10, then D’=-4…9, not -9…9 Gene Itkis
Conclusion • Can find r-th smallest element in linear time: O(n) • E.g. median (useful for hw and tests ;-) • No need to sort – works faster without sorting • Murphy is not always right • Sometimes best case is more common than worst: • QSort • Worst case: O(n2); Best and Average: O(n lg n) • QSel • Worst case: O(n2); Best and Average: O(n) • Randomized algorithms are COOL & USEFUL! Gene Itkis
Hiring Problem • Another example of the above principles • Problem • N candidates come for a job (at large intervals) • You are the big boss • You want the best, but do not want to wait • Your hiring strategy – greedy: • Get the best you’ve seen so far (i.e. better than the current choice) • Assume: easy to compare candidates/workers • Each “fire current & hire new” procedure costs $1K • How much you will spend eventually? Gene Itkis
Hiring Problem • Best case: • Best candidate comes first • Cost: $1k • Probability: • 1/N • Worst case: • Best candidate comes last • Not enough – e.g. if 2nd best comes first, cost=$2k • Worst case: every candidate is hired => • Candidates come in increasing quality order • Cost: $Nk • Probability: • 1/(N!) • Average: ??? Gene Itkis
Expected Number of Hires • QSort/Qsel – expected # of compareshere: expected # of hires E(#hires) • Let Pi= probability that i-th candidate is hired • E(#hires) = all i $1k×Pi = $1k×all i Pi= • Pi=Prob[i-th hired] = Prob[i-th is best of 1..i] • Pi = 1/i • E(#hires) = $1k×all iPi = = $1k×i=1..N1/i $1k× ln n $0.7k lg n Gene Itkis