Algoritmi e Strutture Dati
Analisi della complessità




  Prof. Pier Luca Lanzi
Riferimenti                                      2



 Questo materiale è tratto dalle trasparenze
  del corso Introducti...
Nella lezione precedente...
Algoritmi, struttura dati e
  analisi (asintotica) della performance

           Notazione O, Ω, e Θ

          Come calco...
Metodo per sostituzione
Analisi di Algoritmi Ricorsivi:
Metodo per Sostituzione

              Forse il metodo più generale,
                si pu...
Esempio                                                  7



 Esempio: T(n) = 4T(n/2) + n
     Assumiamo che T(1) = Θ(1)...
Esempio (condizioni iniziali)                L2.8



 Infine dobbiamo considerare le condizioni iniziali
  che sono alla ...
Esiste un Limite Superiore più Stretto?            9



 Proviamo a dimostrare che T(n) è O(n2)
 Assumiamo T(n) ≤ ck2 pe...
Alberi di ricorsione
Alberi di Ricorsione

Calcoliamo la complessità andando a sviluppare
    l’esecuzione su una struttura ad albero

Consider...
Esempio


Calcoliamo T(n) = T(n/4) + T(n/2) + n2:




              Prof. Pier Luca Lanzi
                                ...
Esempio


Calcoliamo T(n) = T(n/4) + T(n/2) + n2:
                          T(n)




              Prof. Pier Luca Lanzi
 ...
Esempio


Calcoliamo T(n) = T(n/4) + T(n/2) + n2:
                               n2

          T(n/4)                     ...
Esempio


Calcoliamo T(n) = T(n/4) + T(n/2) + n2:
                               n2

          (n/4)2                     ...
Esempio


Calcoliamo T(n) = T(n/4) + T(n/2) + n2:
                               n2

          (n/4)2                     ...
Perchè si chiama “albero”?




                                    n2

             (n/4)2                           (n/2)...
Esempio


Calcoliamo T(n) = T(n/4) + T(n/2) + n2:
                               n2                                   n2

...
Master method
Analisi di Algoritmi Ricorsivi:                20
Master Method

 Si applica a forme ricorsive del tipo,

  T(n) = aT(n/b...
Analisi di Algoritmi Ricorsivi:                    21
Master Method

 Caso 1: f(n) cresce più lentamente di nlogba
     f...
Esempi                                       23



 Esempio 1: T(n) = 4T(n/2) + n
     a = 4, b = 2  nlogba = n2; f(n) =...
Esempi                                          24



 Esempio 4: T(n) = 4T(n/2) + n/lgn
     a = 4, b = 2  nlogba = n2;...
Qual è l’Idea del Master Method?



                       Albero di ricorsione

                                  f (n)  ...
Master Method: Caso 1



                       Albero di ricorsione

                                  f (n)             ...
Master Method: Caso 2



                       Albero di ricorsione

                                  f (n)             ...
Master Method: Caso 3



                       Albero di ricorsione

                                  f (n)             ...
Sommario
Sommario                                       30



 Due metodi per risolvere
    Sostituzione
    Master method

 Sost...
Appendice: Serie Geometriche




                                   1    xn 1
1   x       x2          xn                 ...
Upcoming SlideShare
Loading in …5
×

Asd 02 Analisi Della Complessita

2,323 views

Published on

Corso di Algoritmi e Strutture Dati 2008/2009
Politecnico di Milano
Prof. Pier Luca Lanzi

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,323
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
72
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Asd 02 Analisi Della Complessita

  1. 1. Algoritmi e Strutture Dati Analisi della complessità Prof. Pier Luca Lanzi
  2. 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
  3. 3. Nella lezione precedente...
  4. 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
  5. 5. Metodo per sostituzione
  6. 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. 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. 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. 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
  10. 10. Alberi di ricorsione
  11. 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
  12. 12. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: Prof. Pier Luca Lanzi L2.12
  13. 13. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: T(n) Prof. Pier Luca Lanzi L2.13
  14. 14. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: n2 T(n/4) T(n/2) Prof. Pier Luca Lanzi L2.14
  15. 15. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: n2 (n/4)2 (n/2)2 T(n/16) T(n/8) T(n/8) T(n/4) Prof. Pier Luca Lanzi L2.15
  16. 16. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: n2 (n/4)2 (n/2)2 (n/16)2 (n/8)2 (n/8)2 (n/4)2 Θ(1) Prof. Pier Luca Lanzi L2.16
  17. 17. Perchè si chiama “albero”? n2 (n/4)2 (n/2)2 (n/16)2 (n/8)2 (n/8)2 (n/4)2 Θ(1) Prof. Pier Luca Lanzi
  18. 18. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: n2 n2 5 2 (n/4)2 (n/2)2 n 16 25 2 (n/16)2 (n/8)2 (n/8)2 (n/4)2 n 256 … Totale = n 1 5 2 5 3 2 5 16 16 16  Θ(1) = Θ(n2) (serie geometrica) Prof. Pier Luca Lanzi
  19. 19. Master method
  20. 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. 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. 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. 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. 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. 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. 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. 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
  28. 28. Sommario
  29. 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
  30. 30. Appendice: Serie Geometriche 1 xn 1 1 x x2  xn per x≠1 1 x 1 1 x x 2  for |x| < 1 1 x Prof. Pier Luca Lanzi

×