SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Algoritmi e Strutture Dati
Analisi della complessità




  Prof. Pier Luca Lanzi
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
Nella lezione precedente...
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
Metodo per sostituzione
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
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
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
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
Alberi di ricorsione
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
Esempio


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




              Prof. Pier Luca Lanzi
                                      L2.12
Esempio


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




              Prof. Pier Luca Lanzi
                                      L2.13
Esempio


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

          T(n/4)                           T(n/2)




                   Prof. Pier Luca Lanzi
                                                    L2.14
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
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
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
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
Master method
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
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
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
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
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
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
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
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
Sommario
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
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

Weitere ähnliche Inhalte

Mehr von Pier Luca Lanzi

Mehr von Pier Luca Lanzi (20)

11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi
 
Breve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiBreve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei Videogiochi
 
Global Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomeGlobal Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning Welcome
 
Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di apertura
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparation
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data exploration
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph mining
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text mining
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rules
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluation
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clustering
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clustering
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clustering
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 Clustering
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensembles
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethods
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rules
 

Asd 02 Analisi Della Complessita

  • 1. Algoritmi e Strutture Dati Analisi della complessità Prof. Pier Luca Lanzi
  • 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
  • 12. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: Prof. Pier Luca Lanzi L2.12
  • 13. Esempio Calcoliamo T(n) = T(n/4) + T(n/2) + n2: T(n) Prof. Pier Luca Lanzi L2.13
  • 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. 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. 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. 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. 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
  • 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
  • 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