Di cosa parliamo oggi?
|
|
- Violetta Pellegrini
- 7 anni fa
- Visualizzazioni
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
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
DettagliCOMPLESSITÀ 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à
DettagliAlgoritmi 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
DettagliAnalisi 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
DettagliTecniche 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
Dettagli5. 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
DettagliInformatica 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
DettagliNote 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,
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliAlgoritmi (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
DettagliNotazione 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
DettagliEsercizi 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
DettagliDati 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
DettagliEsercizi 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
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
DettagliAlgoritmi 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
DettagliAlgoritmi, 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
Dettagliin 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
DettagliStudio 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
DettagliIntroduzione 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
DettagliCOMPLESSITÀ 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,
DettagliPrincipali 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
DettagliTempo 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
DettagliTempo 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
DettagliTempo 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
DettagliUn 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
DettagliNell 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
Dettagli2. 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
Dettagli5) 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
DettagliMacchina 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
DettagliIntroduzione 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
DettagliRichiami 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
DettagliCalcolare 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
DettagliCrescita 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliEsempio : 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
DettagliUNIVERSITÀ 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
DettagliLA 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
DettagliOrdinamenti 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
DettagliQuickSort (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ù
DettagliMacchine 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
DettagliOrdinamento 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
DettagliProblemi, 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
DettagliEsercizi 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,
DettagliQUICKSORT. 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
DettagliProprietà 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à
DettagliUn 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
DettagliFondamenti 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
DettagliAlgoritmi 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
DettagliCorso 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
DettagliEsercizi 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
DettagliI 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
DettagliEsercizi 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
DettagliAlgoritmi 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
DettagliEsercizi 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
DettagliIl 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
DettagliAlgoritmi. 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
DettagliEsercizi 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,
DettagliSommario 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
DettagliIntroduzione 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
DettagliAlgoritmi 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
DettagliEfficienza: 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
DettagliAlgoritmi 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
DettagliPROGRAMMAZIONE: 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
DettagliProblemi 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
DettagliProgrammazione 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
Dettagli1 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
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
DettagliComplessità 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
DettagliNote 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
DettagliLa 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
DettagliLABORATORIO 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
DettagliIntroduzione 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
DettagliL 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
DettagliMatlab. 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
DettagliRappresentazione 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
DettagliUn 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
DettagliRICORSIONE. 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
DettagliAlgoritmi 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
DettagliAlgoritmi. 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
DettagliLinguaggio 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
DettagliTipici 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
DettagliEsercizi 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
DettagliDefinizione 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
DettagliCognome 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:
DettagliCorso 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
DettagliIntroduzione 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
DettagliPolitecnico 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
Dettaglin 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
DettagliScaletta. 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
DettagliProblemi, 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
DettagliProblema 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
DettagliCorso 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
DettagliAlbero 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