Di cosa parliamo oggi?

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Di cosa parliamo oggi?"

Transcript

1 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 usate da algoritmi per risolvere un dato problema Risorse = Tempo impiegato dall algoritmo Memoria usata dall algoritmo Tipicamente analizzeremo gli algoritmi in termini del tempo di esecuzione da loro impiegato per produrre l output richiesto.

2 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 2/41 In pratica, il tempo di esecuzione dipende (anche) dall implementazione Schema di Implementazione di Algoritmi Algoritmo Programmatore Programma Compilatore Eseguibile Calcolatore

3 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 3/41 Il tempo di esecuzione dipende quindi... Dall abilità del programmatore e dal linguaggio di programmazione usato Dal linguaggio macchina del computer Dal codice che il compilatore genera Dalla taglia del problema (=la dimensione" dell input) Da come é fatto l input (ad es., ordinato/non-ordinato) Dal numero di operazioni elementari eseguite dall algoritmo

4 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 4/41 Quindi... Quantificheremo le risorse usate da un algoritmo a meno di una costante moltiplicativa (useremo quindi le notazioni asintotiche O, Θ e Ω). Perchè? Perchè le costanti moltiplicative dipendenti dai primi 3 aspetti prima enunciati non sono a priori quantificabili, in quanto dipendono da aspetti a noi ignoti Inoltre, per input molto grandi (il che corrisponde a situazioni pratiche) l influenza che tali costanti hanno sul reale tempo di esecuzione di un algoritmo è minore

5 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 5/41 Operazioni elementari Misureremo la complessità di un algoritmo in termini del numero di operazioni elementari usate Esempi di operazioni elementari: addizione e moltiplicazione di numeri (se piccoli...), confronto tra elementi, seguire un puntatore... Si assume che le operazioni elementari richiedano un tempo costante per la loro esecuzione (=una unità di tempo)

6 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 6/41 La taglia dell input Il tempo di esecuzione di un algoritmo in generale dipende quanto grande è l input (taglia dell input). Ma cosa intendiamo esattamente per taglia dell input? Criterio di costo logaritmico: la taglia dell input è il numero di bits necessari per rappresentarlo Criterio di costo uniforme: la taglia dell input è il numero di "elementi" che lo costituiscono Nell ipotesi che ogni istruzione del computer richieda un unità di tempo e che un numero o "elemento" richieda una parola di memoria, le due misure coincidono a meno di una costante moltiplicativa

7 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 7/41 Esempi Problema taglia dell input operazione elementare Trovare x in una lista # di elementi della lista confronto tra elementi Moltiplicazione di matrici dimensione delle matrici moltiplicazione di due numeri Ordinamento di un array # di elementi dell array confronto tra elementi Visita di un albero/grafo #numero di nodi/archi seguire un puntatore Moltiplicazione di due numeri # bits per rappresentarli addizione/sottrazione Nell ultimo caso della moltiplicazione di due numeri abbiamo usato il criterio di costo logaritmico per misurare la taglia dell input, nei primi quattro casi abbiamo usato il criterio di costo uniforme.

8 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 8/41 Anche la forma dell input influenza la complessità La complessità di un algoritmo puó dipendere anche da come è fatto l input (ad es., ordinare n elementi puó essere fatto piú velocemente se essi sono già (quasi) ordinati) Useremo come strumento di analisi il caso peggiore, inteso come il tempo usato dall algoritmo nella situazione piú "sfavorevole" in input. La complessità di tempo di un algoritmo A, su input di taglia n, che denoteremo con T(n) sarà quindi T(n) = il massimo tempo richiesto da A, dove il massimo è calcolato su tutti i possibili input di taglia n Ció ci darà un limite superiore alla complessità dell algoritmo, su tutti i possibili input (nel senso che A non richiederà mai tempo superiore a T(n) su di un input di taglia n.

9 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 9/41 Quindi, ad esempio, se diciamo che... la complessità T(n) di un algoritmo A è O(n 2 ), vuol dire che A non richiede mai tempo superiore a cn 2, per produrre il suo output in corrispondenza ad un qualsivoglia input di taglia n, per c opportuna e n sufficientemente grande. la complessità T(n) di un algoritmo A è Ω(n 2 ), vuol dire che A richiede almeno tempo cn 2, per produrre il suo output nel caso peggiore, per c opportuna e n sufficientemente Quindi NON si intende dire che A impiega tempo cn 2, su ogni input di taglia n, ma nel secondo caso si intende che ESISTE almeno un input di taglia n (n suff. grande) su cui A richiede tempo cn 2 (e nel primo caso si intende che NON esistono input per cui l algoritmo richiede tempo > cn 2 ). (Ad es., la ricerca sequenziale di un elemento x in una lista richiede O(n) e Ω(n) nel caso peggiore, ma se x è il primo elemento della lista, richiede O(1))

10 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 10/41 Esempio ALG(n) 1. if n è pari 2. then return(0) 3. else 4. for i = 1 to n do 5. x = x+1 La complessità dell algoritmo nel caso peggiore è Θ(n). Possiamo dire che l algoritmo esegue Θ(n) passi per ogni input? No! Infatti esise un numero infinito di input su cui l algoritmo esegue un solo passo. Ció che possiamo dire è che l algoritmo non esegue mai piú di O(n) passi per ogni input, e che esegue almeno n passi per certi input.

11 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 11/41 Calcolo della complessità di tempo Effettueremo quasi esclusivamente analisi nel caso peggiore, usando le seguenti regole: il costo di istruzioni semplici, quali assegnazione, letture/scrittura di variabili è O(1) il costo di istruzioni tipo if... then...else è pari al tempo per effettuare il test (tipicamente O(1)) piú O(costo della alternativa piú costosa) il costo di loop (for, while, repeat) è pari alla somma su tutte le iterazioni del costo di ogni iterazioni Usando queste regole si puó ottenere la complessità di tempo di ogni algoritmo (ad eccezione degli algoritmi ricorsivi, che richiedono una tecnica diversa)

12 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 12/41 Un pó di preliminari Quant è Valutiamo 2 k i=1 i: k i=1 i? 2 k i=1 i = (k 1)+ k +k + (k 1)+(k 2) = (k +1)+(k +1)+(k +1)+...+(k +1)+(k +1) = k(k +1) da cui k i=1 i = k(k +1) 2

13 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 13/41 Esercizi Usando la notazione Θ, stimare il numero di volte che la istruzione x = x+1 viene eseguita: 1. for i = 1 to 2n x = x+1 Θ(n) 2. for i = 1 to 2n for j = 1 to n x = x+1 Θ(n 2 ) 3. for i = 1 to n for j = 1 to i for k = 1 to j x = x+1 n i=1 i j=1 j = n i=1 i(i+1) 2 = Θ(n 3 )

14 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 14/41 Prova che n i=1 i(i+1) 2 = Θ(n 3 ) Poichè n i=1 i(i+1) 2 = 1 2 ( n i 2 + i=1 ) n i i=1 = 1 2 ( n i=1 ) i 2 + n(n+1) 2 basterà provare che n i=1 i2 = Θ(n 3 ) Ovviamente abbiamo che n i=1 i2 = n 2 n n 2, il che prova n i=1 i2 = O(n 3 ). Abbiamo anche che n i=1 i2 = n 2 ( ) n 2 ( 2 + n 2 +1) n 2 il che prova n i=1 i2 = Ω(n 3 ). ( n 2 )2 n 2 = (n3 8 )

15 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 15/41 Esercizi 4. i = n while i 1 do x = x+1, i = i/2 dopo che il while è eseguito k volte, l indice i vale n/2 k, pertanto il ciclo viene eseguito t volte, dove t è tale che n/2 t = 1, da cui la complessità dell algoritmo è Θ(log n)

16 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 16/41 Esercizi 5. j = n while j 1 do for i = 1 to j x = x+1, j = j/3 6. i = n while i 1 do for j = 1 to n x = x+1, i = i/2 7. i = 2 while i < n do i = i i x = x+1 n+n/3+n/ n/3 log 3 n = n log 3 n i=0 (1/3) i = Θ(n) Θ(nlogn) Θ(loglogn)

17 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 17/41 Esercizi Alg(A[1...n]) 1. for i = 1 to n do 2. B[i] = A[i] 3. for i = 1 to n do 4. j = n 5. while j > i do 6. B[i] = B[i]+A[i],j = j 1 7. for i = 1 to n do 8. t = t+b[i] Analisi: Le linee 1. e 2. prendono tempo Θ(n). Le linee da 3. a 6. prendono tempo n+n = Θ(n 2 ). Le linee 7. e 8. prendono tempo Θ(n). In totale, la complessità dell algoritmo è T(n) = Θ(n)+Θ(n 2 )+Θ(n) = Θ(n 2 )

18 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 18/41 Esercizi PROCEDURA(A[1...n], k] s = 0 for i = 1 to k do s = s+a[i] s = s/k MAIN(AA[1...m]) i = m while i 1 do PROCEDURA(A[1...m], i] i = i 2 Analisi: La complessità dell algoritmo MAIN è Θ(m) +Θ(m 2) +Θ(m 4) +...+Θ(1) = Θ(m 2 )

19 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 19/41 Esempio: moltiplicazione di numeri interi function multiply(y, z) 1. x 0 2. while z > 0 do 3. if z è dispari then x x+y 4. y 2y; z z/2 5. return(x) Supponiamo che z e y siano numeri di n bits. Le istruzioni 1, 3, e 4 costano O(1) ciascuna Il loop while costa O(n) (viene eseguito al piú n volte, ed ogni esecuzione costa O(1)) In totale, la complessità dell algoritmo è quindi O(n)

20 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 20/41 Parentesi: valutazione di progressioni geometriche Somme finite: Sia S n = n i=0 αi. Se α 1 allora S n (α 1) = α S n S n = n α i+1 i=0 n i=0 = α+α α n +α n+1 1 α α 2... α n = α n+1 1 da cui S n = (α n+1 1)/(α 1). Somme infinite: Supponiamo 0 < α < 1 e sia S = i=0 αi. Allora αs = i=1 αi, da cui α i S(1 α) = S αs = α i i=0 α i = α 0 = 1, ovvero S = 1/(1 α) i=1

21 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 21/41 Esempio Per quanto riguarda la espressione log 3 n i=0 (1/3) i ovviamente vale che log 3 n ( 1 ) i i=0 3 < ( 1 i i=0 3) Applicando quindi la formula S n = i=0 α i = 1 1 α alla espressione otteniamo log 3 n i=0 ( ) 1 i < 3 i=0 i=0 ( ) 1 i 3 ( ) 1 i = (1/3) = (3/2)

22 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 22/41 Parliamo ora di 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 di ricorrenza

23 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 23/41 Struttura tipica di algoritmi ricorsivi Algoritmo A(I). A(I 1 ). A(I a ) I è l input iniziale all algoritmo. i puntini ". sono istruzioni di qualche tipo A(I 1 ),...,A(I a ) sono le a chiamate ricorsive all algoritmo A, rispettivamente sugli input I 1,...,I a.

24 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 24/41 Derivazione di relazioni di ricorrenza Per derivare le relazioni di ricorrenza che descrivono il tempo di esecuzione T(n) di un algoritmo occorre: Determinare la taglia dell input n Determinare quale valore n 0 di n è usato per la base della ricorsione (generalmente, ma non sempre, n 0 = 1). Determinare il valore T(n 0 ) del tempo di esecuzione sulla base della ricorsione (spesso basterà essere certi che T(n 0 ) = c, per qualche costante c) Il valore T(n) sarà generalmente uguale ad una somma del tipo T(m 1 )+...+T(m a ) (per le chiamate ricorsive), piú la somma di eventuale altro lavoro fatto. Spesso le a chiamate ricorsive saranno effettuate tutte su sottoproblemi di taglia uguale f(n), dando un termine at(f(n)) nella relazione di ricorrenza.

25 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 25/41 Tipica relazione di ricorrenza T(n) = c sen = n 0 at(f(n))+g(n) altrimenti n 0 =base ricorsione, c =tempo di esecuzione per la base a =numero di volte che le chiamate ricorsive sono effettuate f(n) =taglia dei problemi risolti nelle chiamate ricorsive g(n) =tutto il tempo di calcolo non incluso nelle chiamate ricorsive

26 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 26/41 Esempi procedure bugs(n) if n = 1 then do qualcosa else bugs(n 1); bugs(n 2); for i = 1 to n do qualcosa T(n) = c sen = 1 T(n 1)+T(n 2)+cn altrimenti

27 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 27/41 Esempi procedure daffy(n) if n = 1 or n = 2 then do qualcosa else daffy(n 1); for i = 1 to n do qualcosa di nuovo daffy(n 1) T(n) = c sen 2 2T(n 1)+cn altrimenti

28 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 28/41 Esempi procedure elmer(n) if n = 1 then do qualcosa else if n = 2 then do qualcos altro else for i = 1 to n do elmer(n 1) fa qualcosa di differente T(n) = c sen 2 nt(n 1)+cn altrimenti

29 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 29/41 Esempi procedure bar(n) if n = 1 then do qualcosa else for i = 1 to n do bar(i) fa qualcosa di differente T(n) = c sen = 1 n i=1 T(i)+cn altrimenti

30 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 30/41 Un teorema generale Teorema: Se n è potenza di c, la soluzione alla ricorrenza T(n) = d sen 1 at(n/c) + bn altrimenti è T(n) = O(n) sea < c O(nlogn) sea = c O(n log c a ) sea > c Esempi: Se T(n) = 2T(n/3)+dn, allora T(n) = O(n) Se T(n) = 2T(n/2)+dn, allora T(n) = O(nlogn) Se T(n) = 4T(n/2)+dn, allora T(n) = O(n 2 )

31 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 31/41 Cenni di dimostrazione, quando n = c i T(n) = a T(n/c)+bn (per ipotesi) = a(a T(n/c 2 )+bn/c)+bn (in quanto T(n/c) = at(n/c 2 )+bn/c) = a 2 T(n/c 2 )+abn/c+bn = a 2 (a T(n/c 3 )+bn/c 2 )+abn/c+bn = a 3 T(n/c 3 )+a 2 bn/c 2 +abn/c+bn i 1 = a i T(n/c i )+bn (a/c) j = a log c n T(1)+bn j=0 log c n 1 j=0 (a/c) j (poichè i = log c n)

32 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 32/41 continuando... T(n) = a log c n T(1)+bn = da log c n +bn log c n 1 j=0 log c n 1 j=0 (a/c) j (dalla slide precedente) (a/c) j (per ipotesi T(1) = d) Ricordando che x = y log y x, abbiamo a log c n = (c log c a ) log c n = (c log c n ) log c a = n log c a e quindi T(n) = d n log c a +bn log c n 1 j=0 (a/c) j

33 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 33/41 Per calcolare log c n 1 j=0 (a/c) j occorre ricordare ció che abbiamo già visto sulle Progressioni Geometriche, ovvero: Somme finite: Se α 1 allora n i=0 α i = αn+1 1 α 1 (1) Somme infinite: Se 0 < α < 1. Allora i=0 α i = 1 1 α (2)

34 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 34/41 ritornando alla dimostrazione... Caso 1: a < c (cioè (a/c) < 1) log c n 1 j=0 (a/c) j < (a/c) j = j=0 1 1 a/c = c c a Pertanto (dalla formula (2) precedente) T(n) < d n log c a +bcn/(c a) = O(n) (Infatti, a < c log c a < 1 e quindi il termine d n log c a è O(n))

35 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 35/41 altro caso... Caso 2: a = c Allora T(n) = d n log c a +bn = d n log c a +bn = O(nlogn) log c n 1 j=0 log c n 1 j=0 (a/c) j (1) j

36 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 36/41 ed infine... Caso 3: a > c (il che implica (a/c) 1) Dalla precedente formula (1) otteniamo log c n 1 j=0 Pertanto, (a/c) j = (a/c)log c n 1 (a/c) 1 = nlog c a 1 1 (a/c) 1 (poichè a log c n = n log c a e (1/c) log c n = 1/n) = O(n log c a 1 ) T(n) = d n log c a +bn log c n 1 j=0 (a/c) j = O(n log c a )

37 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 37/41 Qualche noioso dettaglio... Cosa accade se n NON è potenza di c? Osserviamo che per k = log c n vale che c k n < c k+1 e cn c k+1 (3) Immaginiamo quindi di "aumentare" l input di taglia n, fino a farlo diventare di taglia c k+1. É ovvio che T(n) < T(c k+1 ). Applicando ora il teorema a T(c k+1 ), otteniamo O(c k+1 ) = O(cn) = O(n) sea < c T(n) < T(c k+1 ) = O(c k+1 logc k+1 ) = O(cnlog(cn)) = O(nlogn) sea = c O((c k+1 ) log c a ) = O((cn) log c a ) = O(n log c a ) sea > c

38 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 38/41 Esempi Sia T(1) = 1. Valutiamo T(n) = 2T(n/2)+6n T(n) = 3T(n/3)+6n 9 T(n) = 2T(n/3)+5n T(n) = O(nlogn) T(n) = O(nlogn) T(n) = O(n) T(n) = 2T(n/3)+12n+16 T(n) = O(n) T(n) = 4T(n/2)+n T(n) = O(n log 2 4 ) = O(n 2 ) T(n) = 3T(n/2)+9n T(n) = O(n log 2 3 ) = O(n )

39 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 39/41 Concludendo Con esattamente la stessa tecnica è possibile dimostrare una forma un pó piú generale del Teorema, ad esempio la seguente: Teorema: La soluzione alla ricorrenza d sen 1 T(n) = at(n/c)+bn k altrimenti per a,c,b,k costanti, è T(n) = O(n k ) sea < c k O(n k logn) sea = c k O(n log c a ) sea > c k

40 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 40/41 Altri esempi Sia T(1) = 1. Valutate T(n) = 2T(n/2)+n 3 T(n) = O(n 3 ) T(n) = T(9n/10)+n T(n) = 16T(n/4)+n 2 T(n) = O(n) T(n) = O(n 2 logn) T(n) = 7T(n/3)+n 2 T(n) = O(n 2 ) T(n) = 7T(n/2)+n 2 T(n) = O(n log 2 7 ) T(n) = 2T(n/3)+ n T(n) = O(n log 3 2 ) T(n) = T(n 1)+n T(n) = T( n)+1 T(n) = O(?) T(n) = O(?)

41 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 41/41 Infine Esistono forme ancora piú generali del Teorema, che permettono la risoluzione di equazioni di ricorrenza del tipo generale T(n) = at(n/b)+f(n) Sussiste il seguente risultato 1.Se f(n) = O(n log b a ǫ ), per qualche ǫ > 0, allora T(n) = Θ(n log b a ) 2. Se f(n) = Θ(n log b a ), allora T(n) = Θ(n log b a logn) 3. Se f(n) = Ω(n log b a+ǫ ), per qualche ǫ > 0, e se af(n/b) cf(n) per qualche costante c > 1 ed n sufficientemente grande, allora T(n) = Θ(f(n))

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

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 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

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

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

5. DIVIDE AND CONQUER I

5. DIVIDE AND CONQUER I Divide-et-Impera (Divide and conquer) 5. DIVIDE AND CONQUER I Mergesort e Relazioni di ricorrenza Esempi di progettazione D&I Moltiplicazione di interi Contare inversioni Divide-et-Impera. Definizione

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

Note per la Lezione 6 Ugo Vaccaro

Note per la Lezione 6 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite

Dettagli

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

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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: savo@dis.uniroma1.it Web: http://www.dis.uniroma1.it/~savo

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

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

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

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

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

Ω (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

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

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

Introduzione al Corso di Algoritmi

Introduzione al Corso di Algoritmi Introduzione al Corso di Algoritmi Di cosa parliamo oggi: Una discussione generale su cosa studieremo, perchè lo studeriemo, come lo studieremo,... Un esempio illustrativo di cosa studeriemo Informazione

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 Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,

Dettagli

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 12 LA COMPLESSITA COMPUTAZIONALE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

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

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

2. Analisi degli Algoritmi

2. Analisi degli Algoritmi 2. Analisi degli Algoritmi Introduzione 2.1 Un modello di macchina elementare: la Macchina a Registri 2.2 Costo di esecuzione di un programma 2.3 Analisi del costo di esecuzione: il modello a costi uniformi

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 di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

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

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

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

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

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

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 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

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Definizione informale di algoritmo Insieme di istruzioni, definite passo per passo, in modo da poter essere eseguite meccanicamente

Dettagli

Esempio : i numeri di Fibonacci

Esempio : i numeri di Fibonacci Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci

Dettagli

UNIVERSITÀ DEGLI STUDI DI TRIESTE

UNIVERSITÀ DEGLI STUDI DI TRIESTE UNIVERSITÀ DEGLI STUDI DI TRIESTE FACOLTÀ DI ECONOMIA APPUNTI SUGLI ALGORITMI ANNO ACCADEMICO 2007-2008 Renato Pelessoni 1 ALGORITMI Un algoritmo è un insieme finito di istruzioni che consente di risolvere

Dettagli

LA COMPLESSITA DEGLI ALGORITMI

LA COMPLESSITA DEGLI ALGORITMI LA COMPLESSITA DEGLI ALGORITMI Tra i problemi che ammettono soluzione esistono problemi facili e difficili. Teoria della complessità (anni 70): complessità di un problema; valutazione dell efficienza degli

Dettagli

Ordinamenti e crescita della complessità

Ordinamenti e crescita della complessità Ordinamenti e crescita della complessità Informatica@SEFA 07/08 - Lezione Massimo Lauria Venerdì, 7 Ottobre 07 Nota bibliografica: Il contenuto di questa e di alcune delle prossime

Dettagli

QuickSort (1962, The Computer Journal)

QuickSort (1962, The Computer Journal) QuickSort (1962, The Computer Journal) Charles Antony Richard Hoare (1934 -) Attualmente senior researcher al Microsoft Research Center di Cambridge Hoare ha vinto nel 1980 il Turing Award, il premio più

Dettagli

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento

Dettagli

Ordinamento per inserzione e per fusione

Ordinamento per inserzione e per fusione Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

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

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT)

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT) QUICKSORT Basato sul paradigma divide-et-impera (come MERGE-SORT) Divide: stabilisce un valore di q tale da dividere l array A[p.. r] in due sottoarray non vuoti A[p.. q] e A[q+1.. r], dove ogni elemento

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

Un esempio di calcolo di complessità: insertion sort

Un esempio di calcolo di complessità: insertion sort Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o

Dettagli

Fondamenti di Informatica II 9. Complessità computazionale

Fondamenti di Informatica II 9. Complessità computazionale Scelta di un algoritmo Fondamenti di Informatica II 9. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

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 Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

I numeri rossi sulla Mole Antonelliana a Natale. Algoritmi e Laboratorio a.a Lezioni. Le regole della riproduzione dei conigli.

I numeri rossi sulla Mole Antonelliana a Natale. Algoritmi e Laboratorio a.a Lezioni. Le regole della riproduzione dei conigli. I numeri rossi sulla Mole Antonelliana a Natale Università di Torino acoltà di Scienze MN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 29- Lezioni prof. Elio

Dettagli

Esercizi per il corso di Algoritmi, anno accademico 2014/15

Esercizi per il corso di Algoritmi, anno accademico 2014/15 1 Esercizi per il corso di Algoritmi, anno accademico 2014/15 Esercizi sulle Notazioni Asintotiche 1. Esercizio: Provare le seguenti relazioni, esibendo opportune costanti c 1,c 2 ed n 0. Si assuma per

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un

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

Il problema delle azioni

Il problema delle azioni Il problema delle azioni Per studiare l andamento del mercato azionario bisogna seguire i prezzi delle azioni in un lasso di tempo abbastanza lungo, diciamo n giorni. Se si dispone dei prezzi di un azione

Dettagli

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi. Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l

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

Sommario della lezione

Sommario della lezione Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/27 Sommario della lezione Ancora altri esempi di applicazione della Programmazione Dinamica: Il Problema della

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Dettagli

Algoritmi e diagrammi di flusso

Algoritmi e diagrammi di flusso Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria orso di Laurea in Ingegneria Medica lgoritmi e diagrammi di flusso Rev.1.0 of 01-04-6 Risoluzione di un problema Risoluzione di problemi

Dettagli

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili

Dettagli

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea

Dettagli

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo

Dettagli

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina Algoritmo Dato un problema, un algoritmo

Dettagli

1 Esercizi in pseudocodice

1 Esercizi in pseudocodice Questa dispensa propone esercizi sulla scrittura di algoritmi in un linguaggio semiformale, utile all acquisizione delle abilità essenziali per implementare algoritmi in qualsiasi linguaggio di programmazione.

Dettagli

= < < < < < Matematica 1

= < < < < < Matematica  1 NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato

Dettagli

Complessità degli algoritmi. Obiettivi: Calcolare (valutare) la complessità di un algoritmo Confrontare algoritmi risolutivi del medesimo problema

Complessità degli algoritmi. Obiettivi: Calcolare (valutare) la complessità di un algoritmo Confrontare algoritmi risolutivi del medesimo problema Complessità degli algoritmi Obiettivi: Calcolare (valutare) la complessità di un algoritmo Confrontare algoritmi risolutivi del medesimo problema 1 Algoritmo Sequenza logica di istruzioni elementari (univocamente

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

La principale modalità di calcolo è l applicazione di funzioni

La principale modalità di calcolo è l applicazione di funzioni 1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un

Dettagli

LABORATORIO DI INFORMATICA

LABORATORIO DI INFORMATICA LABORATORIO DI INFORMATICA Corso di laurea in Scienze della Formazione Primaria a.a.2014/2015 A cura del Prof. Sergio Miranda 2 LEZIONE N.6 Algoritmi GLI ALGORITMI (1/5) Un algoritmo è una sequenza di

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

Matlab. Istruzioni condizionali, cicli for e cicli while.

Matlab. Istruzioni condizionali, cicli for e cicli while. Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

RICORSIONE. Informatica B - A.A. 2013/2014

RICORSIONE. Informatica B - A.A. 2013/2014 RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min

Dettagli

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi. Algoritmi Un tema centrale dell informatica è lo studio degli algoritmi. Ora nostro obiettivo sarà quello di esplorare a sufficienza questa materia fondamentale per poter capire e apprezzare appieno l

Dettagli

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. Linguaggio C Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. 1 Complessità degli Algoritmi Si definisce Complessità di un Algoritmo C(A) la funzione dei parametri rilevanti per A che determina

Dettagli

Tipici tempi di esecuzione. Martedì 7 ottobre 2014

Tipici tempi di esecuzione. Martedì 7 ottobre 2014 Tipici tempi di esecuzione Martedì 7 ottobre 2014 Punto della situazione Abbiamo definito il tempo di esecuzione di un algoritmo Scelto l analisi asintotica Abbiamo definito le notazioni asintotiche che

Dettagli

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

Definizione FONDAMENTI DI INFORMATICA. Esempio di algoritmo: determinare il maggiore di due numeri interi x, y. Proprietà degli algoritmi

Definizione FONDAMENTI DI INFORMATICA. Esempio di algoritmo: determinare il maggiore di due numeri interi x, y. Proprietà degli algoritmi Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica e Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://www.diee.unica.it/~marcialis/fi A.A. 201/2017 Docente: Gian Luca Marcialis

Dettagli

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) : PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Risoluzione di Equazioni Algebriche Le equazioni algebriche sono equazioni del tipo P(x) = 0 dove P è un polinomio di grado n cioé P(x) = a 1 x n + a 2 x n

Dettagli

Introduzione agli algoritmi e le stru1ure da2

Introduzione agli algoritmi e le stru1ure da2 Introduzione agli algoritmi e le stru1ure da2 Annalisa De Bonis Docente Annalisa De Bonis Studio 44, quarto piano, stecca 7 Email: debonis@dia.unisa.it URL: http://www.di.unisa.it/~debonis/ IASD a.a. 2015-2016

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1 Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 23 27 novembre 2013

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 05 Complessità C. Limongelli Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Complessita' 1 Contenuti!Costo computazionale

Dettagli

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Dettagli