Tempo e spazio di calcolo

Размер: px
Начинать показ со страницы:

Download "Tempo e spazio di calcolo"

Транскрипт

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

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

Подробнее

Proprietà delle notazioni asintotiche

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

Подробнее

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

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

Подробнее

Esempio : i numeri di Fibonacci

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

Подробнее

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

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

Подробнее

Informatica Teorica. Macchine a registri

Informatica 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

Подробнее

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort

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

Подробнее

Problemi, istanze, soluzioni

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

Подробнее

Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale Primo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 10 marzo 2016 Programma 1. Lettura di un problema tratto dalle

Подробнее

L algoritmo AKS. L algoritmo AKS. Seminario per il corso di Elementi di Algebra Computazionale. Oscar Papini. 22 luglio 2013

L 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à)

Подробнее

Esercizi sulla complessità di frammenti di pseudo-codice

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

Подробнее

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

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

Подробнее

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera

Подробнее

Esercizi Capitolo 2 - Analisi di Algoritmi

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

Подробнее

CURRICOLO VERTICALE MATEMATICA IL NUMERO SCUOLA SECONDARIA DI PRIMO GRADO. Classe 1^

CURRICOLO 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: [email protected] C.M. TVIC838006 CURRICOLO VERTICALE

Подробнее

4.1 Modelli di calcolo analisi asintotica e ricorrenze

4.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ù

Подробнее

Ordinamenti per confronto: albero di decisione

Ordinamenti 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

Подробнее

Cosa si intende con stato

Cosa 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

Подробнее

Strutture dati e algoritmi. Sommario

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

Подробнее

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

Подробнее

Algoritmi e Strutture Dati

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

Подробнее

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

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

Подробнее

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi 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

Подробнее

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi 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

Подробнее

Istituto Comprensivo

Istituto 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

Подробнее

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti 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

Подробнее

Complessità Computazionale

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

Подробнее

PARTE III MACCHINE A REGISTRI

PARTE 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

Подробнее

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

Подробнее

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino 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

Подробнее

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

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

Подробнее

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

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

Подробнее

poiché 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)})

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

Подробнее

Corso di Informatica di Base

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

Подробнее

Analisi asintotica della complessità di tempo degli algoritmi

Analisi 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

Подробнее

ADT Coda con priorità

ADT 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

Подробнее

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti 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

Подробнее

Rappresentazioni numeriche

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

Подробнее

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

Подробнее

PIANO DI LAVORO E DI ATTIVITA DIDATTICA. Classe Sezione Materia. Prima A Matematica. Docente. Antonella Cervi. Anno scolastico 2014/2015

PIANO 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

Подробнее

I Tipi di Dato Astratto

I 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

Подробнее

Sviluppo di programmi

Sviluppo 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

Подробнее

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione (con linguaggio di riferimento C++) Gianfranco Rossi Università di Parma Dip. di Matematica e Informatica 43100 Parma (Italy) [email protected] Indice 1 Introduzione

Подробнее

Somma di numeri binari

Somma 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

Подробнее

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

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

Подробнее

Algoritmi e Principi dell Informatica

Algoritmi 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

Подробнее

Componenti della competenza. Competenza MATEMATICA PRIME. Calcolo scritto

Componenti 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

Подробнее

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Подробнее

MODELLISTICA DI IMPIANTI E SISTEMI Syllabus e Testi di Riferimento Prof. Giuseppe Iazeolla

MODELLISTICA 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

Подробнее

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Codice 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

Подробнее

Programmazione in Java (I modulo)

Programmazione 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

Подробнее

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

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

Подробнее

PROGRAMMA di MATEMATICA A. S. 2015/16 PRIVATISTI CLASSE PRIMA Aritmetica: Gli insiemi numerici N, Z, Q con le operazioni e le proprietà.

PROGRAMMA 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

Подробнее

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma 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

Подробнее

Moltiplicazione. Divisione. Multipli e divisori

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

Подробнее

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori 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

Подробнее

Complessità computazionale

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

Подробнее

CURRICOLO DI ISTITUTO

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

Подробнее

UNIVERSITA DEGLI STUDI DI PERUGIA

UNIVERSITA 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

Подробнее

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Appunti 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

Подробнее

5) Equazioni di ricorrenza

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

Подробнее

Rappresentazione con i diagrammi di flusso (Flow - chart)

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

Подробнее

ISTITUTO 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. 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à

Подробнее

Algoritmi e basi del C Struttura di un programma

Algoritmi e basi del C Struttura di un programma Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio [email protected] Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21

Подробнее

MATEMATICA 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 E COMPETENZE DI BASE IN SCIENZA E TECNOLOGIA MATEMATICA CONCORRENTI DISCIPLINA DI RIFERIMENTO: MATEMATICA COMPETENZA DISCIPLINE tutte MATEMATICA CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE Utilizzare

Подробнее

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Corso 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

Подробнее

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Appunti 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

Подробнее

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

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

Подробнее

1 Esercizi in pseudocodice

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

Подробнее

DECLINAZIONE COMPETENZE SCUOLA SECONDARIA DI PRIMO GRADO: MATEMATICA COMPETENZE CONOSCENZE ABILITA

DECLINAZIONE 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

Подробнее

Elementi di Informatica

Elementi 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

Подробнее

ATTIVITÀ DEL SINGOLO DOCENTE

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

Подробнее

Per indicare la complessità asintotica si usa la notazione O-grande (Big-Oh):

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

Подробнее

Algoritmi e strutture di dati 2

Algoritmi 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

Подробнее

Allegati dpr 89/2010 e d.m. 211/2010

Allegati 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

Подробнее

La Macchina RAM Shepherdson e Sturgis (1963)

La 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

Подробнее

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

Подробнее

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è 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?

Подробнее

Algoritmi (9 CFU) (A.A )

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

Подробнее