2. Riferimenti 2
Questo materiale è tratto dalle trasparenze
del corso Introduction to Algorithms
(2005-fall-6046) tenuto dal Prof. Leiserson
all’MIT (http://people.csail.mit.edu/cel/)
T.H. Cormen, C.E. Leiserson, R.L. Rivest,
C. Stein Introduction to Algorithms,
Second Edition, The MIT Press, Cambridge,
Massachusetts London, England
McGraw-Hill Book Company
Queste trasparenze sono disponibili sui siti
http://webspace.elet.polimi.it/lanzi
http://www.slideshare.net/pierluca.lanzi
Prof. Pier Luca Lanzi
4. Algoritmi, struttura dati e
analisi (asintotica) della performance
Notazione O, Ω, e Θ
Come calcolare T(n)?
Analiticamente o sviluppando l’equazione
In questa lezione vediamo altri tre metodi:
Sostituzione, Alberi, & Master Method
Prof. Pier Luca Lanzi
6. Analisi di Algoritmi Ricorsivi:
Metodo per Sostituzione
Forse il metodo più generale,
si può applicare sempre
1. “Indovinare” la forma della soluzione
2. Verificare la soluzione per induzione
3. Calcolare eventuali costanti
Prof. Pier Luca Lanzi
7. Esempio 7
Esempio: T(n) = 4T(n/2) + n
Assumiamo che T(1) = Θ(1)
Ipotizziamo ad esempio che T(n) sia O(n3)
Assumendo che T(k) ≤ ck3 for k < n,
dimostramo per induzione che T(n)≤cn3
Soluzione
T(n) 4 T(n / 2) n
4c(n / 2)3 n
(c / 2)n3 n
cn3 ((c / 2)n3 n) bound desiderato (- residuo)
cn3
vero per (c/2)n3 – n≥0, for example, if c ≥ 2 and n ≥ 1.
Prof. Pier Luca Lanzi
8. Esempio (condizioni iniziali) L2.8
Infine dobbiamo considerare le condizioni iniziali
che sono alla base della dimostrazione per induzione
In questo caso, T(1) = Θ(1) per n<n0, per un opportuno n0
Per 1≤n<n0, abbiamo “Θ(1) ” ≤cn3,
se c è scelto opportunamente grande
Questo vincolo non è stretto
Prof. Pier Luca Lanzi
9. Esiste un Limite Superiore più Stretto? 9
Proviamo a dimostrare che T(n) è O(n2)
Assumiamo T(n) ≤ ck2 per k<n, dimostriamolo per n
T(n) 4T(n / 2) n
4c(n / 2)2 n
cn2 n
O(n2 )
cn2 ( n) bound desiderato (- residuo)
cn2 Falso! Per nessuna scelta di c può essere ≤ cn2
È però possibile migliorare il limite dimostrando che
T(n) ≤ c1n2 – c2n
Prof. Pier Luca Lanzi
11. Alberi di Ricorsione
Calcoliamo la complessità andando a sviluppare
l’esecuzione su una struttura ad albero
Considerato inaffidabile, è però molto intuitivo
Prof. Pier Luca Lanzi
20. Analisi di Algoritmi Ricorsivi: 20
Master Method
Si applica a forme ricorsive del tipo,
T(n) = aT(n/b) + f(n)
dove a≥1, b>1, ed f è asintoticamente positiva
Si confronta f(n) con nlogba
Tre casi possibili
f(n) cresce più lentamente di nlogba
f(n) cresce in maniera simile a nlogba
f(n) cresce più velocemente di nlogba
Prof. Pier Luca Lanzi
21. Analisi di Algoritmi Ricorsivi: 21
Master Method
Caso 1: f(n) cresce più lentamente di nlogba
f (n) = O(nlogba – ) per una costante ε > 0
Soluzione: T(n) = Θ(nlogba)
Caso 2: f(n) cresce in maniera simile a nlogba
f (n) = Q(nlogba lgkn) per una costante k≥0
Soluzione: T(n) = (nlogba lgk+1n)
Caso 3: f(n) cresce più velocemente di nlogba
f (n) = Ω(nlogba+ ) per una costante ε>0
f (n) cresce più velocemente di nlogba (di un fattore nε),
ed f (n) soddisfa la condizione af (n/b)≤cf(n) per una
costante c < 1
Soluzione: T(n) = Θ(f(n))
Prof. Pier Luca Lanzi
22. Esempi 23
Esempio 1: T(n) = 4T(n/2) + n
a = 4, b = 2 nlogba = n2; f(n) = n
T(n) = Θ(n2)
Esempio 2: T(n) = 4T(n/2) + n2
a = 4, b = 2 nlogba = n2; f(n) = n2
f (n) = Θ(n2lg0n), ovvero, k = 0
T(n) = Θ(n2lg n)
Esempio 3: T(n) = 4T(n/2) + n3
a = 4, b = 2 nlogba = n2; f(n) = n3
f (n) = Ω(n2+ε) con ε = 1
T(n) = Θ(n3)
Prof. Pier Luca Lanzi
23. Esempi 24
Esempio 4: T(n) = 4T(n/2) + n/lgn
a = 4, b = 2 nlogba = n2; f(n) = n/lgn
Il master method non si applica
Prof. Pier Luca Lanzi
24. Qual è l’Idea del Master Method?
Albero di ricorsione
f (n) f(n)
a
f (n/b) f (n/b) … f (n/b) af(n/b)
h = logbn a
f (n/b2) f (n/b2) … f (n/b2) a2f(n/b2)
…
#nodi = ah
T (1) T(1)nlogba
= alogbn
= nlogba
Prof. Pier Luca Lanzi
25. Master Method: Caso 1
Albero di ricorsione
f (n) f(n)
a
f (n/b) f (n/b) … f (n/b) af(n/b)
h = logbn a
f (n/b2) f (n/b2) … f (n/b2) a2f(n/b2)
…
T (1) Caso 1: La performance è dominata T(1)nlogba
dal costo dei nodi finali
Θ(nlogba)
Prof. Pier Luca Lanzi
26. Master Method: Caso 2
Albero di ricorsione
f (n) f(n)
a
f (n/b) f (n/b) … f (n/b) af(n/b)
h = logbn a
f (n/b2) f (n/b2) … f (n/b2) a2f(n/b2)
…
Caso 2: (k = 0) il costo è
T (1) distribuito uniformemente su tutti T(1)nlogba
i logbn livelli
Θ(nlogbalgn)
Prof. Pier Luca Lanzi
27. Master Method: Caso 3
Albero di ricorsione
f (n) f(n)
a
f (n/b) f (n/b) … f (n/b) af(n/b)
h = logbn a
f (n/b2) f (n/b2) … f (n/b2) a2f(n/b2)
…
Caso 3: Il costo decresce
T (1) geometricamente dalla radice alle T(1)nlogba
foglie. Il costo e’ dominato dal costo
f(n) della radice.
Θ(f(n))
Prof. Pier Luca Lanzi
29. Sommario 30
Due metodi per risolvere
Sostituzione
Master method
Sostituzione
Intuizione
Dimostrazione per induzione
Generale, sempre applicabile
Master method
Applicabile a forme ricorsive del tipo
T(n) = aT(n/b) + f(n) con a≥1, b>1,
ed f asintoticamente positiva
Diretto, ma limitato a questo tipo di equazioni
Prof. Pier Luca Lanzi