Asd 02 Analisi Della Complessita
Upcoming SlideShare
Loading in...5
×
 

Asd 02 Analisi Della Complessita

on

  • 4,153 views

Corso di Algoritmi e Strutture Dati 2008/2009

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

Statistics

Views

Total Views
4,153
Views on SlideShare
4,144
Embed Views
9

Actions

Likes
1
Downloads
70
Comments
0

1 Embed 9

http://www.slideshare.net 9

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Asd 02 Analisi Della Complessita Asd 02 Analisi Della Complessita Presentation Transcript

  • 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