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
1n n 1
1
n(n − 1) lg n −  − 1 ≤ n 2 lg n − n 2
2
22 2 2
8
Marina Zanella – Algoritmi e strutture dati – Quicksort: appendice
per n ≥ 2
8