QUICKSORT e RANDOMIZED-QUICKSORT: analisi del caso
Transcript
QUICKSORT e RANDOMIZED-QUICKSORT: analisi del caso
QUICKSORT e RANDOMIZED-QUICKSORT: analisi del caso pessimo (RANDOMIZED-)PARTITION T(n) = max (T(q)+T(n – q)) + Θ(n) 1 ≤ q ≤ n −1 Determinazione del limite superiore Ipotesi: T(n) ≤ c n2 per qualche costante c > 0 Sostituendo l’ipotesi nella definizione di T(n), si ottiene T(n) ≤ max 1 ≤ q ≤ n −1 (c q + c (n – q) ) + Θ(n) = c. 2 2 max 1 ≤ q ≤ n −1 (q2 + (n – q)2) + Θ(n) f(q) = q2 + (n – q)2 nell’intervallo 1 ≤ q ≤ n – 1 assume valore massimo in ciascuno dei due estremi (è una parabola con concavità rivolta verso l’alto e vertice nel punto di ascissa q = n/2, rispetto a cui i due estremi dell’intervallo sono simmetrici) → max (q2 1 ≤ q ≤ n −1 + (n – q)2) = 12 + (n – 1) 2 = n2 – 2(n – 1) Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice 1 QUICKSORT e RANDOMIZED-QUICKSORT: analisi del caso pessimo (cont.) Quindi l’ipotesi è dimostrata. Infatti T(n) ≤ c(n2 – 2(n – 1)) + Θ(n) = c n2 – 2c(n – 1) + Θ(n) ≤ c n2 perché, per ogni funzione Θ(n), è sempre possibile fissare un valore di c sufficientemente grande tale che 2c(n – 1) ≥ Θ(n) ↓ T(n) = O(n2) Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice 2 QUICKSORT e RANDOMIZED-QUICKSORT: analisi del caso pessimo (cont.) Determinazione del limite inferiore Ipotesi: T(n) ≥ c n2 per qualche costante c > 0 (N.B. questa c non è la stessa usata per la determinazione del limite inferiore) Si procede come per la determinazione del limite inferiore (ogni ≤ diventa ≥). Alla fine T(n) ≥ c n2 – 2c(n – 1) + Θ(n) ≥ c n2 è verificata perché, per ogni funzione Θ(n), è sempre possibile fissare un valore di c sufficientemente piccolo ma positivo tale che asintoticamente 2c(n – 1) ≤ Θ(n) Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice 3 QUICKSORT e RANDOMIZED-QUICKSORT: analisi del caso pessimo (cont.) Infatti, per la definizione della notazione Θ, Θ(n) ≥ a . n, con a costante reale positiva e n ≥ n0. Quindi 2c(n – 1) ≤ Θ(n) è soddisfatta se 2c(n – 1) ≤ a . n → n(a – 2c) + 2c ≥ 0 → c ≤ a/2 ↓ T(n) = Ω(n2) Limite asintotico stretto T(n) = O(n2) ∧ T(n) = Ω(n2) → T(n) = Θ(n2) Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice 4 RANDOMIZED-QUICKSORT: analisi del caso medio T(n) = n −1 1 T (1) + T (n − 1) + ∑ (T (q ) + T (n − q ) ) + Θ(n) n q =1 { CASO 1 RANDOMIZED-PARTITION { CASO 2 (n ≥ 2) Poiché, dall’analisi del caso pessimo ( ) 1 (T (1) + T (n − 1) ) = 1 Θ(1) + Θ(n 2 ) = Θ(n) → n n 1 n−1 2 n−1 T(n) = ∑ (T (q) + T (n − q) ) + Θ(n) = ∑ T (k ) + Θ(n) n q=1 n k =1 Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice 5 RANDOMIZED-QUICKSORT: analisi del caso medio (cont.) Determinazione del limite superiore Ipotesi: T(n) ≤ a n lg n + b per qualche costante a > 0, b > 0 (b ≥ T(1)) Sostituendo l’ipotesi nella definizione di T(n), si ottiene 2 n−1 2 n−1 2a n−1 2b T k n ak k b n k k ( ) + Θ ( ) ≤ ( lg + ) + Θ ( ) = lg + (n − 1) + Θ(n) ∑ ∑ ∑ n k =1 n k =1 n k =1 n T(n) = n−1 1 2 1 2 k lg k ≤ n lg n − n ∑ 2 8 k =1 T(n) ≤ 2a 1 2 1 2 2b a (n − 1) + Θ(n) ≤ an lg n − n + 2b + Θ(n) n lg n − n + n 2 8 n 4 a = an lg n + b + Θ(n) + b − n ≤ an lg n + b 4 Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice Per a sufficientemente grande cosicché an/4 superi Θ(n) + b 6 RANDOMIZED-QUICKSORT: analisi del caso medio (cont.) ↓ T(n) = O(nlgn) Determinazione del limite inferiore Si dimostra che T(n) = Ω(nlgn) Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice 7 Digressione: limite della sommatoria n−1 Si dimostra che 1 2 1 2 k lg k ≤ n lg n − n ∑ 2 8 k =1 lgk ≤ lg(n/2) = lgn – 1 come segue lgk ≤ lgn n −1 n / 2 −1 n −1 n / 2 −1 n −1 n −1 n / 2 −1 k =1 k =1 k = n / 2 k =1 k = n / 2 k =1 k =1 ∑ k lg k = ∑ k lg k + ∑ k lg k ≤ (lg n − 1) ∑ k + lg n ∑ k = lg n∑ k − ∑ k ≤ 1 1n n 1 1 n(n − 1) lg n − − 1 ≤ n 2 lg n − n 2 2 22 2 2 8 Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice per n ≥ 2 8