Tempo e spazio di calcolo
|
|
- Romano Fedele
- 4 anni fa
- Visualizzazioni
Transcript
1 Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi In quale modo stimiamo il tempo di calcolo? Possiamo considerare due approcci: Approccio empirico (a posteriori) Approccio teorico (a priori) SECONDO VOI QUALE STUDIEREMO IN QUESTO CORSO? SECONDO VOI QUALE E IL PIU UTILE IN PRATICA? Sviluppiamo una metodologia per l approccio teorico Per sviluppare la metodologia per stimare il tempo e lo spazio di calcolo dobbiamo precisare: 1. Linguaggio per descrivere gli algoritmi 2. Modello computazionale d esecuzione 3. Metrica per misurare il tempo di calcolo 4. Modo per caratterizzare il tempo di calcolo per gli algoritmi ricorsivi
2 1. Linguaggio per descrivere gli algoritmi Pseudo-codice Java-like: assegnazione: i j k equivale alla seq.: j k; i j espressioni: simboli matematici standard per espressioni numeriche e booleane commento: { } dichiarazione di metodo: nome (param 1, param 2,...) chiamata di un metodo: nome (param 1, param 2,...) ritorno da un metodo: return valore Pseudo-codice Java-like (continua): dati composti: i-esimo elemento array A: A[i] A[i.. j] <A[i], A[i+1],..., A[j]>, se i j sequenza vuota, se i > j i dati composti sono organizzati in oggetti, che sono strutturati in attributi o campi: ad es. length[a] una variabile che rappresenta un oggetto è un riferimento un riferimento che non si riferisce a nessun oggetto: nil parametri alle procedure passati per valore (per gli oggetti una copia del riferimento) Pseudo-codice Java-like (continua): struttura di blocco: spaziatura costrutti iterativi e condizionali : if condizione then azioni (else azioni) while condizione do azioni do azioni while condizione for variabile val-iniz. to val-fin. (incremento) do azioni for variabile val-iniz. downto val-fin. (decremento) do azioni
3 2. Il modello computazionale d esecuzione Consideriamo come operazioni primitive le seguenti operazioni : 1. assegnazione di un valore ad una variabile 2. chiamata di un metodo 3. eseguire un operazione aritmetica 4. confronto di due numeri 5. indicizzazione di un elemento in un array 6. riferimento a un oggetto 7. rientro da un metodo Assunzione implicita: il numero di operazioni primitive è proporzionale al tempo di esecuzione dell algoritmo Questo approccio dà origine al modello computazionale chiamato Random Access Machine (RAM): CPU connessa a un banco di celle di memoria ogni cella memorizza una parola (un numero, un carattere,... In generale: il valore di un tipo di base o un riferimento ad un oggetto) la CPU accede ad una cella di memoria arbitraria con una operazione primitiva (ogni operando e una cella di memoria) La quantità di tempo (e di spazio) consumato dall esecuzione di un programma RAM su un dato input può essere determinato essenzialmente usando due criteri: Criterio di costo uniforme: l esecuzione di un istruzione primitiva richiede un tempo indipendente dalla grandezza degli operandi (ricordate: un operando e o un valori di un tipo base o un riferimento ad un oggetto) Criterio di costo logaritmico: il tempo di calcolo richiesto da un istruzione primitiva dipende dal numero di bit necessari a rappresentare gli operandi
4 3. Metrica per misurare il tempo di calcolo Misureremo il tempo di calcolo contando le operazioni primitive Ad esempio: Massimo (A, n) current-max A[0] for i 1 to n-1 do if current-max < A[i] then current-max A[i] return current-max n Numero di operazioni primitive: t (n) = minimo n + 4*(n-1) + 1 = 5*n massimo n + 6*(n-1) + 1 = 7*n *(n-1) 6 *(n-1) In generale, istanze diverse avranno tempi di calcolo diversi, ad esempio: tempo di calcolo 5 ms 3 ms tempo nel caso peggiore tempo nel caso migliore 1 ms A B C D E F G istanze in input Analisi del caso medio Il tempo di calcolo medio dell algoritmo definito come media dei tempi per tutti i possibili input Per poterlo calcolare si deve conoscere la distribuzione di probabilità sull insieme dei possibili input In generale si tratta di un compito non banale. In mancanza di informazioni si puo assumere una distribuzione uniforme, ma si tratta di un assunzione arbitraria!
5 Analisi del caso peggiore non richiede teoria probabilità caso peggiore quasi sempre facile da identificare se un algoritmo si comporta bene nel caso peggiore, si comporta bene su ogni input (fornisce una garanzia!) Analisi del caso ottimo non richiede teoria probabilità caso ottimo quasi sempre facile da identificare se un algoritmo si comporta male nel caso ottimo, si comporta male su ogni input 4. Modo per caratterizzare il tempo di calcolo degli algoritmi ricorsivi Equazione di ricorrenza: una funzione che esprime il numero di operazioni sull input di dimensione n in funzione del numero di operazioni su input di dimensione inferiore. Ad esempio: { n > 1} Massimo-ricorsivo (A, n) if n = 1 then return A[0] return max (Massimo-ricorsivo (A, n-1), A[n-1]) T(n) = 3 se n = 1 T(n-1) + k altrimenti T(n) = k*(n-1) + 3 ESEMPIO: tempo di calcolo della moltiplicazione per somme successive Moltiplicazione per somme successive y x moltiplicazione (x1, x2) y x1 prod 0 while y > 0 do prod prod + x2 y y - 1 return prod
6 ESEMPIO: tempo di calcolo della moltiplicazione alla russa Moltiplicazione alla russa y1 y molt-russa (x1, x2) y1 x1 y2 x2 prod 0 while y1 > 0 do if y1 is odd then prod prod + y2 y1 y1 div 2 y2 y2 + y2 return prod Moltiplicazione per somme successive vs moltiplicazione alla russa moltiplicazione (x1, x2) y x1 prod 0 while y > 0 do prod prod + x2 y y - 1 return prod molt-russa (x1, x2) y1 x1 y2 x2 prod 0 while y1 > 0 do if y1 is odd then prod prod + y2 y1 y1 div 2 y2 y2 + y2 return prod moltiplicazione molt-russa nel while 2 * x1 assegnazioni 3 * lg x1 assegnazioni x1 somme lg x1 divisioni x1 decrementi 2 * lg x1 somme x1+1 confronti 2 * lg x1 + 1 confronti 5 * x operazioni 8 lg x operazioni 60 f(m) = 5m + 4 g(m) = 8 lg m numero di operazioni , , , , ,36 31, moltiplicatore
7 LA NOTAZIONE ASINTOTICA Introduciamo un ulteriore astrazione : tasso di crescita o ordine di grandezza del tempo di calcolo ogni passo nello pseudo-codice (e ogni statement in un linguaggio ad alto livello) corrisponde a un piccolo numero di operazioni primitive che non dipendono dalla dimensione dell input basta considerare il termine principale perchè i termini di ordine inferiore non sono significativi per n grande. L ordine di grandezza del tempo di calcolo fornisce una semplice caratterizzazione dell efficienza e consente di confrontare algoritmi alternativi. Efficienza asintotica degli algoritmi: come cresce il tempo di esecuzione con il crescere al limite della dimensione delle istanze in input Notazione asintotica Consideriamo funzioni dai naturali ai numeri reali non negativi Notazione O: O (g(n)) e l insieme di tutte le funzioni f(n) per cui esistono due costanti positive c ed n 0 tali che f(n) c g(n) per tutti gli n n 0 c g(n) tem po di run f(n) n 0 f(n) O (g(n)) n
8 Notazione Ω: Ω(g(n)) e l insieme di tutte le funzioni f(n) per cui esistono due costanti positive c ed n 0 tali che f(n) c g(n) per tutti gli n n 0 f(n) tem po di run c g(n) n 0 f(n) Ω (g(n)) n Notazione Θ: Θ(g(n)) e l insieme di tutte le funzioni f(n) per cui esistono tre costanti positive c 1, c 2 ed n 0 tali che c 1 g(n) f(n) c 2 g(n) per tutti gli n n 0 c 2 g(n) tem po di run f(n) c 1 g(n) n 0 f(n) Θ (g(n)) n Proprietà della notazione asintotica Transitiva: f(n) = Θ (g(n)) e g(n) = Θ (h(n)) f(n) = O (g(n)) e g(n) = O (h(n)) f(n) = Ω (g(n)) e g(n) = Ω (h(n)) f(n) = Θ (h(n)) f(n) = O (h(n)) f(n) = Ω (h(n)) Riflessiva: f(n) = Θ (f(n)) f(n) = O (f(n)) f(n) = Ω (f(n)) Simmetrica: f(n) = Θ (g(n)) g(n) = Θ (f(n)) Simmetrica trasposta: f(n) = O (g(n)) g(n) = Ω (f(n))
9 d(n) = O(f(n)) a. d(n) = O(f(n)), per ogni costante a > 0 d(n) = O(f(n)) & e(n) = O(g(n)) d(n) + e(n) = O(f(n) + g(n)) d(n) = O(f(n)) & e(n) = O(g(n)) d(n). e(n) = O(f(n). g(n)) f(n) funzione polinomiale di grado d: f(n) = a 0 + a 1 n a d n d f(n) = O(n d ) Alcune classi di complessità trattabili non trattabili O(log n) O(n) O(n 2 ) O(n k ) (k 1) O(a n ) (a > 1) logaritmica lineare quadratica polinomiale esponenziale Alcune funzioni ordinate per velocità di crescita n log n n n n log n n 2 n 32 2 n 2 1 1, , , ,84 x , ,40 x ,15 x , ,34 x ,79 x
10 10 10 logn radn n n logn n^2 n^ ^n , ,73 1,41 1, ,17 2,81 3 2,58 2,32 3 2,83 2,65 2,24 2,45 3,58 3,32 3,46 3,16 3,32 3, logn radn n n logn n^2 n^3 2^n logn radn n n logn n^2 n^3 2^n
11 ESEMPIO: tempo di calcolo dell algoritmo di ordinamento per inserzione Problema: ordinamento di numeri. Input: una sequenza di n numeri <a 1, a 2,,a n >. Output: una permutazione <a 1, a 2,,a n > della sequenza di input tale che a 1 a 2 a n key = key = key = key = Insertion-sort (A) num. volte j forj 2 to length[a] do n 2 key A[j] n 1 3 {inserisci A[j] nella sequenza A[1..j-1] } NON E UN INVARIANTE! spostando a destra gli elementi > di A[j]} 4 i j 1 n 1 5 while i > 0 and A[i] > key do Σ t j ( j=2..n) 6 A[i+1] A[i] Σ(t j 1) ( j=2..n) 7 i i 1 Σ(t j 1) ( j=2..n) 8 A[i+1] key n 1 j j+1 n 1 T(n) = 1 + a*n + b*(n-1) + c*σ t j + d*σ(t j 1) = = (a + b)*n + (1 b) + c*σ t j + d*σ(t j 1)
12 T(n) = 1 + a*n + b*(n 1) + c*σ t j + d*σ(t j 1) = = (a + b) *n + (1 b) + (c+d)* Σ t j n + 1 = = (a + b 1)*n + (2 b) + (c+d)* Σ t j = = e*n + f + g* Σ t j Caso migliore: A è ordinato T(n) è una funzione lineare di n. Caso peggiore: A è ordinato in ordine inverso T(n) è una funzione quadratica di n. Caso medio (considerando ogni permutazione è ugualmente probabile) T(n) è una funzione quadratica di n. ESEMPIO: il problema della valutazione di un polinomio Input: una sequenza di n+1 numeri reali A = <a 0, a 1,,a n > e il valore della variabile x Output: il valore del polinomio di grado n: P(x) = a 0 +a 1 x+ + a n x n Un algoritmo che risolve il problema: Poly-eval (A, x, n) 1 y 1 2 result A[0] 3 fori 1 to n do 4 y y x 5 result result +A[i] y {y = x i } 6 return result L algoritmo esegue 2*n moltiplicazioni n somme e 2*n assegnazioni. Ma si può fare meglio La regola di Horner: P(x) = a 0 +x (a 1 + +x (a n-1 + x a n )) ) Un algoritmo basato sulla regola di Horner: Horner (A, x, n) 1 result A[n] 2 fori n - 1 downto 0 do 3 result result x+ A[i] 4 return result L algoritmo esegue n somme, n moltiplicazioni e n assegnazioni.
13 Poly-eval (A, x, n) 1 y 1 2 result A[0] 3 fori 1 to n do 4 y y x 5 result result +A[i] y 6 return result Horner (A, x, n) 1 result A[n] 2 fori n - 1 downto 0 do 3 result result x+ A[i] 4 return result fuori dal for confronti nel for Poly-eval Horner 5 4 n + 1 n + 1 8*n 6*n Poly-eval: 9*n + 6 Horner: 7*n T(n) = 9 n + 6 T(n) = 7 n + 5 L algoritmo Horner è sicuramente migliore dell algoritmo Poly-eval L analisi asintotica non distingue però tra i due algoritmi: per entrambi si ottiene Θ(n)
14 RIEPILOGO Una metodologia per l approccio teorico alla stima del tempo di calcolo Analisi dei casi medio, peggiore, ottimo Efficienza asintotica degli algoritmi Risposta ad alcune domande lasciate in sospeso durante le lezioni precedenti. ESERCIZIO: Rispondete alle seguenti domande. Quali domande restano ancora in sospeso? Adesso abbiamo gli strumenti per rispondere a qualcuna di esse? Se si, quali sono le risposte? UN ALTRO ESERCIZIO La correttezza degli algoritmi considerati nei lucidi precedenti (o di loro minime varianti) e stata dimostrata (nelle lezioni precedenti) con il metodo delle asserzioni. ANNOTATE (SCRIVENDO SULLA STAMPA DEI LUCIDI) IL CODICE CON LE ASSERZIONI CHE NE DIMOSTRANO LA CORRETTEZZA. In questo modo vi sara piu facile seguire il ragionamento sulla loro complessita!!!
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
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
DettagliAlgoritmi e Strutture Dati
Analisi di Algoritmi Modelli di calcolo e analisi di algoritmi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Analisi di Algoritmi Analisi
DettagliDivide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente
Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente
DettagliPer regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente
Progetto di algoritmi sequenziali (un solo esecutore ) Divide et Impera Per regnare occorre tenere divisi i nemici e trarne vantaggio Greedy fai ad ogni passo la scelta più conveniente Buoni risultati
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
DettagliGli algoritmi e la loro complessità
Gli algoritmi e la loro complessità Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Algoritmo Un algoritmo è una procedura di calcolo (eventualmente composta da un certo numero di passi)
DettagliDefinizioni di base. Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output.
ANALISI DELLA COMPLESSITÀ DEGLI ALGORITMI Definizioni di base Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output. Un algoritmo è uno strumento per risolvere
DettagliNotazioni asintotiche. Martedì 30 settembre 2014
Notazioni asintotiche Martedì 30 settembre 2014 Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Argomento di oggi: Notazioni asintotiche:
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
DettagliEsercizi per il corso di Algoritmi
1 Esercizi per il corso di Algoritmi Esercizi sulle Notazioni Asintotiche 1. Esercizio: In ciascuno dei seguenti casi, indicare se f(n) = O(g(n)), o se f(n) = Ω(g(n)), oppure entrambi (nel cui caso occorre
Dettaglicomplessità degli algoritmi
complessità degli algoritmi progetto CORDA informatica algoritmo matematico persiano Muhammad al-khwarizmi (IX secolo) un algoritmo è una sequenza finita di passi interpretabili da un esecutore l esecuzione
DettagliAlgoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non
DettagliLezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2017 2018 Lezione 4 Ugo Vaccaro Introduciamo ora la notazione Ω, che ci sarà utile quando vorremo valutare limitazioni inferiori al tempo di esecuzione di algoritmi
DettagliTesto di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati
Testo di riferimento Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo
DettagliComplessità degli algoritmi (cenni)
Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Testo di riferimento Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet Algoritmi e Strutture di Dati I 2 Problemi Un problema specifica in termini generali una relazione che intercorrere
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 e Strutture Dati. Luciano Gualà
Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala È sensato misurare la complessità di un algoritmo contando il numero di linee di codice eseguite? riassunto puntate
DettagliTecniche di analisi degli algoritmi
Tecniche di analisi degli algoritmi Moreno Marzolla marzolla@cs.unibo.it Dipartimento di Scienze dell Informazione, Università di Bologna 19 ottobre 2010 Copyright c 2009, 2010 Moreno Marzolla, Università
DettagliTecniche di analisi degli algoritmi
Tecniche di analisi degli algoritmi Damiano Macedonio mace@unive.it Algoritmi e Strutture Dati, A.A. 2012/13 27 ottobre 2012 Original work Copyright c 2009 Moreno Marzolla, Università di Bologna Modifications
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à
DettagliDi cosa parliamo oggi?
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
DettagliAppendice B. Algoritmi e Complessità
Appendice B Algoritmi e Complessità 1. Introduzione Un algoritmo A è una procedura passo-passo per risolvere un problema P. Un problema P è caratterizzato dall insieme I delle sue istanze. L algoritmo
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
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
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e notazione asintotica Modello di calcolo Per valutare la complessità temporale dei vari algoritmi Fibonacci, abbiamo pedissequamente contato le
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
DettagliTecniche di analisi degli algoritmi
Tecniche di analisi degli algoritmi Moreno Marzolla, Lorenzo Donatiello Dipartimento di Infromatica, Università di Bologna 11 novembre 2014 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna
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
Dettaglicomplessità computazionale
complessità computazionale classificazione degli algoritmi o algoritmi sequenziali o eseguono un solo passo alla volta o algoritmi paralleli o possono eseguire più passi per volta o algoritmi deterministici
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Marco Tarini e-mail: marco.tarini@uninsubria.it Argomenti del corso Calcolo del tempo di computazione di un algoritmo: Esercizi di analisi formale: sommatorie,
DettagliPensiero Algoritmico. Lezione 3 23 Novembre Ripasso. Anatomia di un programma. Anatomia di un programma. Ozalp Babaoglu Università di Bologna
Pensiero Algoritmico Lezione 3 23 Novembre 2016 Ozalp Babaoglu Università di Bologna Ripasso Definizione del problema Astrarre i dettagli, costruire un modello Costruire l algoritmo che risolve il problema
DettagliESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) DISPENSA N. 4 1. Ricerca Binaria Ricorsiva L algoritmo Ricerca Binaria risolve il problema della ricerca di una chiave in un vettore. È un esempio
DettagliAlgoritmi e Strutture Dati
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
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
DettagliNozioni di base (II Parte)
Nozioni di base (II Parte) 1 Ricorsione [GTG14, Par. 5.1-5.4 and 13.1] Algoritmo Ricorsivo: algoritmo che invoca se stesso (su istanze sempre più piccole) sfruttando la nozione di induzione. La soluzione
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione
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
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
DettagliComplessità computazionale
Complessità computazionale Alberto Policriti Dpt. of Mathematics and Informatics, University of Udine. Applied Genomics Institute December 16, 2009 Il problema computazionale Un problema specifica una
Dettaglisono le risorse di calcolo necessarie per la sua l esecuzione di un metodo sono tipicamente:
Complessità dei metodi e degli algoritmi Carla Binucci e Walter Didimo Efficienza di un metodo Un metodo è tanto più efficiente quanto minori sono le risorse di calcolo necessarie per la sua esecuzione
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
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
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à
DettagliProblemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Problemi e algoritmi Il che cosa e il come Il che cosa ed il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come
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
DettagliNell' Informatica è importante porsi questa domanda: Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due
Complessità Nell' Informatica è importante porsi questa domanda: Quanto costa risolvere un dato problema? Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due
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
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
DettagliAnalisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.
Analisi asintotica Vittorio Maniezzo University of Bologna Analisi asintotica Obiettivo: semplificare l analisi del consumo di risorse di un algoritmo prescindendo dai dettagli implementativi o di altro
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
DettagliLaboratorio Algoritmi 2016
Laboratorio Algoritmi 2016 Lunedì 10:30 13:30 Aula 2 in via Saldini. Ricevimento: inviare e-mail a frasca@di.unimi.it. 44 ore (9 CFU) Linguaggio di programmazione: C Esame : progetto Sito del corso http://frasca.di.unimi.it/algm16/algm.html
DettagliFondamenti di Informatica
Scelta di un algoritmo Fondamenti di Informatica 19. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta dell
DettagliCOMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.00.005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Classificazione degli algoritmi Tassonomia di costo: algoritmo costante: c
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento
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
DettagliProblemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
DettagliCOMPLESSITÀ COMPUTAZIONALE. Fondamenti di Informatica A - Massimo Bertozzi
COMPLESSITÀ COMPUTAZIONALE Tipi di complessità Consideriamo l'analisi della complessità di un programma da due punti di vista: spazio tempo Complessità Spaziale Lo spazio utilizzato da un programma può
DettagliCamil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:
MergeSort Usa la tecnica del divide et impera: 1 Divide: dividi l array a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate 1 Esempio di esecuzione 7 2 4 5
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
DettagliQuick Sort. PARTITION(A,p,r) risistema il sottoarray A[p...r] e riporta l indice q:
Quick Sort - Ordinamento in loco - Tempo di esecuzione nel caso peggiore: Θ(n 2 ) - Tempo di esecuzione nel caso medio: Θ(n lg n) - I fattori costanti nascosti nella notazione Θ sono abbastanza piccoli
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
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
DettagliAd ogni problema computazionale possiamo associare una misura della sua complessità.
Problema computazionale: Descrizione dell input, Compito da svolgere. Esempio: SOMMA: INPUT: 2 numeri x e y, COMPITO: stampare x+y. Ad ogni problema computazionale possiamo associare una misura della sua
DettagliIn questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort
In questa lezione Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort [CLRS] par. 2.3. Prof. E. Fachini - Intr. Alg.!1 Progettazione di
DettagliAlgoritmi di ordinamento (I parte)
(I parte) Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Definizione formale del problema Input:! Una sequenza di n numeri Output:! Una permutazione
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
DettagliTecniche di analisi degli algoritmi
Tecniche di analisi degli algoritmi Moreno Marzolla, Lorenzo Donatiello Dipartimento di Infromatica, Università di Bologna 29 ottobre 2017 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna
DettagliCorso di Perfezionamento
Il concetto di Algoritmo Modelli di calcolo e analisi di algoritmi 1 1 Dipartimento di Matematica e Informatica Università di Camerino 11 febbraio 2009 Il concetto di Algoritmo Il concetto di algoritmo
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
DettagliAlgoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi
Algoritmi e Strutture Dati Capitolo Un introduzione informale agli algoritmi Ancora un esempio di problema e soluzioni algoritmiche: i numeri di Fibonacci verso un modello di calcolo più simile a un computer
DettagliProgrammazione dinamica Primi esempi
Programmazione dinamica Primi esempi (20 ottobre 2009 e 9 novembre 2010) Programmazione dinamica e Divide et Impera Entrambe le tecniche dividono il problema in sottoproblemi: dalle soluzioni dei sottoproblemi
DettagliAppunti lezione Capitolo 2 Analisi delle funzioni di costo
Appunti lezione Capitolo Analisi delle funzioni di costo Alberto Montresor 0 Settembre, 016 1 Funzioni di costo Definizione 1 (Funzione di costo). Utilizziamo il termine funzione di costo per indicare
DettagliCOMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli
COMPLESSITA COMPUTAZIONALE Esercitazioni Tutor: Francesca Piersigilli La complessità computazionale si occupa della valutazione del costo degli algoritmi in termini di risorse di calcolo: tempo di elaborazione;
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
DettagliSommario. Algoritmi di ordinamento lineari: CountingSort. BucketSort. RadixSort
Sommario Algoritmi di ordinamento lineari:! CountingSort! BucketSort! RadixSort 1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, nel
DettagliComplessità computazionale concreta
Complessità computazionale concreta Che cos è la teoria della complessità? La teoria della complessità è un tentativo di dare una risposta matematica a domande come: Cosa vuol dire che un algoritmo è più
DettagliCosto di esecuzione. Quanto costa? Spazio. Spazio e tempo. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche
Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Quanto costa? Prof. Stefano Guerrini guerrini@di.uniroma1.it Programmazione II (can. P-Z) A.A. 2005-06 Cosa contribuisce
DettagliEsercizio. 2 i=i*2) j=j*2)
Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre
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
DettagliAlgoritmi di Ordinamento
Algoritmi di Ordinamento 1 Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento Statistiche di ordine 2 Selection Sort SelectionSort(dati[]) {
DettagliSilvia Rossi. Cenni sulla complessità. Informatica. Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Programmazione I
Silvia Rossi Cenni sulla complessità 23 Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Programmazione I Email Docente: srossi@na.infn.it A.A. 2009-2010 Abbiamo visto che dato un problema
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliALGORITMI Docente: Prof. Domenico Cantone
CORSO SPECILE DI DURT NNULE PER IL CONSEGUIMENTO DELL BILITZIONE LL INSEGNMENTO NELL SCUOL SECONDRI DI I e II GRDO Indirizzo Fisico - Informatico - Matematico a.a. 00/07 - Classe - Informatica LGORITMI
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
DettagliEsercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
Dettagli2.1 Computational Tractability. Chapter 2. Basics of Algorithm Analysis. Efficienza degli algoritmi. Efficienza degli algoritmi
Chapter 2 2.1 Computational Tractability Basics of Algorithm Analysis 1 Efficienza degli algoritmi Efficienza degli algoritmi Siamo interessati soprattutto running time ma anche spazio, ovvero memoria
DettagliNote per la Lezione 2 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2018 2019 Note per la Lezione 2 Ugo Vaccaro Dati un intero n 1 ed una generica sequenza a = a[0]a[1] a[n 1] di numeri (che possono essere sia positivi o negativi),
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
DettagliAlgoritmi (e Complessità)
Algoritmi (e Complessità) Alberto Policriti 14 Maggio, 2019 1 Algoritmo: definizione Kleene E una risposta finita ad un numero infinito di domande. 2 Algoritmo: definizione Kleene E una risposta finita
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
DettagliAlgoritmi di ordinamento
Capitolo 7 Algoritmi di ordinamento 7.1 Selection sort L algoritmo di ordinamento per selezione opera nel modo seguente: supponiamo che i primi k elementi siano ordinati; l algoritmo sceglie il minimo
DettagliInformatica Teorica. Macchine a registri
Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire
DettagliSommario. Un algoritmo di ordinamento di complessità lineare: CountingSort. [CLRS10] cap. 8 par.8.2
Sommario Un algoritmo di ordinamento di complessità lineare: CountingSort [CLRS10] cap. 8 par.8.2!1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento
DettagliEsercitazioni di Algoritmi e Strutture Dati
Esercitazioni di Algoritmi e Strutture Dati I esercitazione, 2/03/2016 Tong Liu 1 OBIETTIVI DEGLI ESERCITAZIONI Comprendere meglio i concetti fondamentali Presentare gli argomenti rilevanti Arrivare al
Dettagli