Tempo e spazio di calcolo
|
|
- Martina Enrichetta Guglielmi
- 7 anni fa
- Visualizzazioni
Transcript
1 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)
2 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?
3 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
4 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
5 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)
6 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
7 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
8 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)
9 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
10 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 1 4*(n-1) 6 *(n-1) Numero di operazioni primitive: t (n) = minimo n + 4*(n-1) + 1 = 5*n massimo n + 6*(n-1) + 1 = 7*n - 2
11 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
12 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!
13 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
14 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
15 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
16 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
17 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 moltiplicazione 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 molt-russa 2 * x1 assegnazioni 3 * lg x1 assegnazioni nel while 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
18 f(m) = 5m + 4 g(m) = 8 lg m numero di operazioni , , , , ,36 31, moltiplicatore
19 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.
20 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
21 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 n f(n) O (g(n))
22 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 n f(n) Ω (g(n))
23 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 n f(n) Θ (g(n))
24 Proprietà della notazione asintotica Transitiva: f(n) = Θ (g(n)) e g(n) = Θ (h(n)) f(n) = Θ (h(n)) f(n) = O (g(n)) e g(n) = O (h(n)) f(n) = O (h(n)) f(n) = Ω (g(n)) e g(n) = Ω (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))
25 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 )
26 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
27 Alcune funzioni ordinate per velocità di crescita n log n n n n log n n 2 n 2 n 3 2 n 2 1 1, , , , , ,84 x ,40 x ,15 x ,34 x ,79 x
28 logn radn n n logn n^2 n^3 2^n , ,41 1,73 2 1,58 1 2,81 2,58 2,32 2,65 2,24 2,45 3, ,83 3,58 3,32 3,46 3,16 3,32 3,
29 logn radn n n logn n^2 n^3 2^n
30 logn radn n n logn n^2 n^3 2^n
31 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.
32 key = key = key = key =
33 Insertion-sort (A) j 2 1 for j 2 to length[a] do 2 key A[j] 3 {inserisci A[j] nella sequenza A[1..j-1] num. volte 1 n n 1 } NON E UN INVARIANTE spostando a destra gli elementi > di A[j]} 4 i j 1 5 while i > 0 and A[i] > key do 6 A[i+1] A[i] 7 i i 1 n 1 Σ t j ( j=2..n) Σ(t j 1) ( j=2..n) Σ(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)
34 T(n) = 1 + a*n + b*(n 1) + c*σ t + d*σ(t 1) = j j = (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. aso peggiore: A è ordinato in ordine inverso T(n) è una funzione quadratica di n. aso medio (considerando ogni permutazione è ugualmente probabile T(n) è una funzione quadratica di n.
35 ESEMPIO: il problema della valutazione di un polinomio nput: una sequenza di n+1 numeri reali A = <a 0, a 1,,a n > e il valore ella variabile x utput: 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 for i 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
36 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 for i n - 1 downto 0 do 3 result result x+ A[i] 4 return result L algoritmo esegue n somme, n moltiplicazioni e n assegnazioni.
37 Poly-eval (A, x, n) 1 y 1 2 result A[0] 3 for i 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 for i 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 + 5
38 T(n) = 9 n + 6 T(n) = 7 n + 5
39 L algoritmo Horner è sicuramente migliore dell algoritmo Poly-eval L analisi asintotica non distingue però tra i due algoritmi: per entrambi si ottiene Θ(n)
40 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?
41 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!!!
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
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à
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
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
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
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
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. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort
Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti
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
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
DettagliPrimo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale
Primo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini luca@chiodini.org - l.chiodini@campus.unimib.it 10 marzo 2016 Programma 1. Lettura di un problema tratto dalle
DettagliL algoritmo AKS. L algoritmo AKS. Seminario per il corso di Elementi di Algebra Computazionale. Oscar Papini. 22 luglio 2013
L algoritmo AKS Seminario per il corso di Elementi di Algebra Computazionale Oscar Papini 22 luglio 2013 Test di primalità Come facciamo a sapere se un numero n è primo? Definizione (Test di primalità)
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;
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
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera
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
DettagliDi cosa parliamo oggi?
Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/41 Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse
DettagliCURRICOLO VERTICALE MATEMATICA IL NUMERO SCUOLA SECONDARIA DI PRIMO GRADO. Classe 1^
ISTITUTO COMPRENSIVO STATALE - SPRESIANO Via U. Foscolo, 4-31027 Spresiano (TV) tel.: 0422/725223 fax: 0422/725684 cod.fisc. 80027900267 - e-mail: segreteria@icspresiano.it- C.M. TVIC838006 CURRICOLO VERTICALE
Dettagli4.1 Modelli di calcolo analisi asintotica e ricorrenze
4 Esercizi Prima Parte 4.1 Modelli di calcolo analisi asintotica e ricorrenze Esercizio 4 1 Rispondere alle seguenti domande: 1. Come misuriamo l efficienza di un algoritmo?. Quali sono gli algoritmi più
DettagliInformatica e Bioinformatica: Algoritmi
Informatica e Bioinformatica: Algoritmi 20 Marzo 2014 Programmi Applicativi Programmi Applicativi Sistema Operativo (lezione 3) Macchina Hardware (lezione 1 e 2) La macchina hardware permette l esecuzione
DettagliOrdinamenti per confronto: albero di decisione
Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto
DettagliCosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
DettagliStrutture dati e algoritmi. Sommario
Sommario Strutture dati e algoritmi: Ricerca (lineare e binaria) Ordinamento (per selezione) Strutture dati e algoritmi Come esempi concreti di applicazioni in C++ si useranno le strutture dati e gli algoritmi.
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
DettagliDue algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort
Due algoritmi di ordinamento basati sulla tecnica Divide et Impera: Mergesort e Quicksort (13 ottobre 2009, 2 novembre 2010) Ordinamento INPUT: un insieme di n oggetti a 1, a 2,, a n presi da un dominio
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
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
DettagliDizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1
Dizionario Insieme dinamico che offre solo le seguenti operazioni: inserimento di un elemento dato cancellazione di un elemento dato ricerca di un elemento dato (verifica dell appartenenza di un elemento
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
DettagliAlgoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo
1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliIstituto Comprensivo
TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE MATEMATICA OBIETTIVI DI APPRENDIMENTO AL TERMINE DELLA OBIETTIVI DI APPRENDIMENTO AL TERMINE DELLA CLASSE TERZA SCUOLA PRIMARIA SCUOLA PRIMARIA ABILITA CONOSCENZE
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione
DettagliFondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi
DettagliComplessità Computazionale
Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION
DettagliTipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.
Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned
DettagliPARTE III MACCHINE A REGISTRI
PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson
DettagliLaboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
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
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
Dettaglipoiché f(n) max{f(n),g(n)}, e g(n) max{f(n),g(n)}, sommando termine a termine: Quindi possiamo concludere che f(n)+g(n) = Θ(max{f(n),g(n)})
Sol Esercizio 1 Es. Notazione asintotica: 1. Si dimostri che f(n)+g(n) = Θ(max{f(n),g(n)}) sotto l ip. f(n),g(n) >0, a partire da un certo n 0. poiché f(n) max{f(n),g(n)}, e g(n) max{f(n),g(n)}, sommando
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
DettagliRicerca lineare: elementi ripetuti
Ricerca lineare: elementi ripetuti Ricerca lineare: elementi ripetuti II caso. Supponiamo che gli elementi di A non siano tutti distinti tra loro e che vogliamo conoscere dove si trova l elemento: dovremo
DettagliAnalisi asintotica della complessità di tempo degli algoritmi
Analisi asintotica della complessità di tempo degli algoritmi Due esempi di funzioni di Python: 1. nel primo mettiamo in evidenza l importanza di una buona organizzazione dei dati in memoria, cioè di una
DettagliADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliRappresentazioni numeriche
Rappresentazioni numeriche Un numero è dotato di un valore una rappresentazione La rappresentazione di un numero è il sistema che utilizziamo per indicarne il valore. Normalmente è una sequenza (stringa)
DettagliAlgoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno
Algoritmi e Strutture Dati Esercizi Svolti Giuseppe Persiano Dipartimento di Informatica ed Appl Renato M Capocelli Università di Salerno Indice Esercizio 12-3 5 Esercizio 23-4 6 Esercizio 63-3 7 Esercizio
DettagliCOMPLESSITÀ COMPUTAZIONALE
COMPLESSITÀ COMPUTAZIONALE COSA SI INTENDE PER COMPLESSITÀ? La Complessità Temporale, Spaziale, di Input/Output e di Trasmissione COMPLESSITÀ TEMPORALE Ininfluenza della velocità della macchina per molte
DettagliPIANO DI LAVORO E DI ATTIVITA DIDATTICA. Classe Sezione Materia. Prima A Matematica. Docente. Antonella Cervi. Anno scolastico 2014/2015
Anno scolastico 2014/2015 Classe Sezione Materia Prima A Matematica Nome e cognome Antonella Cervi Docente Firma Pagina 1 di 9 Finalità e obiettivi generali del corso 1. Promuovere le facoltà sia intuitive
DettagliI Tipi di Dato Astratto
I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati
DettagliSviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
DettagliFondamenti di Programmazione
Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) gianfranco.rossi@unipr.it Indice 1 Introduzione
DettagliSomma di numeri binari
Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di
DettagliSommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash
Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che
Dettagli4.5 Tempo di calcolo: introduzione.
4.5 Tempo di calcolo: introduzione. Perché un programma o sottoprogramma sia una soluzione accettabile di un problema, non basta che sia corretto rispetto alla specifica del problema; occorre anche che
DettagliAlgoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 2 Marzo 2015 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica
DettagliComponenti della competenza. Competenza MATEMATICA PRIME. Calcolo scritto
Competenza Componenti della competenza Conoscenze Abilità Utilizzare con sicurezza le tecniche del calcolo aritmetico ed algebrico, scritto e mentale, anche con riferimento ai contesti reali Calcolo scritto
DettagliAlberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
DettagliMODELLISTICA DI IMPIANTI E SISTEMI Syllabus e Testi di Riferimento Prof. Giuseppe Iazeolla
Syllabus e Testi di Riferimento MIS 1 di 7 MODELLISTICA DI IMPIANTI E SISTEMI Syllabus e Testi di Riferimento Prof. Giuseppe Iazeolla Syllabus da testo 1 (la numerazione fa riferimento ai capitoli del
DettagliMa il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione
Problemi che i calcolatori non possono risolvere E importante sapere se un programma e corretto, cioe fa uello che ci aspettiamo. E facile vedere che il programma Ma il programma in Fig. 8.2 del libro?
DettagliComplessità degli algoritmi
Complessità degli algoritmi L'efficienza di un algoritmo si valuta in base all'utilizzo che l'algoritmo fa delle risorse del calcolatore: CPU Memoria tempo spazio Algoritmi diversi, pur occupando lo stesso
DettagliCodice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli
Codice La relazione che associa ad ogni successione ben formata di simboli di un alfabeto il dato corrispondente è detta codice. Un codice mette quindi in relazione le successioni di simboli con il significato
DettagliUniversità del Piemonte Orientale. Corso di laurea in biotecnologie. Corso di Statistica Medica. Le distribuzioni teoriche di probabilità.
Università del Piemonte Orientale Corso di laurea in biotecnologie Corso di Statistica Medica Le distribuzioni teoriche di probabilità. La distribuzione di probabilità binomiale Corso di laurea in biotecnologie
DettagliAritmetica dei Calcolatori
Aritmetica dei Calcolatori Nicu Sebe March 14, 2016 Informatica Nicu Sebe 1 / 34 Operazioni su Bit Bit Scienza della rappresentazione e dell elaborazione dell informazione Abbiamo visto come i computer
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
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
DettagliPROGRAMMA di MATEMATICA A. S. 2015/16 PRIVATISTI CLASSE PRIMA Aritmetica: Gli insiemi numerici N, Z, Q con le operazioni e le proprietà.
CLASSE PRIMA Aritmetica: Gli insiemi numerici N, Z, Q con le operazioni e le proprietà. Utilizzare le procedure del calcolo aritmetico(a mente, per iscritto, a macchina) per calcolare espressioni aritmetiche
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliMoltiplicazione. Divisione. Multipli e divisori
Addizione Sottrazione Potenze Moltiplicazione Divisione Multipli e divisori LE QUATTRO OPERAZIONI Una operazione aritmetica è quel procedimento che fa corrispondere ad una coppia ordinata di numeri (termini
DettagliErrori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
DettagliComplessità computazionale
1 Introduzione alla complessità computazionale Un problema spesso può essere risolto utilizzando algoritmi diversi Come scegliere il migliore? La bontà o efficienza di un algoritmo si misura in base alla
DettagliCURRICOLO DI ISTITUTO
ISTITUTO COMPRENSIVO G.PERLSC Ferrara CURRICOLO DI ISTITUTO NUCLEO TEMTICO Il numero CONOSCENZE BILIT S C U O L P R I M R I classe 1^ L alunno conosce: i numeri naturali, nei loro aspetti cardinali e ordinali,
DettagliAlgoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo
Algoritmi, linguaggi e programmi Emilio Di Giacomo e Walter Didimo Risolvere i problemi Il calcolatore permette di risolvere molti problemi, ma sfortunatamente non tutti Il concetto di algoritmo consente
DettagliUNIVERSITA DEGLI STUDI DI PERUGIA
UNIVERSITA DEGLI STUDI DI PERUGIA REGISTRO DELLE LEZIONI E DELLE ALTRE ATTIVITÀ DIDATTICHE Anno accademico 2006-2007 Dott./Prof. Pinotti Maria Cristina Settore scientifico-disciplinare INF01 Facoltà Scienze
DettagliAppunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
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
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
DettagliISTITUTO COMPRENSIVO BASSA ANAUNIA DENNO PIANO DI STUDIO DI MATEMATICA CLASSE SECONDA. Competenza 1
ISTITUTO COMPRENSIVO BASSA ANAUNIA DENNO PIANO DI STUDIO DI MATEMATICA CLASSE SECONDA Alle fine della CLASSE SECONDA l alunno è in grado di Competenza 1 Competenza 1 Componenti della competenza Abilità
DettagliPermutazioni. 1 Introduzione
Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,
DettagliAlgoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21
DettagliMATEMATICA E COMPETENZE DI BASE IN SCIENZA E TECNOLOGIA MATEMATICA CONCORRENTI DISCIPLINA DI RIFERIMENTO: MATEMATICA COMPETENZA DISCIPLINE tutte
MATEMATICA E COMPETENZE DI BASE IN SCIENZA E TECNOLOGIA MATEMATICA CONCORRENTI DISCIPLINA DI RIFERIMENTO: MATEMATICA COMPETENZA DISCIPLINE tutte MATEMATICA CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE Utilizzare
DettagliCorso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi
Codice BCD Prima di passare alla rappresentazione dei numeri relativi in binario vediamo un tipo di codifica che ha una certa rilevanza in alcune applicazioni: il codice BCD (Binary Coded Decimal). È un
DettagliAppunti di informatica. Lezione 3 anno accademico Mario Verdicchio
Appunti di informatica Lezione 3 anno accademico 2015-2016 Mario Verdicchio Numeri binari in memoria In un calcolatore, i numeri binari sono tipicamente memorizzati in sequenze di caselle (note anche come
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
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.
DettagliDECLINAZIONE COMPETENZE SCUOLA SECONDARIA DI PRIMO GRADO: MATEMATICA COMPETENZE CONOSCENZE ABILITA
DECLINAZIONE COMPETENZE SCUOLA SECONDARIA DI PRIMO GRADO: MATEMATICA COMPETENZE CONOSCENZE ABILITA Operare in situazioni reali e/o disciplinari con tecniche e procedure di calcolo I numeri naturali e il
DettagliInformatica 3 secondo recupero 13 Settembre 2002
Informatica 3 secondo recupero 13 Settembre 2002 Nome (stampatello) Cognome (stampatello) Matr Recupero: Prima prova in itinere Seconda prova in itinere spazio per il docente Punteggi recupero prima prova
DettagliElementi di Informatica
Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi
DettagliAccordo su chiavi. Accordo su una chiave. Diffie-Hellman [1976] Accordo su chiavi. Diffie-Hellman [1976] Diffie-Hellman [1976] ??
Accordo su chiavi Accordo su una chiave Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci K K 1 Accordo su
DettagliATTIVITÀ DEL SINGOLO DOCENTE
PIANO DI LAVORO DOCENTE Rho Maria Luisa MATERIA Matematica DESTINATARI Classe 1 Al ANNO SCOLASTICO 2013-2014 COMPETENZE CONCORDATE CON CONSIGLIO DI CLASSE COMPETENZE CONCORDATE CON GRUPPO DI MATERIA Comportamentali
DettagliPer indicare la complessità asintotica si usa la notazione O-grande (Big-Oh):
ANALISI DELLA COMPLESSITÀ DEGLI ALGORITMI Uno stesso problema può essere risolto da algoritmi di diversa efficienza: tale efficienza diventa rilevante quando la quantità di dati da manipolare diventa grande.
DettagliAlgoritmi e strutture di dati 2
Paola Vocca Lezione 4: Programmazione dinamica 1 Caratteristiche Programmazione dinamica: paradigma basato sullo stesso principio utilizzato per il divide et impera o il problema viene decomposto in sotto-problemi
DettagliAllegati dpr 89/2010 e d.m. 211/2010
DIPARTIMENTO MATEMATICA INDIRIZZO Servizi per l enogastronomia e l ospitalità alberghiera Programmazione disciplinare condivisa PRIMO BIENNIO Allegati dpr 89/2010 e d.m. 211/2010 DISCIPLINA MATEMATICA
DettagliLa Macchina RAM Shepherdson e Sturgis (1963)
La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni
DettagliLa rappresentazione dei dati
La rappresentazione dei dati Base binaria E la base minima che include cifre diverse si devono conoscere le tabelline dello 0 dell 1 in elettronica si realizzano bene dispositivi bistabili There are only
Dettagli3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura
DettagliVBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
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
Dettagli