Algoritmi e Strutture Dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi e Strutture Dati. Analisi di algoritmi Funzioni di costo, notazione asintotica"

Transcript

1 Algoritmi e Strutture Dati Analisi di algoritmi Funzioni di costo, notazione asintotica Alberto Montresor Università di Trento 2018/12/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

2 Introduzione all analisi Notazione asintotica Notazioni O, Ω, Θ Definizione Notazione O Sia g(n) una funzione di costo; indichiamo con O(g(n)) l insieme delle funzioni f(n) tali per cui: c > 0, m 0 : f(n) cg(n), n m Come si legge: f(n) è O grande (big-o) di g(n) Come si scrive: f(n) = O(g(n)) g(n) è un limite asintotico superiore per f(n) f(n) cresce al più come g(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 1 / 54

3 Introduzione all analisi Notazione asintotica Notazioni O, Ω, Θ Definizione Notazione Ω Sia g(n) una funzione di costo; indichiamo con Ω(g(n)) l insieme delle funzioni f(n) tali per cui: c > 0, m 0 : f(n) cg(n), n m Come si legge: f(n) è Omega grande di g(n) Come si scrive: f(n) = Ω(g(n)) g(n) è un limite asintotico inferiore per f(n) f(n) cresce almeno quanto g(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 2 / 54

4 Introduzione all analisi Notazione asintotica Notazioni O, Ω, Θ Definizione Notazione Θ Sia g(n) una funzione di costo; indichiamo con Θ(g(n)) l insieme delle funzioni f(n) tali per cui: c 1 > 0, c 2 > 0, m 0 : c 1 g(n) f(n) c 2 g(n), n m Come si legge: f(n) è Theta di g(n) Come si scrive: f(n) = Θ(g(n)) f(n) cresce esattamente come g(n) f(n) = Θ(g(n)) se e solo se f(n) = O(g(n)) e f(n) = Ω(g(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 3 / 54

5 Introduzione all analisi Notazione asintotica Algoritmi vs problemi Complessità in tempo di un algoritmo La più grande quantità di tempo richiesta per un input di dimensione n O(f(n)): Per tutti gli input, l algoritmo costa al più f(n) Ω(f(n)): Per tutti gli input, l algoritmo costa almeno f(n) Θ(f(n)): L algoritmo richiede Θ(f(n)) per tutti gli input Complessità in tempo di un problema computazionale La complessità in tempo relative a tutte le possibili soluzioni O(f(n)): Complessità del miglior algoritmo che risolve il problema Ω(f(n)): Dimostrare che nessun algoritmo può risolvere il problema in tempo inferiore a Ω(f(n)) Θ(f(n)): Algoritmo ottimo Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 4 / 54

6 Algoritmi e Strutture Dati Analisi di algoritmi Proprietà della notazione asintotica Alberto Montresor Università di Trento 2018/12/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

7 Sommario 1 Introduzione all analisi Notazione asintotica 2 Proprietà della notazione asintotica Funzioni di costo particolari Proprietà delle notazioni Altre funzioni di costo Classificazione delle funzioni 3 Introduzione Albero di ricorsione, o per livelli Metodo della sostituzione Metodo dell esperto

8 Proprietà della notazione asintotica Funzioni di costo particolari Regola generale Espressioni polinomiali f(n) = a k n k + a k 1 n k a 1 n + a 0, a k > 0 f(n) = Θ(n k ) Limite superiore: c > 0, m 0 : f(n) cn k, n m f(n) = a k n k + a k 1 n k a 1 n + a 0 a k n k + a k 1 n k a 1 n + a 0 a k n k + a k 1 n k a 1 n k + a 0 n k n 1 = (a k + a k a 1 + a 0 )n k? cn k che è vera per c ( a k + a k a 1 + a 0 ) e per m = 1. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 5 / 54

9 Proprietà della notazione asintotica Funzioni di costo particolari Regola generale Espressioni polinomiali f(n) = a k n k + a k 1 n k a 1 n + a 0, a k > 0 f(n) = Θ(n k ) Limite inferiore: d > 0, m 0 : f(n) dn k, n m f(n) = a k n k + a k 1 n k a 1 n + a 0 a k n k a k 1 n k 1... a 1 n a 0 a k n k a k 1 n k 1... a 1 n k 1 a 0 n k 1 n 1? dn k L ultima equazione è vera se: d a k a k 1 n a k 2 n... a 1 n a 0 n > 0 n > a k a 0 a k Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 5 / 54

10 Proprietà della notazione asintotica Funzioni di costo particolari Alcuni casi particolari Qual è la complessità di f(n) = 5? Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 6 / 54

11 Proprietà della notazione asintotica Funzioni di costo particolari Alcuni casi particolari Qual è la complessità di f(n) = 5? f(n) = 5 c 1 n 0 c 1 5 f(n) = 5 c 2 n 0 c 2 5 f(n) = Θ(n 0 ) = Θ(1) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 6 / 54

12 Proprietà della notazione asintotica Funzioni di costo particolari Alcuni casi particolari Qual è la complessità di f(n) = 5? f(n) = 5 c 1 n 0 c 1 5 f(n) = 5 c 2 n 0 c 2 5 f(n) = Θ(n 0 ) = Θ(1) Qual è la complessità di f(n) = 5 + sin(n)? Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 6 / 54

13 Proprietà della notazione asintotica Funzioni di costo particolari Alcuni casi particolari Qual è la complessità di f(n) = 5? f(n) = 5 c 1 n 0 c 1 5 f(n) = 5 c 2 n 0 c 2 5 f(n) = Θ(n 0 ) = Θ(1) Qual è la complessità di f(n) = 5 + sin(n)? sin(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 6 / 54

14 Proprietà della notazione asintotica Proprietà delle notazioni Proprietà Dualità f(n) = O(g(n)) g(n) = Ω(f(n)) Dimostrazione: f(n) = O(g(n)) f(n) cg(n), n m g(n) 1 f(n), n m c g(n) c f(n), n m, c = 1 c g(n) = Ω(f(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 7 / 54

15 Proprietà della notazione asintotica Proprietà delle notazioni Proprietà Eliminazione delle costanti f(n) = O(g(n)) af(n) = O(g(n)), a > 0 f(n) = Ω(g(n)) af(n) = Ω(g(n)), a > 0 Dimostrazione: f(n) = O(g(n)) f(n) cg(n), n m af(n) acg(n), n m, a 0 af(n) c g(n), n m, c = ac > 0 af(n) = O(g(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 8 / 54

16 Proprietà della notazione asintotica Proprietà delle notazioni Proprietà Sommatoria (sequenza di algoritmi) f 1 (n) = O(g 1 (n)), f 2 (n) = O(g 2 (n)) f 1 (n) + f 2 (n) = O(max(g 1 (n), g 2 (n))) f 1 (n) = Ω(g 1 (n)), f 2 (n) = Ω(g 2 (n)) f 1 (n) + f 2 (n) = Ω(min(g 1 (n), g 2 (n))) Dimostrazione f 1 (n) = O(g 1 (n)) f 2 (n) = O(g 2 (n)) f 1 (n) c 1 g 1 (n) f 2 (n) c 2 g 2 (n) f 1 (n) + f 2 (n) c 1 g 1 (n) + c 2 g 2 (n) f 1 (n) + f 2 (n) maxc 1, c 2 }(2 max(g 1 (n), g 2 (n))) f 1 (n) + f 2 (n) = O(g 1 (n) + g 2 (n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 9 / 54

17 Proprietà della notazione asintotica Proprietà delle notazioni Proprietà Prodotto (Cicli annidati) f 1 (n) = O(g 1 (n)), f 2 (n) = O(g 2 (n)) f 1 (n) f 2 (n) = O(g 1 (n) g 2 (n)) f 1 (n) = Ω(g 1 (n)), f 2 (n) = Ω(g 2 (n)) f 1 (n) f 2 (n) = Ω(g 1 (n) g 2 (n)) Dimostrazione f 1 (n) = O(g 1 (n)) f 2 (n) = O(g 2 (n)) f 1 (n) c 1 g 1 (n) f 2 (n) c 2 g 2 (n) f 1 (n) f 2 (n) c 1 c 2 g 1 (n)g 2 (n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 10 / 54

18 Proprietà della notazione asintotica Proprietà delle notazioni Proprietà Simmetria f(n) = Θ(g(n)) g(n) = Θ(f(n)) Dimostrazione Grazie alla proprietà di dualità: f(n) = Θ(g(n)) f(n) = O(g(n)) g(n) = Ω(f(n)) f(n) = Θ(g(n)) f(n) = Ω(g(n)) g(n) = O(f(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 11 / 54

19 Proprietà della notazione asintotica Proprietà delle notazioni Proprietà Transitività f(n) = O(g(n)), g(n) = O(h(n)) f(n) = O(h(n)) Dimostrazione f(n) = O(g(n)) g(n) = O(h(n)) f(n) c 1 g(n) g(n) c 2 h(n) f(n) c 1 c 2 h(n) f(n) = O(h(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 12 / 54

20 Proprietà della notazione asintotica Altre funzioni di costo Logaritmi vs funzioni lineari Proprietà dei logaritmi Vogliamo provare che log n = O(n). Dimostriamo per induzione che c > 0, m 0 : log n cn, n m Caso base (n = 1): log 1 = 0 cn = c 1 c 0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 13 / 54

21 Proprietà della notazione asintotica Altre funzioni di costo Logaritmi vs funzioni lineari Proprietà dei logaritmi Vogliamo provare che log n = O(n). Dimostriamo per induzione che c > 0, m 0 : log n cn, n m Ipotesi induttiva: sia log k ck, k n Passo induttivo: Dimostriamo la proprietà per n + 1 log(n + 1) log (n + n) = log 2n n 1 = log 2 + log n log ab = log a + log b = 1 + log n log 2 2 = cn? c(n + 1) 1 + cn c(n + 1) c 1 Per induzione Obiettivo Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 13 / 54

22 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

23 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

24 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) È vero che log n a = Θ(log n), per a > 0? Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

25 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) È vero che log n a = Θ(log n), per a > 0? Sì: log n a = a log n = Θ(log n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

26 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) È vero che log n a = Θ(log n), per a > 0? Sì: log n a = a log n = Θ(log n) È vero che 2 n+1 = Θ(2 n )? Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

27 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) È vero che log n a = Θ(log n), per a > 0? Sì: log n a = a log n = Θ(log n) È vero che 2 n+1 = Θ(2 n )? Sì: 2 n+1 = 2 2 n = Θ(2 n ) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

28 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) È vero che log n a = Θ(log n), per a > 0? Sì: log n a = a log n = Θ(log n) È vero che 2 n+1 = Θ(2 n )? Sì: 2 n+1 = 2 2 n = Θ(2 n ) È vero che 2 n = Θ(3 n )? Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

29 Proprietà della notazione asintotica Altre funzioni di costo Giocando con le espressioni È vero che log a n = Θ(log n)? Sì: log a n = (log a 2) (log 2 n) = Θ(log n) È vero che log n a = Θ(log n), per a > 0? Sì: log n a = a log n = Θ(log n) È vero che 2 n+1 = Θ(2 n )? Sì: 2 n+1 = 2 2 n = Θ(2 n ) È vero che 2 n = Θ(3 n )? Ovviamente 2 n = O(3 n ) Ma: 3 n = ( 3 2 2) n = ( 3 2) n 2 n : Quindi non esiste c > 0 tale per cui ( 3 2) n 2 n c2 n, e quindi 2 n Ω(3 n ) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 14 / 54

30 Proprietà della notazione asintotica Classificazione delle funzioni Notazioni o, ω Definizione Notazioni o, ω Sia g(n) una funzione di costo; indichiamo con o(g(n)) l insieme delle funzioni f(n) tali per cui: c, m : f(n) < cg(n), n m. Sia g(n) una funzione di costo; indichiamo con ω(g(n)) l insieme delle funzioni f(n) tali per cui: c, m : f(n) > cg(n), n m. Come si leggono: f(n) è o piccolo, omega piccolo di g(n) Come si scrivono: f(n) = o(g(n)) oppure f(n) = ω(g(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 15 / 54

31 Proprietà della notazione asintotica Classificazione delle funzioni Notazioni o, ω Utilizzando il concetto di limite, date due funzioni f(n) e g(n) si possono fare le seguenti affermazioni: lim n f(n) lim n g(n) lim n = 0 f(n) = o(g(n)) f(n) = c 0 f(n) = Θ(g(n)) g(n) f(n) = + f(n) = ω(g(n)) g(n) Si noti che: f(n) = o(g(n)) f(n) = O(g(n)) f(n) = ω(g(n)) f(n) = Ω(g(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 16 / 54

32 Proprietà della notazione asintotica Classificazione delle funzioni Classificazione delle funzioni E possibile trarre un ordinamento delle principali espressioni, estendendo le relazioni che abbiamo dimostrato fino ad ora Per ogni r < s, h < k, a < b: O(1) O(log r n) O(log s n) O(n h ) O(n h log r n) O(n h log s n) O(n k ) O(a n ) O(b n ) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 17 / 54

33 Algoritmi e Strutture Dati Analisi di algoritmi, metodo dell albero di ricorsione Alberto Montresor Università di Trento 2018/12/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

34 Sommario 1 Introduzione all analisi Notazione asintotica 2 Proprietà della notazione asintotica Funzioni di costo particolari Proprietà delle notazioni Altre funzioni di costo Classificazione delle funzioni 3 Introduzione Albero di ricorsione, o per livelli Metodo della sostituzione Metodo dell esperto

35 Introduzione Introduzione Equazioni di ricorrenza Quando si calcola la complessità di un algoritmo ricorsivo, questa viene espressa tramite un equazione di ricorrenza, ovvero una formula matematica definita in maniera... ricorsiva! MergeSort T ( n/2 ) + T ( n/2 ) + Θ(n) n > 1 Θ(1) n 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 18 / 54

36 Introduzione Introduzione Forma chiusa Il nostro obiettivo è ottenere, quando possibile, una formula chiusa che rappresenti la classe di complessità della funzione. MergeSort T ( n/2 ) + T ( n/2 ) + Θ(n) n > 1 Θ(1) n 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 18 / 54

37 Introduzione Introduzione Forma chiusa Il nostro obiettivo è ottenere, quando possibile, una formula chiusa che rappresenti la classe di complessità della funzione. MergeSort Θ(n log n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 18 / 54

38 Introduzione Oltre l analisi di algoritmi Utilizzeremo le equazioni di ricorrenza anche per risolvere problemi Problema Un bambino scende una scala composta da n scalini. Ad ogni passo, può decidere di fare 1,2,3,4 scalini alla volta. Determinare in quanti modi diversi può scendere le scale. Ad esempio, se n = 7, alcuni dei modi possibili sono i seguenti: 1,1,1,1,1,1,1 1,2,4 4,2,1 2,2,2,1 1,2,2,1,1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 19 / 54

39 Introduzione Oltre l analisi di algoritmi Soluzione Sia M(n) il numero di modi in cui è possibile scegliere n scalini; allora M(n) può essere espresso nel modo seguente: 0 n < 0 M(n) = 1 n = 0 M(n k) n > 0 4 k=1 Questa ricorrenza può essere trasformata in un algoritmo tramite semplice ricorsione o tramite programmazione dinamica. Numeri di Tetranacci 1, 1, 2, 4, 8, 15, 29, 56, 108, 208, 401, 773, 1490, 2872, 5536,... Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 20 / 54

40 Albero di ricorsione, o per livelli Metodo dell albero di ricorsione, o per livelli Metodi per risolvere ricorrenze Analisi per livelli Analisi per tentativi, o per sostituzione Metodo dell esperto, o delle ricorrenze comuni Metodo dell albero di ricorsione, o per livelli Srotoliamo la ricorrenza in un albero i cui nodi rappresentano i costi ai vari livelli della ricorsione Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 21 / 54

41 Albero di ricorsione, o per livelli Primo esempio T (n/2) + b n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: b + T (n/2) = b + b + T (n/4) = b + b + b + T (n/8) =... = } b + b } b +T (1) log n Assumiamo per semplicità: n = 2 k, ovvero k = log n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 22 / 54

42 Albero di ricorsione, o per livelli Primo esempio T (n/2) + b n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: b + T (n/2) = b + b + T (n/4) = b + b + b + T (n/8) =... = } b + b } b +T (1) log n Assumiamo per semplicità: n = 2 k, ovvero k = log n b log n + T (1) = Θ(log n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 22 / 54

43 Albero di ricorsione, o per livelli Secondo esempio 4T (n/2) + n n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: n + 4T (n/2) = n + 4n/2 + 16T (n/2 2 ) = n + 2n + 16n/4 + 64T (n/8) =... = n + 2n + 4n + 8n log n 1 n + 4 log n T (1) log n 1 = n 2 j + 4 log n j=0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 23 / 54

44 Albero di ricorsione, o per livelli Secondo esempio 4T (n/2) + n n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: log n 1 n 2 j + 4 log n j=0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 23 / 54

45 Albero di ricorsione, o per livelli Secondo esempio 4T (n/2) + n n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: log n 1 n 2 j n 2log n j=0 + 4 log n Serie geometrica finita: x 1 : k j=0 x j = xk+1 1 x 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 23 / 54

46 Albero di ricorsione, o per livelli Secondo esempio 4T (n/2) + n n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: log n 1 n 2 j n j=0 2log n n(n 1) + 4 log n Passaggi algebrici Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 23 / 54

47 Albero di ricorsione, o per livelli Secondo esempio 4T (n/2) + n n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: log n 1 n 2 j n j=0 2log n n(n 1) + 4 log n n log 4 Cambiamento di base: log b n = (log b a) (log a n) a log b n = n log b a Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 23 / 54

48 Albero di ricorsione, o per livelli Secondo esempio 4T (n/2) + n n > 1 1 n 1 E possibile risolvere questa ricorrenza nel modo seguente: log n 1 n 2 j n j=0 2log n n(n 1) + 4 log n n log 4 n 2 = 2n 2 n = Θ(n 2 ) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 23 / 54

49 Albero di ricorsione, o per livelli Terzo esempio 4T (n/2) + n 3 n > 1 1 n 1 Proviamo a visualizzare l albero delle chiamate, per i primi tre livelli: n 3 }} ( ) n 3 ( ) n 3 ( ) n 3 ( ) n }}}}}}}} ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n 3 ( ) n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 24 / 54

50 Albero di ricorsione, o per livelli Terzo esempio 4T (n/2) + n 3 n > 1 1 n 1 Livello Dim. Costo chiam. N. chiamate Costo livello 0 n n 3 1 n 3 1 n/2 (n/2) 3 4 4(n/2) 3 2 n/4 (n/4) (n/4) 3 i n/2 i (n/2 i ) 3 4 i 4 i (n/2 i ) 3 l 1 n/2 l 1 (n/2 l 1 ) 3 4 l 1 4 l 1 (n/2 l 1 ) 3 l = log n 1 T (1) 4 log n 4 log n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 24 / 54

51 Albero di ricorsione, o per livelli Terzo esempio La sommatoria dà origine a: log n 1 i=0 log n 1 = n 3 4 i n 3 /2 3i + 4 log n 2 2i 2 3i + 4 log n 4T (n/2) + n 3 n > 1 1 n 1 Passaggi algebrici i=0 log n 1 ( ) 1 i = n log n 2 Passaggi algebrici i=0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 24 / 54

52 Albero di ricorsione, o per livelli Terzo esempio La sommatoria dà origine a: log n 1 ( ) 1 i n log n 2 i=0 4T (n/2) + n 3 n > 1 1 n 1 log n 1 ( ) 1 i = n 3 + n 2 2 Cambiamento di base i=0 ( ) 1 i n 3 + n 2 2 Estensione della sommatoria i=0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 24 / 54

53 Albero di ricorsione, o per livelli Terzo esempio 4T (n/2) + n 3 n > 1 1 n 1 La sommatoria dà origine a: ( ) 1 i T (n) n 3 + n 2 2 i=0 = n n 2 2 = 2n 3 + n 2 Serie geometrica infinita decrescente: x, x < 1 : x i = 1 1 x i=0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 24 / 54

54 Albero di ricorsione, o per livelli Terzo esempio 4T (n/2) + n 3 n > 1 1 n 1 Abbiamo dimostrato che: T (n) 2n 3 + n 2 Possiamo affermare che O(n 3 ) Non possiamo affermare che Θ(n 3 ), perchè abbiamo dimostrato solo un limite superiore Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 24 / 54

55 Albero di ricorsione, o per livelli Quarto esempio 4T (n/2) + n 2 n > 1 1 n 1 Livello Dimensione Costo chiamata N. chiamate Costo livello 0 n n 2 1 n 2 1 n/2 (n/2) 2 4 4(n/2) 2 2 n/4 (n/4) (n/4) 2 i n/2 i (n/2 i ) 2 4 i 4 i (n/2 i ) 2 l 1 n/2 l 1 (n/2 l 1 ) 2 4 l 1 4 l 1 (n/2 l 1 ) 2 l = log n 1 T (1) 4 log n 4 log n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 25 / 54

56 Albero di ricorsione, o per livelli Quarto esempio 4T (n/2) + n 2 n > 1 1 n 1 log n 1 i=0 log n 1 = n 2 i=0 log n 1 = n 2 i=0 n 2 /2 2i 4 i + 4 log n 2 2i + n2 22i 1 + n 2 = n 2 log n + n 2 = Θ(n 2 log n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 25 / 54

57 Algoritmi e Strutture Dati Analisi di algoritmi, metodo di sostituzione Alberto Montresor Università di Trento 2018/12/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

58 Metodo della sostituzione Metodo della sostituzione Metodi per risolvere ricorrenze Metodo dell albero di ricorsione, o per livelli Metodo di sostituzione, o per tentativi Metodo dell esperto, o delle ricorrenze comuni Metodo di sostituzione È un metodo in cui si cerca di indovinare (guess) una soluzione, in base alla propria esperienza, e si dimostra che questa soluzione è corretta tramite induzione. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 26 / 54

59 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

60 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n 1 1 n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

61 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n n n n/2 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

62 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n n n n/2 n n/2 n/4 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

63 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n n n n/2 n n/2 n/4 n n/2 n/4 n/8 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

64 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n n n n/2 n n/2 n/4 n n/2 n/4 n/8 n n/2 n/4 n/8 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

65 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n n n n/2 n n/2 n/4 n n/2 n/4 n/8 n n/2 n/4 n/8 n n/2 n/4 n/8 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

66 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n n n n/2 n n/2 n/4 n n/2 n/4 n/8 n n/2 n/4 n/8 n n/2 n/4 n/8 2n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

67 Metodo della sostituzione Cerchiamo di indovinare T ( n/2 ) + n n > 1 1 n 1 log n n (1/2) i n i=0 (1/2) i n = 2n 2 i=0 Serie geometrica decrescente infinita x, x < 1 : i=0 x i = 1 1 x Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 27 / 54

68 Metodo della sostituzione Limite superiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Caso base: Dimostriamo la disequazione per T (1) T (1) = 1? 1 c c 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 28 / 54

69 Metodo della sostituzione Limite superiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Ipotesi induttiva: k < n : T (k) ck. Passo di induzione: Dimostriamo la disequazione per T (n) T ( n/2 ) + n c n/2 + n cn/2 + n Sostituzione Intero inferiore = (c/2 + 1)n Passo algebrico? cn c/2 + 1 c c 2 Obiettivo Risultato finale Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 28 / 54

70 Metodo della sostituzione Limite superiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Abbiamo provato che T (n) cn Nel caso base: c 1 Nel passo induttivo: c 2 Un valore c che rispetta entrambe le disequazioni è c = 2 Questo vale per n = 1, e per tutti i valori di n seguenti Quindi m = 1 Abbiamo quindi provato che O(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 28 / 54

71 Metodo della sostituzione Limite inferiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: Ω(n) d > 0, m 0 : T (n) dn, n m Caso base: Dimostriamo la disequazione per T (1) T (1) = 1? 1 d d 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 29 / 54

72 Metodo della sostituzione Limite inferiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: Ω(n) d > 0, m 0 : T (n) dn, n m Ipotesi induttiva: k < n : T (k) dk. Passo di induzione: Dimostriamo la disequazione per T (n) T ( n/2 ) + n d n/2 + n dn/2 1 + n ( d = 2 1 ) n + 1 n? dn d 2 1 n + 1 d d 2 2/n Sostituzione Intero inferiore Passo algebrico Risultato finale Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 29 / 54

73 Metodo della sostituzione Limite inferiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: Ω(n) d > 0, m 0 : T (n) dn, n m Abbiamo provato che T (n) dn Nel caso base: d 1 Nel passo induttivo: d 2 2 n Un valore d che rispetta entrambe le disequazioni, per ogni valore di n 1, è d = 1 Questo vale per n = 1, e per tutti i valori di n seguenti Quindi m = 1 Abbiamo quindi provato che O(n) O(n) Ω(n) Θ(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 29 / 54

74 Metodo della sostituzione Limite inferiore T ( n/2 ) + n n > 1 1 n 1 Tentativo: Ω(n) d > 0, m 0 : T (n) dn, n m É possibile dimostrare che Ω(n) in maniera molto più semplice, senza fare nemmeno ricorso all ipotesi induttiva. T ( n/2 ) + n n? dn L ultima equazione è vera per d 1, condizione identica a quella del caso base Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 29 / 54

75 Metodo della sostituzione Cosa succede se si sbaglia l intuizione T (n 1) + n n > 1 1 n n-1 n 2 3 n-1 n n-3 n-2 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 30 / 54

76 Metodo della sostituzione Cosa succede se si sbaglia l intuizione T (n 1) + n n > 1 1 n 1 n i = i=1 n(n + 1) 2 = O(n 2 ) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 30 / 54

77 Metodo della sostituzione Cosa succede se si sbaglia l intuizione T (n 1) + n n > 1 1 n 1 Tentativo sbagliato: O(n) c > 0, m 0 : T (n) cn, n m Ipotesi induttiva: k < n : T (k) ck. Passo di induzione: Dimostriamo la disequazione per T (n) T (n 1) + n c(n 1) + n (c + 1)n c (c + 1)n? cn c + 1 c Sostituzione Passo algebrico Rimozione elemento negativo Obiettivo Impossibile Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 31 / 54

78 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 32 / 54

79 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n log n log n - 1 log n log n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 32 / 54

80 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 log n i=0 2 i = n + n/2 + n/ = O(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 32 / 54

81 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Ipotesi induttiva: k < n : T (k) ck. Passo di induzione: Dimostriamo la disequazione per T (n) T ( n/2 ) + T ( n/2 ) + 1 c n/2 + c n/2 + 1 Sostituzione = cn + 1 Passo algebrico? cn 1 0 Obiettivo Impossibile Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 33 / 54

82 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Cosa succede? Il tentativo è corretto... ma non riusciamo a dimostrarlo per un termine di ordine inferiore cn + 1 cn Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 33 / 54

83 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Ipotesi induttiva più stretta: b > 0, k < n : T (k) ck b. Passo di induzione: Dimostriamo la disequazione per T (n): T ( n/2 ) + T ( n/2 ) + 1 c n/2 b + c n/2 b + 1 Sostituzione = cn 2b + 1 Passo algebrico? cn b 2b + 1 b b 1 Obiettivo Eliminazione cn Passo algebrico Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 33 / 54

84 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Caso base: Dimostriamo la disequazione per T (1) T (1) = 1? 1 c b c b + 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 33 / 54

85 Metodo della sostituzione Difficoltà matematica Limite superiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Tentativo: O(n) c > 0, m 0 : T (n) cn, n m Abbiamo provato che T (n) cn b cn Nel passo induttivo: b 1, c Nel caso base: c b + 1 Una coppia di valori b, c che rispettano queste disequazioni sono b = 1, c = 2 Questo vale per n = 1, e per tutti i valori di n seguenti Quindi m = 1 Abbiamo quindi provato che O(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 33 / 54

86 Metodo della sostituzione Difficoltà matematica Limite inferiore T ( n/2 ) + T ( n/2 ) + 1 n > 1 1 n 1 Tentativo: Ω(n) d > 0, m 0 : T (n) dn, n m Passo di induzione: Dimostriamo la disequazione per T (n) T ( n/2 ) + T ( n/2 ) + 1 d n/2 + d n/2 + 1 Sostituzione = dn + 1? dn Vero per ogni d Caso base: Dimostriamo la disequazione per T (1) 1 d 1 d 1 Abbiamo quindi provato che Ω(n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 34 / 54

87 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 0 n 1 n/2 n/ n/4 n/4 n/4 n/4 log n log n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 35 / 54

88 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 O(n log n) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 35 / 54

89 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n log n) c > 0, m 0 : T (n) cn log n, n m Ipotesi induttiva: c > 0, k < n : T (k) ck log k. Passo di induzione: Dimostriamo la disequazione per T (n): 2T ( n/2 ) + n 2c n/2 log n/2 + n 2cn/2 log n/2 + n Sostituzione Intero inferiore = cn(log n 1) + n Passo algebrico = cn log n cn + n Passo algebrico? cn log n Obiettivo Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 36 / 54

90 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n log n) c > 0, m 0 : T (n) cn log n, n m Ipotesi induttiva: c > 0, k < n : T (k) ck log k. Passo di induzione: Dimostriamo la disequazione per T (n): T (n) cn log n cn + n? cn log n cn + n 0 c 1 Obiettivo Eliminazione cn log n Passo algebrico Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 36 / 54

91 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n log n) c > 0, m 0 : T (n) cn log n, n m Caso base: Dimostriamo la disequazione per T (1) T (1) = 1? 1 c log 1 = Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 36 / 54

92 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n log n) c > 0, m 0 : T (n) cn log n, n m Cosa succede? È falso, ma non è un problema: non a caso si chiama notazione asintotica. Il valore iniziale di m lo possiamo scegliere noi Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 36 / 54

93 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n log n) c > 0, m 0 : T (n) cn log n, n m Caso base: Dimostriamo la disequazione per T (2), T (3): T (2) = 2T ( 2/2 ) + 2 = 4 1 c 2 log 2 c 2 T (3) = 2T ( 3/2 ) + 3 = 5 1 c 3 log 3 c 5 3 log 3 T (4) = 2T ( 4/2 ) + 4 = 2T ( 2 ) + 4 Non è necessario provare la terza disequazione, in quanto viene espressa in base a casi base diversi da T (1) che sono già stati dimostrati e quindi possono costituire la base della nostra induzione. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 36 / 54

94 Metodo della sostituzione Problemi con i casi base 2T ( n/2 ) + n n > 1 1 n 1 Tentativo: O(n log n) c > 0, m 0 : T (n) cn log n, n m Abbiamo provato che T (n) cn log n Nel passo induttivo: c 1 Nel caso base: c 2, c 5 3 log 3 Visto che sono tutti disequazioni con il segno, è sufficiente utilizzare un valore c max1, 2, 5 3 log 3 } Questo vale per n = 2, n = 3, e per tutti i valori di n seguenti Quindi m = 2 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 36 / 54

95 Metodo della sostituzione All together now! 9T ( n/3 ) + n n > 1 1 n 1 Tentativo: O(n 2 ) c > 0, m 0 : T (n) n 2, n m Ipotesi induttiva: c > 0 : T (k) ck 2, k < n Passo induttivo: Dimostriamo la disequazione per T (n) 9T ( n/3 ) + n 9c( n/3 ) 2 + n Sostituzione 9c(n 2 /9) + n Limite inferiore = cn 2 + n Passo algerbrico cn 2 Falso Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 37 / 54

96 Metodo della sostituzione All together now! 9T ( n/3 ) + n n > 1 1 n 1 Tentativo: O(n 2 ) c > 0, m 0 : T (n) n 2, n m Ipotesi induttiva: c > 0 : T (k) c(k 2 k), k < n Passo induttivo: Dimostriamo la disequazione per T (n) 9T ( n/3 ) + n 9c ( n/3 2 n/3 ) + n cn 2 3cn + n? cn 2 cn Sostituzione Limite inferiore Obiettivo c 1 2 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 37 / 54

97 Metodo della sostituzione All together now! 9T ( n/3 ) + n n > 1 1 n 1 Tentativo: O(n 2 ) c > 0, m 0 : T (n) n 2, n m Ipotesi induttiva: c > 0 : T (k) c(k 2 k), k < n Passo base: T (1) = 1 c(1 2 1) = 0, falso T (2) = 9T (0) + 2 = 11 c(4 2) c 11/2 T (3) = 9T (1) + 3 = 12 c(9 3) c 12/6 T (4) = 9T (1) + 4 = 13 c(16 4) c 13/12 T (5) = 9T (1) + 5 = 14 c(25 5) c 14/20 T (6) = 9T (2) + 6 Non è necessario andare oltre, perchè T (6) dipende da T (2) che è già stato dimostrato Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 37 / 54

98 Metodo della sostituzione All together now! 9T ( n/3 ) + n n > 1 1 n 1 Tentativo: O(n 2 ) c > 0, m 0 : T (n) n 2, n m Parametri: c max 1 m = 1 2, 11 2, 12 6, 13 12, } Notare che l esempio combina le due difficoltà insieme, ma è artificiale: Se avessimo scelto come ipotesi più stretta T (n) cn 2 bn, il problema sui casi base non si sarebbe posto Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 37 / 54

99 Metodo della sostituzione Riassumendo Metodo di sostituzione Si indovina una possibile soluzione e si formula un ipotesi induttiva Si sostituisce nella ricorrenza le espressioni T ( ), utilizzando l ipotesi induttiva Si dimostra che la soluzione è valida anche per il caso base Attenzione Ad ipotizzare soluzioni troppo strette Ad alcuni casi particolari che richiedono alcune astuzie matematiche Attenzione ai casi base: il logaritmo può complicare le cose Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 38 / 54

100 Algoritmi e Strutture Dati Analisi di algoritmi comuni Alberto Montresor Università di Trento 2018/12/27 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

101 Metodo dell esperto Metodo dell esperto Metodi per risolvere ricorrenze Metodo dell albero di ricorsione, o per livelli Metodo di sostituzione, o per tentativi Metodo dell esperto, o delle ricorrenze comuni comuni Esiste un ampia classe di ricorrenze che possono essere risolte facilmente facendo ricorso ad alcuni teoremi, ognuno dei quali si occupa di una classe particolare di equazioni di ricorrenza. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 39 / 54

102 Metodo dell esperto lineari con partizione bilanciata Teorema Siano a e b costanti intere tali che a 1 e b 2, e c, β costanti reali tali che c > 0 e β 0. Sia T (n) data dalla relazione di ricorrenza: at (n/b) + cn β n > 1 d n 1 Posto α = log a/ log b = log b a, allora: Θ(n α ) Θ(n α log n) Θ(n β ) α > β α = β α < β Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 40 / 54

103 Metodo dell esperto lineari con partizione bilanciata Assunzioni Assumiamo che n sia una potenza intera di b: n = b k, k = log b n Perchè ci serve? Semplifica tutti i calcoli successivi Influisce sul risultato? Supponiamo che l input abbia dimensione b k + 1 Estendiamo l input fino ad una dimensione b k+1 (padding) L input è stato esteso al massimo di un fattore costante b Ininfluente al fine della complessità computazionale Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 41 / 54

104 Metodo dell esperto lineari con partizione bilanciata at (n/b) + cn β T (1) = d Liv. Dim. Costo chiam. N. chiamate Costo livello 0 b k cb kβ 1 cb kβ 1 b k 1 cb (k 1)β a acb (k 1)β 2 b k 2 cb (k 2)β a 2 a 2 cb (k 2)β i b k i cb (k i)β a i a i cb (k i)β k 1 b cb β a k 1 a k 1 cb β k 1 d a k da k Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 42 / 54

105 Metodo dell esperto lineari con partizione bilanciata Liv. Dim. Costo chiam. N. chiamate Costo livello i b k i cb (k i)β a i a i cb (k i)β k 1 d a k da k Sommando i costi totali di tutti i livelli, si ottiene: k 1 da k + cb kβ a i b iβ = i=0 k 1 ( a ) i dak + cb kβ b β i=0 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 43 / 54

106 Metodo dell esperto lineari con partizione bilanciata k 1 da k + cb kβ a i b iβ = i=0 k 1 ( a ) i dak + cb kβ b β i=0 Osservazioni a k = a log b n = a log n/ log b = 2 log a log n/ log b = n log a/ log b = n α α = log a/ log b α log b = log a log b α = log a a = b α Poniamo q = a b β = bα b β = b α β k 1 ( a ) i k 1 da k + cb kβ = dn α b β + cb kβ i=0 i=0 q i Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 44 / 54

107 Metodo dell esperto lineari con partizione bilanciata Caso 1: α > β Ne segue che: q = b α β > 1: dn α + cb kβ k 1 i=0 qi = n α d + cb kβ [(q k 1)/(q 1)] Serie geometrica finita n α d + cb kβ q k /(q 1) Disequazione = n α d + cbkβ a k b kβ /(q 1) Sostituzione q = n α d + ca k /(q 1) Passi algebrici = n α [d + c/(q 1)] a k = n α, raccolta termini Quindi T (n) è O(n α ). Per via della componente dn α, T (n) è anche Ω(n α ), e quindi Θ(n α ). Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 45 / 54

108 Metodo dell esperto lineari con partizione bilanciata Caso 2: α = β Ne segue che: q = b α β = 1: dn α + cb kβ k 1 i=0 qi e quindi T (n) è Θ(n α log n); = n α d + cn β k q i = 1 i = 1 = n α d + cn α k α = β = n α (d + ck) Raccolta termini = n α [d + c log n/ log b] k = log b n Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 46 / 54

109 Metodo dell esperto lineari con partizione bilanciata Caso 3: α < β Ne segue che: q = b α β < 1: dn α + cb kβ k 1 i=0 qi = n α d + cb kβ [(q k 1)/(q 1)] Serie geometrica finita = n α d + cb kβ [(1 q k )/(1 q)] Inversione n α d + cb kβ [1/(1 q)] Disequazione = n α d + cn β /(1 q) b k = n Quindi T (n) è O(n β ). Poichè Ω(n β ) per il termine non ricorsivo, si ha che Θ(n β ). Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 47 / 54

110 Metodo dell esperto lineari con partizione bilanciata (Estesa) Teorema Sia a 1, b > 1, f(n) asintoticamente positiva, e sia at (n/b) + f(n) n > 1 d n 1 Sono dati tre casi: (1) ɛ > 0 : f(n) = O(n log b a ɛ ) Θ(n log b a ) (2) f(n) = Θ(n log b a ) Θ(f(n) log n) (3) ɛ > 0 : f(n) = Ω(n log b a+ɛ ) c : 0 < c < 1, m > 0 : af(n/b) cf(n), n m Θ(f(n)) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 48 / 54

111 Metodo dell esperto lineari di ordine costante Teorema Siano a 1, a 2,..., a h costanti intere non negative, con h costante positiva, c e β costanti reali tali che c > 0 e β 0, e sia T (n) definita dalla relazione di ricorrenza: 1 i h a it (n i) + cn β n > m Θ(1) n m h Posto a = a i, allora: 1 i h 1 T (n) è Θ(n β+1 ), se a = 1, 2 T (n) è Θ(a n n β ), se a 2. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 49 / 54

112 Metodo dell esperto Alcuni esempi Ricorrenza a b log b a Caso Funzione 9T (n/3) + n (1) Θ(n 2 ) f(n) = n = O(n log b a ɛ ) = O(n 2 ɛ ), con ɛ < 1 Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 50 / 54

113 Metodo dell esperto Alcuni esempi Ricorrenza a b log b a Caso Funzione T (2n/3) (2) Θ(log n) f(n) = n 0 = Θ(n log b a ) = Θ(n 0 ) Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 51 / 54

114 Metodo dell esperto Alcuni esempi Ricorrenza a b log b a Caso Funzione 3T (n/4) + n log n (3) Θ(n log n) f(n) = n log n = Ω(n log 4 3+ɛ ), con ɛ < 1 log Dobbiamo dimostrare che: c 1, m : af(n/b) cf(n), n m af(n/b) = 3n/4 log n/4 = 3/4n log n 3/4n log 2 3/4n log n? cn log n L ultima è diseguazione è soddisfatta da c = 3/4 e m = 1. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 52 / 54

115 Metodo dell esperto Alcuni esempi Ricorrenza a b log b a Caso Funzione 2T (n/2) + n log n Non applicabile f(n) = n log n O(n 1 ɛ ), con ɛ > 0 f(n) = n log n Θ(n) f(n) = n log n Ω(n 1+ɛ ), con ɛ > 0 Nessuno dei tre casi è applicabile e bisogna utilizzare altri metodi. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 53 / 54

116 Metodo dell esperto Alcuni esempi Ricorrenza a β Caso Funzione (A) T (n 10) + n (1) Θ(n 3 ) (B) T (n 2) + T (n 1) (2) 2 n (A) Poiché a = 1, il costo è polinomiale. (B) Poiché a = 2, il costo è esponenziale. Alberto Montresor (UniTN) ASD - Analisi di algoritmi 2018/12/27 54 / 54

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica Algoritmi e strutture dati Analisi di algoritmi Funzioni di costo, notazione asintotica Alberto Montresor Università di Trento 2016/09/11 This work is licensed under a Creative Commons Attribution-ShareAlike

Dettagli

Appunti lezione Capitolo 2 Analisi delle funzioni di costo

Appunti lezione Capitolo 2 Analisi delle funzioni di costo Appunti lezione Capitolo Analisi delle funzioni di costo Alberto Montresor 0 Settembre, 016 1 Funzioni di costo Definizione 1 (Funzione di costo). Utilizziamo il termine funzione di costo per indicare

Dettagli

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora?

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora? Crescita funzioni 20 novembre 2006 1 Funzioni di costo Definizione 1 (Funzione di costo). Utilizziamo il termine funzione di costo per indicare una funzione f : N R dall insieme dei numeri naturali ai

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo

Dettagli

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1 Notazione asintotica Sebbene si possa talvolta determinare il tempo esatto di esecuzione di un algoritmo, l estrema precisione non giustifica lo sforzo del calcolo; infatti, per input sufficientemente

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi asintotica e Ricorrenze Esercizi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Notazioni O, Ω e Θ Parte I Notazioni

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla, Lorenzo Donatiello Dipartimento di Infromatica, Università di Bologna 11 novembre 2014 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla marzolla@cs.unibo.it Dipartimento di Scienze dell Informazione, Università di Bologna 19 ottobre 2010 Copyright c 2009, 2010 Moreno Marzolla, Università

Dettagli

Sostituire cf(n) a ciascun termine O(f(n)), dove c è una costante reale simbolica specifica per quel termine

Sostituire cf(n) a ciascun termine O(f(n)), dove c è una costante reale simbolica specifica per quel termine Esempio 1 Ricorrenza da risolvere BASE T(1) = O(1) INDUZIONE T(n) = O(1) + T(n 1) per n > 1 Procedimento Sostituire cf(n) a ciascun termine O(f(n)), dove c è una costante reale simbolica specifica per

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di algoritmi Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Parte I Analisi

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Damiano Macedonio mace@unive.it Algoritmi e Strutture Dati, A.A. 2012/13 27 ottobre 2012 Original work Copyright c 2009 Moreno Marzolla, Università di Bologna Modifications

Dettagli

Esercizi per il corso di Algoritmi

Esercizi per il corso di Algoritmi 1 Esercizi per il corso di Algoritmi Esercizi sulle Notazioni Asintotiche 1. Esercizio: In ciascuno dei seguenti casi, indicare se f(n) = O(g(n)), o se f(n) = Ω(g(n)), oppure entrambi (nel cui caso occorre

Dettagli

Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 015/016 Tong Liu April 1, 016 Elementi fondamentali Notazioni Asintotiche Definition 1.1. (Notazione O) Sia g (n) una funzione di costo; indichiamo

Dettagli

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione Prof E Fachini - Intr Alg 1 MergeSort: correttezza MergeSort (A,p,r) if p < r then

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Ricorrenze Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Ω (grande omega) Diciamo che T(n) = Ω (f(n)), - leggiamo T(n) ha complessità

Dettagli

Algoritmi (9 CFU) (A.A )

Algoritmi (9 CFU) (A.A ) Algoritmi (9 CFU) (A.A. 2009-10) Equazioni di ricorrenza Prof. V. Cutello Algoritmi 1 Overview Definiamo cos è una ricorrenza Introduciamo 3 metodi per risolvere equazioni di ricorrenza Sostituzione e

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da

Dettagli

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve?

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve? Valutare la complessità in tempo Complessità in tempo: cosa serve? Informatica II Capitolo 2 Analisi di algoritmi Per stimare il tempo impiegato da un programma Per stimare il più grande input gestibile

Dettagli

Lezione 4 Ugo Vaccaro

Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2017 2018 Lezione 4 Ugo Vaccaro Introduciamo ora la notazione Ω, che ci sarà utile quando vorremo valutare limitazioni inferiori al tempo di esecuzione di algoritmi

Dettagli

Proprietà delle notazioni asintotiche

Proprietà delle notazioni asintotiche Proprietà delle notazioni asintotiche Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche Argomento di oggi Proprietà

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di Algoritmi Modelli di calcolo e analisi di algoritmi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Analisi di Algoritmi Analisi

Dettagli

Definizioni di base. Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output.

Definizioni di base. Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output. ANALISI DELLA COMPLESSITÀ DEGLI ALGORITMI Definizioni di base Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output. Un algoritmo è uno strumento per risolvere

Dettagli

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente. Analisi asintotica Vittorio Maniezzo University of Bologna Analisi asintotica Obiettivo: semplificare l analisi del consumo di risorse di un algoritmo prescindendo dai dettagli implementativi o di altro

Dettagli

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente Progetto di algoritmi sequenziali (un solo esecutore ) Divide et Impera Per regnare occorre tenere divisi i nemici e trarne vantaggio Greedy fai ad ogni passo la scelta più conveniente Buoni risultati

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet Algoritmi e Strutture di Dati I 2 Problemi Un problema specifica in termini generali una relazione che intercorrere

Dettagli

Nozioni di base (II Parte)

Nozioni di base (II Parte) Nozioni di base (II Parte) 1 Ricorsione [GTG14, Par. 5.1-5.4 and 13.1] Algoritmo Ricorsivo: algoritmo che invoca se stesso (su istanze sempre più piccole) sfruttando la nozione di induzione. La soluzione

Dettagli

Esercizi Capitolo 2 - Analisi di Algoritmi

Esercizi Capitolo 2 - Analisi di Algoritmi Esercizi Capitolo - Analisi di Algoritmi Alberto Montresor 19 Agosto, 014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare

Dettagli

Esercizi sulla complessità asintotica. Roberto Cordone

Esercizi sulla complessità asintotica. Roberto Cordone Esercizi sulla complessità asintotica Roberto Cordone 17 settembre 2010 Principi generali Le dimostrazioni di complessità asintotica si possono paragonare a un gioco, nel quale il primo giocatore decide

Dettagli

Appendice B. Algoritmi e Complessità

Appendice B. Algoritmi e Complessità Appendice B Algoritmi e Complessità 1. Introduzione Un algoritmo A è una procedura passo-passo per risolvere un problema P. Un problema P è caratterizzato dall insieme I delle sue istanze. L algoritmo

Dettagli

Notazioni asintotiche. Martedì 30 settembre 2014

Notazioni asintotiche. Martedì 30 settembre 2014 Notazioni asintotiche Martedì 30 settembre 2014 Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Argomento di oggi: Notazioni asintotiche:

Dettagli

3.2 Notazioni standard e funzioni comuni

3.2 Notazioni standard e funzioni comuni 3.2 Notazioni standard e funzioni comuni 43 Esercizi 3.1-1 Se f(n) e g(n) sono funzioni asintoticamente non negative, usate la definizione di base della notazione Θ per dimostrare che max(f(n), g(n)) =

Dettagli

Tecniche Algoritmiche: divide et impera

Tecniche Algoritmiche: divide et impera Tecniche Algoritmiche: divide et impera Una breve presentazione F. Damiani - Alg. & Lab. 04/05 Divide et impera (o Divide and conquer) Per regnare occorre tenere divisi i nemici e trarne vantaggio F. Damiani

Dettagli

Sommario della Lezione

Sommario della Lezione Sommario della Lezione Analisi di Algoritmi Ricorsivi: Come esprimere la complessitá di algoritmi ricorsivi mediante relazioni di ricorrenza Come derivare le relazioni di ricorrenza Come risolvere le relazioni

Dettagli

CAPITOLO 2. Divide et Impera

CAPITOLO 2. Divide et Impera CAPITOLO 2 Divide et Impera In questo capitolo discuteremo alcuni algoritmi progettati mediante la tecnica di progettazione del Divide et Impera. Algoritmi progettati usando questa tecnica consistono di

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla, Lorenzo Donatiello Dipartimento di Infromatica, Università di Bologna 29 ottobre 2017 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna

Dettagli

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort In questa lezione Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort [CLRS] par. 2.3. Prof. E. Fachini - Intr. Alg.!1 Progettazione di

Dettagli

Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente

Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed

Dettagli

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) DISPENSA N. 4 1. Ricerca Binaria Ricorsiva L algoritmo Ricerca Binaria risolve il problema della ricerca di una chiave in un vettore. È un esempio

Dettagli

Valutazione di progressioni geometriche

Valutazione di progressioni geometriche Universitá degli Studi di Salerno Corso di Introduzione agli Algoritmi e Strutture Dati Prof. Ugo Vaccaro Anno Acc. 2015/16 p. 1/22 Valutazione di progressioni geometriche Somme finite: Sia S n = n i=0

Dettagli

Laboratorio Algoritmi 2016

Laboratorio Algoritmi 2016 Laboratorio Algoritmi 2016 Lunedì 10:30 13:30 Aula 2 in via Saldini. Ricevimento: inviare e-mail a frasca@di.unimi.it. 44 ore (9 CFU) Linguaggio di programmazione: C Esame : progetto Sito del corso http://frasca.di.unimi.it/algm16/algm.html

Dettagli

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Esempio 10 int potenza(int base, int esp); main () { \* Genera le prime potenze

Dettagli

Algoritmi e Strutture Dati. Divide-et-impera

Algoritmi e Strutture Dati. Divide-et-impera Algoritmi e Strutture Dati Divide-et-impera Alberto Montresor Università di Trento 2018/12/05 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1

Dettagli

Notazione asinto+ca II parte. IASD a.a A. De Bonis

Notazione asinto+ca II parte. IASD a.a A. De Bonis Notazione asinto+ca II parte Notazione asinto+ca limite inferiore e superiore Date f : n N f(n) R +, g : n N g(n) R +, f(n) = Ο(g(n)) g(n)=ω(f(n)) InfaH, applicando la definizione di Ο f(n) = Ο(g(n)) c

Dettagli

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica.

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica. Richiami di Matematica 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica. Insiemi Definizioni di base Dato un insieme A: x A: elemento x appartenente

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Notazione asintotica m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Proprietà delle notazioni asintotiche. Mercoledì 1 ottobre 2014

Proprietà delle notazioni asintotiche. Mercoledì 1 ottobre 2014 Proprietà delle notazioni asintotiche Mercoledì 1 ottobre 2014 Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche

Dettagli

2.1 Computational Tractability. Chapter 2. Basics of Algorithm Analysis. Efficienza degli algoritmi. Efficienza degli algoritmi

2.1 Computational Tractability. Chapter 2. Basics of Algorithm Analysis. Efficienza degli algoritmi. Efficienza degli algoritmi Chapter 2 2.1 Computational Tractability Basics of Algorithm Analysis 1 Efficienza degli algoritmi Efficienza degli algoritmi Siamo interessati soprattutto running time ma anche spazio, ovvero memoria

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Vi sono naturalmente altri metodi per risolvere le ricorrenze. I più comuni sono:

Vi sono naturalmente altri metodi per risolvere le ricorrenze. I più comuni sono: Algoritmica 08/09 5. RICORRENZE E METODI DI SOLUZIONE Il teorema principale ha diversi pregi. Anzitutto si riferisce a un equazione espressa in funzione di due parametri arbitrari a,b di cui si specifica

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e notazione asintotica Modello di calcolo Per valutare la complessità temporale dei vari algoritmi Fibonacci, abbiamo pedissequamente contato le

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Esercizio Analizzare la complessità nel caso medio del primo algoritmo di pesatura (Alg1) presentato nella prima

Dettagli

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Docente: Maria Rita Di Berardini 19 dicembre 2007 Nome: Cognome: N.Matricola: Note:

Dettagli

complessità degli algoritmi

complessità degli algoritmi complessità degli algoritmi progetto CORDA informatica algoritmo matematico persiano Muhammad al-khwarizmi (IX secolo) un algoritmo è una sequenza finita di passi interpretabili da un esecutore l esecuzione

Dettagli

Analisi degli algoritmi. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis

Analisi degli algoritmi. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis Analisi degli algoritmi Progettazione di Algoritmi a.a. 2015-16 Matricole congrue a 1 Docente: Annalisa De Bonis Efficienza degli algoritmi Proviamo a definire la nozione di efficienza: Un algoritmo è

Dettagli

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni. Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 Paola Vocca Lezione 1: Divide et Impera 1 Paradigma del divide et impera Strutturato in tre fasi. Sia Π() istanza di dimensione di un problema computazionale Π (dove è immediato

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Complessità dei problemi m.patrignani Nota di copyright queste slides so protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma n limitatamente,

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 12 ottobre 2010 1 Vero o falso? Per ciascuna delle seguenti affermazioni, dire se è vera o falsa, fornendo una dimostrazione:

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.00.005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Classificazione degli algoritmi Tassonomia di costo: algoritmo costante: c

Dettagli

INDUZIONE MATEMATICA

INDUZIONE MATEMATICA Regola d induzione matematica P(0), n(p(n) P(n+1)) Regola d induzione completa n(n

Dettagli

Analisi algoritmi ricorsivi e relazioni di ricorrenza

Analisi algoritmi ricorsivi e relazioni di ricorrenza Analisi algoritmi ricorsivi e relazioni di ricorrenza Punto della situazione Finora abbiamo affrontato: il tempo di esecuzione di un algoritmo, l analisi asintotica con le notazioni asintotiche e la tecnica

Dettagli

Complessità degli algoritmi (cenni)

Complessità degli algoritmi (cenni) Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Testo di riferimento Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati Testo di riferimento Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

Teoria della NP-completezza. Damiano Macedonio

Teoria della NP-completezza. Damiano Macedonio Teoria della NP-completezza Damiano Macedonio mace@unive.it Copyright 2010, Moreno Marzolla, Università di Bologna, Italy (http://www.moreno.marzolla.name/teaching/asd2009/) This work is licensed under

Dettagli

Esercizi sulla complessità di frammenti di pseudo-codice

Esercizi sulla complessità di frammenti di pseudo-codice Esercizi sulla complessità di frammenti di pseudo-codice Esercizio 1 Si determini la complessità temporale del seguente frammento di pseudo-codice in funzione di n. Il ciclo contiene solo istruzioni elementari;

Dettagli

Complessità computazionale concreta

Complessità computazionale concreta Complessità computazionale concreta Che cos è la teoria della complessità? La teoria della complessità è un tentativo di dare una risposta matematica a domande come: Cosa vuol dire che un algoritmo è più

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi In quale modo stimiamo il tempo di calcolo? Possiamo considerare due approcci: Approccio empirico (a posteriori) Approccio teorico

Dettagli

Schema generale di un algoritmo divide-et-impera. Algoritmi e Laboratorio a.a Lezioni. Esempio: mergesort su array. Esempio: quicksort

Schema generale di un algoritmo divide-et-impera. Algoritmi e Laboratorio a.a Lezioni. Esempio: mergesort su array. Esempio: quicksort Schema generale di un algoritmo divide-et-impera Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni prof.

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Marco Tarini e-mail: marco.tarini@uninsubria.it Argomenti del corso Calcolo del tempo di computazione di un algoritmo: Esercizi di analisi formale: sommatorie,

Dettagli

Di cosa parliamo oggi?

Di cosa parliamo oggi? Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/41 Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse

Dettagli

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Equazioni alle ricorrenze @ G. Gini 2013 divide et impera - ricorsione Esempio: ordinamento di array Dimensione dei sottoinsiemi n/2,n/2

Dettagli

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi Algoritmi e Strutture Dati Capitolo Un introduzione informale agli algoritmi Ancora un esempio di problema e soluzioni algoritmiche: i numeri di Fibonacci verso un modello di calcolo più simile a un computer

Dettagli

Esercitazioni per il corso di Logica Matematica

Esercitazioni per il corso di Logica Matematica Esercitazioni per il corso di Logica Matematica Luca Motto Ros 27 febbraio 2005 Nota importante. Queste pagine contengono appunti personali dell esercitatore e sono messe a disposizione nel caso possano

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi

Dettagli

5) Equazioni di ricorrenza

5) Equazioni di ricorrenza Pag 37 5) Equazioni di ricorrenza Valutare la complessità di un algoritmo ricorsivo è, in genere, più laborioso che nel caso degli algoritmi iterativi. Infatti, la natura ricorsiva della soluzione algoritmica

Dettagli

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Il Principio di induzione matematica è una tecnica di dimostrazione che permette la dimostrazione simultanea di infinite affermazioni.

Dettagli

2.1 Notazione O (limite asintotico superiore)

2.1 Notazione O (limite asintotico superiore) Pag 13 2) Complessità asintotica Per poter valutare l efficienza di un algoritmo, così da poterlo confrontare con algoritmi diversi che risolvono lo stesso problema, bisogna essere in grado di valutare

Dettagli

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi Parte prima 1) Si dimostri il teorema sulla limitazione inferiore per il tempo asintotico di esecuzione nel caso

Dettagli

A =, c d. d = ad cb. c d A =

A =, c d. d = ad cb. c d A = Geometria e Algebra (II), 271112 1 Definizione D ora innanzi, al posto di dire matrice quadrata di tipo n n o matrice quadrata n n diremo matrice quadrata di ordine n o in breve matrice di ordine n Il

Dettagli

Primi elementi di combinatoria Federico Lastaria, Analisi e Geometria 1

Primi elementi di combinatoria Federico Lastaria, Analisi e Geometria 1 Politecnico di Milano. Scuola di Ingegneria Industriale e dell Informazione Analisi e Geometria 1 Federico Lastaria Primi elementi di combinatoria 11 Ottobre 2016 Indice 1 Elementi di combinatoria 2 1.1

Dettagli

ANALISI 1 1 QUARTA LEZIONE

ANALISI 1 1 QUARTA LEZIONE ANALISI 1 1 QUARTA LEZIONE 1 prof. Claudio Saccon, Dipartimento di Matematica Applicata, Via F. Buonarroti 1/C email: saccon@mail.dm.unipi.it web: http://www2.ing.unipi.it/ d6081/index.html Ricevimento:

Dettagli

METODI MATEMATICI PER L INFORMATICA

METODI MATEMATICI PER L INFORMATICA METODI MATEMATICI PER L INFORMATICA Tutorato Lezione 5 05/05/2016 Corso per matricole congrue a 1 Docente: Margherita Napoli Tutor: Amedeo Leo Dimostrazioni e prove Esercizio 7 pagina 91 Utilizzare una

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

Serie numeriche. Riccarda Rossi. Analisi I. Università di Brescia

Serie numeriche. Riccarda Rossi. Analisi I. Università di Brescia Serie numeriche Riccarda Rossi Università di Brescia Analisi I Sommatoria Siano Con il simbolo I : insieme finito di indici (a i ) i I famiglia finita di numeri, al variare di i in I indichiamo la somma

Dettagli

Laurea in Informatica e Tecnologie per la Produzione del Software Corso di Analisi Matematica Successioni e loro limiti

Laurea in Informatica e Tecnologie per la Produzione del Software Corso di Analisi Matematica Successioni e loro limiti Laurea in Informatica e Tecnologie per la Produzione del Software Corso di Analisi Matematica Successioni e loro limiti Docente: Anna Valeria Germinario Università di Bari A.V.Germinario (Università di

Dettagli

Capitolo 1: Concetti matematici di base

Capitolo 1: Concetti matematici di base Capitolo 1: Concetti matematici di base 1 Insiemi x A x é elemento dell insieme A. B A B é un sottoinsieme di A. B A B é un sottoinsieme proprio di A. A costituito da n elementi A = n é la sua cardinalitá.

Dettagli

Appunti lezione Capitolo 13 Programmazione dinamica

Appunti lezione Capitolo 13 Programmazione dinamica Appunti lezione Capitolo 13 Programmazione dinamica Alberto Montresor 12 Novembre, 2015 1 Domanda: Fattore di crescita dei numeri catalani Vogliamo dimostrare che cresce almeno come 2 n. La nostra ipotesi

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Tecniche di Programmazione Tecniche di progettazione e

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Esercizio Analizzare la complessità nel caso medio del primo algoritmo di pesatura (Alg1) presentato nella prima

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

Esercizi per il corso di Algoritmi, anno accademico 2011/12

Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli

Dettagli