4. Algoritmi Numerici Fondamentali

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "4. Algoritmi Numerici Fondamentali"

Transcript

1 4. Algoritmi Numerici Fondamentali Consideriamo adesso un algoritmo classico, per il calcolo del Massimo Comun Divisore (MCD) tra due numeri interi, n ed m: l'algoritmo di Euclide. Senza perdita di generalità, assumiamo n m > 0 e chiamiamo R il MCD. Possiamo descrivere l'algoritmo di Euclide in un linguaggio pseudo-naturale: Euclide(n,m) x n y m while x y do if x > y then x x - y else y y - x endif end R y All'algoritmo descritto sopra corrisponde il diagramma di flusso della Figura 16. Questo algoritmo ha un ciclo di natura diversa da quelli visti in precedenza, perchè non si sa quante volte il ciclo stesso venga eseguito. Consideriamo il ciclo dell'algoritmo e scriviamolo esplicitando un contatore k del numero di cicli eseguiti: 32 k x k-1, y k-1 x k, y k Otteniamo le seguenti condizioni: Asserzione iniziale: n m > 0 Condizione iniziale: x 0 = n, y 0 = m Condizione di terminazione: x t = y t per qualche t Invariante: MCD(x k, y k ) = MCD(n,m) Asserzione finale: R = MCD(x t, y t ) = MCD(n,m) In questo caso, non si sa a priori quante volte venga eseguito il ciclo, perchè non si sa quando la condizione che lo controlla diventi vera. Nella Tabella A riportiamo l'esecuzione dell'algoritmo per n = 40 ed m = 16. Tabella A k x y 0 (n =) 40 (m = ) La correttezza dell'algoritmo è dovuta alla seguente proprietà del MCD: Supponendo, senza restrizione, che n m, se R = MCD(n,m), allora:

2 33 (a) n = h 1 R, m = h 2 R (b) Non esiste un numero R' > R tale che per esso valgano le (a). n, m n m > 0 x <- n y <- m MCD(n,m) = MCD(x,y) x = y x y x = y x MCD(n,m) = n x < y x > y x > y y <- (y-x) x <- (x-y) y - x > 0 x - y > 0 Figura 16 Algoritmo di Euclide basato sulle differenze successive Consideriamo la differenza n - m = R (h 1 - h 2 ). Il numero (h 1 - h 2 ) è un numero intero e quindi R è anche un divisore della differenza (n - m). Inoltre, non esisterà un numero R' > R che goda dlla stessa proprietà, perchè non esiste né per n né per m. Quindi, il MCD di due numeri è anche il MCD di uno qualsiasi dei due e della loro differenza. L'Algoritmo di Euclide calcola il MCD tra due numeri riducendo iterativamente il calcolo a quello del MCD tra il minore dei due e la loro differenza. Consideriamo adesso la terminazione e la complessità dell'algoritmo. Abbiamo che: x 0 = n, y 0 = m Il ciclo viene ripetuto fino a che si raggiunge un t tale per cui x t = y t. Quindi, finchè è k < t, abbiamo: x k = if (x k-1 > y k-1 ) then (x k-1 - y k-1 ) else x k-1 y k = if (x k-1 < y k-1 ) then (y k-1 - x k-1 ) else y k-1 (9) Le (9) implicano che, ad ogni iterazione, la maggiore tra le due variabili y k e x k diminuisce. Quindi, essendo y k e x k sempre > 0, la loro differenza tende

3 34 necessariamente a 0, implicando l'esistenza di un t per cui x t = y t. Quindi il programma termina. Il ciclo viene quindi eseguito t volte e la complessità dell'algoritmo è data da: C(n, m) = t = 4 (t + 1) = O(t) Quando m = 1, il ciclo di sottrazioni successive viene fatto tante volte quante sono le unità di n, perché ad ogni ciclo viene tolta 1 unità da x. Quindi, t n: C(n, m) = O(Max(n, m)) (10) L'Algoritmo di Euclide può essere modificato in modo da avere una complessità minore di quella lineare data dalla (10). Occorre introdurre l'operazione binaria mod : n mod m = Resto della divisione intera tra n e m (11) Per esempio, (12 mod 5) = 2, (23 mod 10) = 3. Osservando che il resto della divisione è il numero che rimane dopo aver tolto il divisore dal dividendo un numero di volte pari al quoziente intero, il ciclo dell'algoritmo di Euclide può essere trasformato sostituendo il mod alla sottrazione; di nuovo, senza restrizione, si può pensare che n m > 0. Euclide(n,m) while m 0 do z n n m m n mod m end R n Analizzando l'algoritmo in modo analogo al precedente, abbiamo: n k-1, m k-1 Asserzione iniziale: n m > 0 Condizione iniziale: n 0 = n, m 0 = m k Condizione di terminazione: m t = 0 Invariante: MCD(n k, m k ) = MCD(n,m) n k, m k Asserzione finale: R = MCD(n,m) Durante il ciclo, abbiamo le seguenti assegnazioni: n k = m k-1 m k = n k-1 mod m k-1 = m k-2 mod m k-1 (12) Usiamo adesso il seguente lemma: Lemma 1 Per ogni coppia di numeri interi (x, y), si ha: x mod y < x/2. Dimostrazione : Sappiamo che, per definizione, è x mod y < y. Consideriamo adesso due casi: (a) Se y x/2, allora, per la proprietà transitiva: x mod y < y x/2 e il lemma è vero. (b) Se x/2 < y < x, allora il quoziente di n/m sarà uguale a 1 e il resto non è altro che la differenza (x - y). Ma, se y > x/2, sarà (x - y) = x mod y < x/2. Quindi, in ogni caso possibile il lemma è vero. Usando il risultato del Lemma 1, dalla (12) abbiamo che: m k = n k-1 mod m k-1 = m k-2 mod m k-1 < m k-2 /2 (13) La (13) ci dice che il valore di m si dimezza (almeno) ogni due passi. Quindi, quando m 2t vale 1, si ha al più un ciclo solo da eseguire ancora. Otteniamo: k = 0 : m 0 = m, k = 2 : m 2 < m/2 1, k = 4 : m 4 < m/2 2,, k = 2 t : m 2t < m/2 t

4 35 La condizione di trminazione dice che deve essere: m/2 t = 1 2 t = m t = lg 2 m Quindi, la complessità dell'algoritmo di Euclide modificato è data da: C(n, m) = O(lg 2 min(n, m)) (14) La terminazione e la correttezza si dimostrano allo stesso modo che per l'algoritmo basato sulle differenze successive. Analizziamo ora un altro algoritmo classico, denominato Setacci di Eratostene, che genera tutti i numeri primi in sequenza crescente. L'algoritmo associa ad ogni numero primo p j (j 1) un "setaccio" σ j, attraverso le cui maglie "cadono" i numeri che sono multipli di p j : p 1 = 2 p 2 = 3 p 3 = 5 p j. p k Viene esaminata la sequenza dei numeri interi dispari (quelli pari non sono primi) e dalla sequenza vengono eliminati tutti i numeri che non sono primi. L'idea dell'algoritmo è quella di far passare i numeri sopra tutti i setacci generati fino a quel momento; se il numero non cade in alcuno dei setacci, allora è il prossimo primo. Nella Figura 17 è riportato il diagramma di flusso. p 1 = 2, p 2 = 3, k = 2 n = 3 p 1 Sqrt(3) p j Sqrt(n) primo(n) j = 1 p k Sqrt(n) primo(n) j = j + 1 p j Sqrt(n) and (n mod p j 0) n = n + 2 primo(n ) p j > Sqrt(n) primo(n) k = k + 1 p k = n n mod p j 0 p k = n primo(n) Figura 17 Algoritmo dei Setacci di Eratostene, per la generazione dei numeri primi.

5 36 L'algoritmo presenta due cicli annidati, il più esterno dei quali non termina, perchè deve trovare tutti i primi. Quello più interno, invece, deve terminare per ogni valore di n. Nell'algoritmo, k denota il numero di primi già trovati al momento in cui si esamina n. Quindi, i primi presenti saranno quelli da p 1 a p k. Osserviamo che il ciclo interno si può fermare per due motivi: (a) Il numero n cade in un setaccio ( n è multiplo di un p j ) (b) Si sono esaminati tutti i primi utili. Questi primi sono quelli che vanno da p 1 a un primo p t tale che p t [ ], ma p t+1 > [ ]. In altre parole basta esaminare quei primi che non superano. La ragione di questo risiede nel fatto che il numero n, se non è primo, cade nel setaccio che corrisponde al più piccolo dei suoi divisori. Sia p il più piccolo divisore di n; allora esisterà un altro intero divisore r, tale che, per definizione di divisibilità, soddisfa la relazione: n = p r (15) Ma p è il più piccolo divisore di n, quindi: r p. Sostituendo nella (15), otteniamo: n = p r p p = p 2 -> p Essendo p intero, sarà alla fine: p [ ]. Consideriamo lo schema dei due cicli, per calcolare gli invarianti. n i-1, k i-1 i j 2 p i-1 p j n i, k i Ciclo esterno n 0 = 3, k 0 = 1 Il ciclo non termina n i = n k i = if (n i-1 è primo) then (k i-1 + 1) else k i-1 Ciclo interno p 1 = 2, k 1 = 1 Il ciclo termina per un t tale che p t [ ] e p t+1 > [ ] p j = next-prime(p j-1 ) Terminazione del ciclo interno Siccome ad ogni iterazione p j aumenta, perchè la sequenza dei primi è strettamente crescente, e siccome n 1-1 è costante nel ciclo, esiste sicuramente un numero t tale che la condizione di terminazione diventa vera. Correttezza Dobbiamo dimostrare che l'algoritmo trova tutti e soli i primi esistenti. Osserviamo subito che l'algoritmo non può perdere un numero primo. Infatti, sia p il numero primo perso: in questo caso, p deve essere stato trovato non primo e quindi eliminato dalla sequenza dei numeri dispari, essendo caduto in un setaccio. Questo è impossibile, perchè, non esistendo alcun divisore di p, p non può cadere in alcun setaccio. D'altra parte, potrebbe accadere che un numero n non primo sia dichiarato primo. Questo errore potrebbe verificarsi se, al momento di esaminare n, non fossero stati trovati tutti i setacci occorrenti, e cioè se p k < p t [ ]. Facciamo vedere che questo non è possibile usando il principio di induzione (Ricordiamo che p k è l'ultimo primo trovato).

6 37 Passo base: B 0 -> Quando si esamina n 0 = 3, è k = 1, p 1 = 2 > Ipotesi induttiva: Hp : Per tutti i valori dell'indice del ciclo fino a (i-1), vale la relazione p k(i-1)+1 > [ ], essendo p k(i-1) l'ultimo primo trovato quando si esamina n i-1. Tesi da dimostrare: Ts : Si ha p k(i)+1 > [ ]. Si ha la relazione n i = n i Quindi, [ ] [ ] + 1. D'altra parte, per quanto riguarda i primi trovati, essi non cambiano se n i-1 non è primo. In questo caso, sarà ancora p k(i)+1 = p k(i-1)+1 [ ], perchè n i non può richiedere un ulteriore primo per la sua analisi, non essendoci due primi che differiscono di meno di due unità (tranne che per 2 e 3, caso che viene esaminato direttamente). Se n i-1 è primo, si ha k(i) = k(i-1) e quindi p k(i)+1 p k(i-1) [ ]. Quindi, l'algoritmo è corretto. Complessità Per quanto riguarda la complessità, consideriamo la Figura 16. L'algoritmo ha una complessità sostanzialmente dipendente dai due cicli annidati. Dato che il ciclo esterno non si ferma, per valutare la complessità, assumiamo che si vogliano trovare i primi non superiori a un numero N (dispari). Quindi, il ciclo esterno è ripetuto (N-1)/2 volte. Per ogni ripetizione, cui è associato il valore n, si fanno un massimo di t confronti tra n e i setacci, con p t+1 > [ ]. Questi confronti si fanno tutti quando n è primo, ma se ne possono fare di meno quando n non è primo. Siccome cerchiamo la massima complessità (quella del caso peggiore), possiamo dire che vengono fatti sempre t(n) confronti. Ma t(n) è il numero di primi non superiori a [ ]. Siccome vale la relazione: avremo che: (Numero di primi M) ~ per ogni M (16) t(n) ~ La complessità sarà dunque: C(N) = = O(N 3/2 /lnn) Nell'Esempio 25 avevamo introdotto un algoritmo per il calcolo della potenza y = x n, che era lineare con n. Vogliamo adesso vedere se c'è un algoritmo più efficiente di quello. Se la potenza n = 2p e un numero pari, possiamo scrivere: x n = x 2p = x p * x p (17) Per calcolare x n occorre fare n = 2p moltiplicazioni, ma usando la (17) e memorizzando x p, basta farne (p + 1 ). Se p è ancora un numero pari, possiamo ripetere il procedimento. Quindi se n è una potenza di 2, cioè n = 2 m posso scrivere l'algoritmo di Figura 18. Analizziamo l'algoritmo. Sia k la variabile che denota il numero di ripetizioni del ciclo. Avremo: Asserzione inziale: base 0 = x, esp 0 = n Asserzione finale: esp t = 1 per un certo t base k = base k-1 * base k-1 ; esp k = esp k-1 /2

7 38 x, n (x 0) (n = 2 m ) (m 0) esp = n base = x (x n = base esp ) (esp = 2 q ) (q 0) esp = 1 base (esp = 2 q ) (q > 0) base = base * base (x n = base esp/2 ) esp = esp/2 Figura 18 Calcolo della potenza x n. Avremo quindi: base 0 = x esp 0 = n base 1 = base 0 * base 0 = x 2 esp 1 = esp 0 / 2 = n/2 base 2 = base 1 * base 1 = (x 2 ) 2 = x 4 esp 2 = esp 1 / 2 = n/4.. base k = base k-1 * base k-1 = (x 2 ) 2 = x 2k esp k = esp k-1 / 2 = n/2 k Quando ci si ferma, si deve avere: esp t = n/2 t = 1 t = lg 2 n Quindi, il programma termina, perchè esp diminuisce ad ogni ciclo, pur restando positivo. Quando k = t = lg 2 n, il programma fornisce l'output: base t = x 2t = x 2 lg2n = x n Quindi l'algoritmo è corretto. Per quanto riguarda la complessità, essa dipende dal numero di volte che il ciclo viene eseguito: C (n) = O(t) = O(lg 2 n). Qundo n non è una potenza di 2, in particolare se n è dispari, si può scrivere n = 2p +1 e possiamo scrivere x n = x (2p+1) = x * x (2p) e quindi applicare il procedimento visto per gli n pari al passo successivo, ottenendo l'algoritmo di Figura 19. Analizziamo il ciclo e dimostriamo che la formula x n = (ris base esp ) (esp 0) è l invariante. base k-1, esp k-1, ris k-1 Condizione iniziale: base 0 = x, esp 0 = n, ris 0 = 1 Condizione finale: esp t = 0 per un certo t k base k-1, esp k-1, ris k-1

8 39 Inoltre: base k = if (esp k-1 è pari) then( base k-1 ) 2 else base k-1 esp k = if (esp k-1 è pari) then esp k-1 /2 else esp k-1 ris k = if (esp k-1 è pari) then ris k-1 else ris k-1 * base k-1 La prima volta che si entra nel ciclo, e cioè quando ris = 1, esp = n e base = x, l invariante è certamente vero. Supponiamo che lo sia dopo un certo numero di iterazioni e dimostriamo che lo è dopo una ulteriore iterazione, usando il principio di induzione matematica. Da esp 0 ed esp 0 deriviamo esp > 0. Nel caso in cui esp sia pari : ris (base esp = ris) (base base esp/2 ) (18) Dopo l assegnamento base base*base è vera l asserzione: (x n = ris) base esp/2 e quindi dopo l'assegnazione esp esp/2 ritrovo l invariante. Notiamo che nel caso in cui esp sia dispari, l equazione (18) non è vera. In questo caso sappiamo che: ris (base esp = ris) base base esp-1 Quindi, dopo l assegnamento ris ris * base ottengo l asserzione: (x n = ris) base esp-1 e dopo l assegnamento esp esp-1 ottengo di nuovo l'invariante. Inoltre, poichè n 0, il programma termina. Quindi all uscita del ciclo (cioè quando esp = 0) l invariante diventa: (x n = ris) (base 0 = ris) (1 = ris) che è esattamente l asserzione finale. Calcoliamo ora la complessità dell algoritmo. La complessità è dell ordine del numero dei cicli effettuati. Per prima cosa vediamo un esempio. Si consideri x 13. Con l algoritmo lineare si effettuano 13 cicli, mentre con questo algoritmo si effettuano cicli con esp = 13, esp = 12, esp = 6, esp = 3, esp = 2, esp = 1 (poi esp = 0 e si esce). Quindi si effettuano 6 cicli. Consideriamo l algoritmo in generale. Abbiamo visto che il caso migliore si ha quando l esponente n è una potenza di 2, diciamo 2 m. In questo caso si effettuano m cicli, e cioè un numero di cicli pari a log 2 n. Il caso peggiore si ha quando n è dispari, e tutte le volte che si sottrae 1 o si divide per 2 il numero risultante è ancora dispari. In questo caso n = 2 m - 1, per cui effettueremo (2 log 2 n) volte il ciclo. Quindi la complessità è O(log 2 n).

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

c A (a c = b) Le ipotesi che abbiamo ci dicono che esistono h, k A tali che:

c A (a c = b) Le ipotesi che abbiamo ci dicono che esistono h, k A tali che: Definizione 1. Dato un insieme A, un operazione su A è una applicazione da A A a valori in A. Definizione 2. Se A è un insieme con una operazione, dati a, b A diciamo che a divide b (e scriviamo a b) se

Dettagli

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

Due numeri naturali non nulli a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi.

Due numeri naturali non nulli a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi. MASSIMO COMUNE DIVISORE E ALGORITMO DI EUCLIDE L algoritmo di Euclide permette di calcolare il massimo comun divisore tra due numeri, anche se questi sono molto grandi, senza aver bisogno di fattorizzarli

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. A.A. 2015-2016. CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. Esercizio 5.1. Determinare le ultime tre cifre di n = 13 1625. (Suggerimento. Sfruttare il Teorema di Eulero-Fermat)

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

Calcolare x n = x x x (n volte)

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

Dettagli

3/10/ Divisibilità e massimo comun divisore

3/10/ Divisibilità e massimo comun divisore MCD in N e Polinomi 3/10/2013 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore di due numeri naturali

Dettagli

Diagrammi di flusso: forme

Diagrammi di flusso: forme Il linguaggio C in breve Diagrammi di flusso: forme Inizio/ Fine Istruzione Input/ Output Cond C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 18/19 pag. 57 Il linguaggio C in breve if cond

Dettagli

4.5 Tempo di calcolo: introduzione.

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

Dettagli

Tutti i numeri qui considerati sono interi. Se si tratta in particolare di numeri Naturali (quindi non negativi) verrà specificato.

Tutti i numeri qui considerati sono interi. Se si tratta in particolare di numeri Naturali (quindi non negativi) verrà specificato. LICEO B. RUSSELL A.S. 2010/2011 DALLA TEORIA DEI NUMERI ALLE CONGRUENZE Tutti i numeri qui considerati sono interi. Se si tratta in particolare di numeri Naturali (quindi non negativi) verrà specificato.

Dettagli

Monomi L insieme dei monomi

Monomi L insieme dei monomi Monomi 10 10.1 L insieme dei monomi Definizione 10.1. Un espressione letterale in cui numeri e lettere sono legati dalla sola moltiplicazione si chiama monomio. Esempio 10.1. L espressione nelle due variabili

Dettagli

Appunti sui Codici di Reed Muller. Giovanni Barbarino

Appunti sui Codici di Reed Muller. Giovanni Barbarino Appunti sui Codici di Reed Muller Giovanni Barbarino Capitolo 1 Codici di Reed-Muller I codici di Reed-Muller sono codici lineari su F q legati alle valutazioni dei polinomi sullo spazio affine. Per semplicità

Dettagli

Appunti di Teoria dei numeri e algebra modulare

Appunti di Teoria dei numeri e algebra modulare Appunti di Teoria dei numeri e algebra modulare 29 novembre 2013 0.1 Equazioni di II grado Le soluzioni dell equazione ax 2 + bx + c = 0 con b 2 4ac 0 sono Tra le soluzioni valgono le relazioni x 1,2 =

Dettagli

Esercizi di Algebra. 25 marzo Soluzione Si tratta di trovare una soluzione del sistema di equazioni congruenziali

Esercizi di Algebra. 25 marzo Soluzione Si tratta di trovare una soluzione del sistema di equazioni congruenziali Esercizi di Algebra 25 marzo 2010 1. Soluzione Si tratta di trovare una soluzione del sistema di equazioni congruenziali X 2 mod 5 X 3 mod 7 X 7 mod 9, che sia prossima a 1000. Dalla prima equazione abbiamo

Dettagli

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 12 ottobre 2010 1 Vero o falso? Per ciascuna delle seguenti affermazioni, dire se è vera o falsa, fornendo una dimostrazione:

Dettagli

PREPARAZIONE ALLE GARE DI MATEMATICA - CORSO BASE

PREPARAZIONE ALLE GARE DI MATEMATICA - CORSO BASE Liceo Scientifico Gullace PREPARAZIONE ALLE GARE DI MATEMATICA - CORSO BASE Aritmetica 014-15 1 Lezione 1 DIVISIBILITÀ, PRIMI E FATTORIZZAZIONE Definizioni DIVISIBILITÀ': dati due interi a e b, diciamo

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi

Dettagli

Istituzioni di Matematiche (V): Seconda Prova Parziale, 13 Gennaio 2015 (versione 1)

Istituzioni di Matematiche (V): Seconda Prova Parziale, 13 Gennaio 2015 (versione 1) Istituzioni di Matematiche (V): Seconda Prova Parziale, 13 Gennaio 015 (versione 1) Nome e Cognome: Numero di matricola: Esercizio 1 Esercizio Esercizio 3 Esercizio 4 Esercizio 5 Totale 4 6 6 8 6 Tutte

Dettagli

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite

Dettagli

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore MCD in N e Polinomi Giovanna Carnovale October 18, 2011 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore

Dettagli

Aritmetica sui numeri interi

Aritmetica sui numeri interi CHAPTER 1 Aritmetica sui numeri interi L insieme dei numeri naturali N è certamente l insieme numerico più familiare. Non consideriamo lo zero 0 come elemento dell insieme N; non è stata infatti naturale

Dettagli

Informatica

Informatica Informatica 2019-06-24 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si forniscano le regole della semantica delle espressioni di IMP, e si enunci il risultato di determinismo per tale

Dettagli

Lezione 4: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive (2p) Venerdì 7 Ottobre 2009

Lezione 4: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive (2p) Venerdì 7 Ottobre 2009 Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Meccanica & Ingegneria Gestionale Mat. Pari Docente : Ing. Secondulfo Giovanni Anno Accademico 2009-2010 Lezione 4: La

Dettagli

Ottimizzazione dei Sistemi Complessi

Ottimizzazione dei Sistemi Complessi 1 Giovedì 2 Marzo 2017 1 Istituto di Analisi dei Sistemi ed Informatica IASI - CNR Pseudo-code del metodo Fermi-Metropolis Input: x 0, 0, min, maxit k 0, x x 0, 0 while k maxit and min do k k + 1, x x

Dettagli

Esercizi di Algebra. 3 aprile 2006

Esercizi di Algebra. 3 aprile 2006 Esercizi di Algebra 3 aprile 2006 1 Sia n 2 un intero (a) Trovare due interi a b > 0 tali che siano richiesti 5 passi dell algoritmo euclideo per stabilire che MCD(a, b) = n (b) Trovare due interi x n,

Dettagli

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica

Dettagli

Nozioni di base (II Parte)

Nozioni 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

Dettagli

Elezione di un leader in una rete ad anello

Elezione di un leader in una rete ad anello Elezione di un leader in una rete ad anello Corso di Algoritmi Distribuiti Prof. Roberto De Prisco Lezione n a cura di Rosanna Cassino e Sergio Di Martino Introduzione In questa lezione viene presentato

Dettagli

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica G. Pareschi COMPLEMENTI ED ESEMPI SUI NUMERI INTERI. 1. Divisione con resto di numeri interi 1.1. Divisione con resto. Per evitare fraintendimenti nel caso in cui il numero a del Teorema 0.4 sia negativo,

Dettagli

Fondamenti di Informatica A. A. 2018/19

Fondamenti di Informatica A. A. 2018/19 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale

Dettagli

Aritmetica. Divisibilità e numeri primi

Aritmetica. Divisibilità e numeri primi Aritmetica Indicheremo con N l insieme dei numeri naturali 0, 1, 2,... e con Z l insieme dei numeri interi..., 2, 1, 0, 1, 2,.... Divisibilità e numeri primi Def 1 Dati due numeri interi a, b, diciamo

Dettagli

Istruzioni di controllo: SEQUENZA

Istruzioni di controllo: SEQUENZA Istruzioni di controllo: SEQUENZA Negli esempi visti in precedenza gli algoritmi sono stati descritti come sequenze di passi elementari del tipo Passo 1. azione 1 Passo 2. azione 2... Abbiamo utilizzato

Dettagli

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

Dettagli

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.

Analisi 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

Dettagli

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

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

Dettagli

Strutture di controllo iterative

Strutture di controllo iterative Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

Progetto e analisi di algoritmi

Progetto e analisi di algoritmi Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento

Dettagli

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

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

Dettagli

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. ! Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 24 26 maggio 2015!

Dettagli

Dunque k vale all incirca log n: precisamente k = [log n] + 1.

Dunque k vale all incirca log n: precisamente k = [log n] + 1. Teoria Elementare dei Numeri Soluzioni Esercizi 1 Convenzione: Su questo foglio log n indica sempre il logaritmo in base 2 di n 1 Quante cifre binarie ha all incirca un numero intero n? Sol Scriviamo n

Dettagli

Il nano sulle spalle del gigante

Il nano sulle spalle del gigante Il nano sulle spalle del gigante il sottile legame che separa matematica e informatica Miriam Di Ianni Università di Roma Tor Vergata Cosa è un problema? Dal dizionario: In matematica e in altre scienze,

Dettagli

Piccolo teorema di Fermat

Piccolo teorema di Fermat Piccolo teorema di Fermat Proposizione Siano x, y Z, p N, p primo. Allora (x + y) p x p + y p (mod p). Piccolo teorema di Fermat Proposizione Siano x, y Z, p N, p primo. Allora (x + y) p x p + y p (mod

Dettagli

Informatica

Informatica Informatica 2014-09-10 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si illustrino le differenze tra gli algoritmi di ricerca lineare e ricerca binaria su un vettore. Anche senza presentarli

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

METODI MATEMATICI PER L INFORMATICA

METODI MATEMATICI PER L INFORMATICA METODI MATEMATICI PER L INFORMATICA Tutorato Lezione 6 12/05/2016 Corso per matricole congrue a 1 Docente: Margherita Napoli Tutor: Amedeo Leo Induzione Esercizio 20 pagina 330 Mostrare che 3 n < n! se

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 13 - Gli algoritmi e la risoluzione di problemi Sommario Passi per la risoluzione di problemi Problemi di ricerca e ordinamento Algoritmi iterativi: la ricerca lineare

Dettagli

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

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

Dettagli

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE PROGRAMMAZIONE BIENNIO: SECONDA DISCIPLINA: INFORMATICA PIANO DI LAVORO DEL DOCENTE / RELAZIONE FINALE Anno scolastico 2014/2015 DOCENTE Prof. PAOLO ARMANI CLASSE:

Dettagli

In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg.

In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg. In questa lezione Heap binario heapsort [CLRS10] cap. 6, par. 6.1-6.4!1 Heap binari Un heap binario è una struttura dati consistente di un array visto come un albero binario. A= 5 60 65 30 50 18 40 25

Dettagli

ANELLI EUCLIDEI E ANELLI A IDEALI PRINCIPALI. contrassegna gli esercizi (relativamente) più complessi.

ANELLI EUCLIDEI E ANELLI A IDEALI PRINCIPALI. contrassegna gli esercizi (relativamente) più complessi. ESERCIZI SU ANELLI EUCLIDEI E ANELLI A IDEALI PRINCIPALI N.B.: il simbolo contrassegna gli esercizi relativamente più complessi. 1 Sia A un anello commutativo unitario. Dimostrare che A è un campo A ha

Dettagli

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi Parte prima 1) Si dimostri il teorema sulla limitazione inferiore per il tempo asintotico di esecuzione nel caso

Dettagli

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2 Dati due numeri naturali a e b, diremo che a è divisibile per b se la divisione a : b è esatta, cioè con resto 0. In questo caso diremo anche che b è un divisore di a. 24 : 3 = 8 con resto 0 26 : 4 = 6

Dettagli

1. Esistono numeri della forma , ottenuti cioè ripetendo le cifre 2006 un certo numero di volte, che siano quadrati perfetti?

1. Esistono numeri della forma , ottenuti cioè ripetendo le cifre 2006 un certo numero di volte, che siano quadrati perfetti? 1 Congruenze 1. Esistono numeri della forma 200620062006...2006, ottenuti cioè ripetendo le cifre 2006 un certo numero di volte, che siano quadrati perfetti? No, in quanto tutti questi numeri sono congrui

Dettagli

Elementi di Informatica

Elementi di Informatica Elementi di Informatica Capitolo 6 Iterazione Prof. Mauro Gaspari: mauro.gaspari@unibo.it Assegnamenti multipli bruce = 5 print bruce, bruce = 7 print bruce Assegnamento e uguaglianza E' importante distinguere

Dettagli

2. Algoritmi e Programmi

2. Algoritmi e Programmi 12 2. Algoritmi e Programmi Dato un problema, per arrivare ad un programma che lo risolva dobbiamo: individuare di cosa dispongo: gli input; definire cosa voglio ottenere: gli output; trovare un metodo

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II

Dettagli

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente

Per 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

Dettagli

nota 1. Aritmetica sui numeri interi.

nota 1. Aritmetica sui numeri interi. nota 1. Aritmetica sui numeri interi. Numeri interi. Numeri primi. L algoritmo di Euclide per il calcolo del mcd. Equazioni diofantee di primo grado. Congruenze. Il Teorema Cinese del Resto. 1 0. Numeri

Dettagli

Applicazioni dell Algoritmo di Euclide

Applicazioni dell Algoritmo di Euclide Applicazioni dell Algoritmo di Euclide Applicazione dell Algoritmo di Euclide al calcolo del Massimo Comune Divisore tra due interi Mostriamo un esempio di come l algoritmo di Euclide permetta di calcolare

Dettagli

Definizione. Siano a, b Z. Si dice che a divide b se esiste un intero c Z tale che. b = ac.

Definizione. Siano a, b Z. Si dice che a divide b se esiste un intero c Z tale che. b = ac. 0. Numeri interi. Sia Z = {..., 3, 2, 1, 0, 1, 2, 3,...} l insieme dei numeri interi e sia N = {1, 2, 3,...} il sottoinsieme dei numeri interi positivi. Sappiamo bene come addizionare, sottrarre e moltiplicare

Dettagli

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione.

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione. parte II - A 2 Si consideri la seguente funzione: analizzami(int n) c = 1 k = n*n while k > 1 do k = k/2 for i = 0 to 3 do if n >1 then analizzami(n/4) Si imposti la relazione di ricorrenza che ne descrive

Dettagli

For e do. Parte 4. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

For e do. Parte 4. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Se d = 0, ogni numero naturale è suo divisore (con quoziente nullo) e 0 è multiplo solo di se stesso.

Se d = 0, ogni numero naturale è suo divisore (con quoziente nullo) e 0 è multiplo solo di se stesso. Illustrazione di tavola 2 La nozione di massimo comune divisore tra una coppia di numeri naturali viene meglio compresa, se è introdotta e studiata analizzandone il significato in connessione alle proprietà

Dettagli

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi Francesco Pasquale 6 maggio 2015 Esercizio 1. Su una strada rettilinea ci sono n case nelle posizioni 0 c 1 < c 2 < < c n. Bisogna installare

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

INSIEME N. L'insieme dei numeri naturali (N) è l'insieme dei numeri interi e positivi.

INSIEME N. L'insieme dei numeri naturali (N) è l'insieme dei numeri interi e positivi. INSIEME N L'insieme dei numeri naturali (N) è l'insieme dei numeri interi e positivi. N = {0;1;2;3... Su tale insieme sono definite le 4 operazioni di base: l'addizione (o somma), la sottrazione, la moltiplicazione

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 14 Sistema di Dimostrazioni per le Triple di Hoare Comando Iterativo A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2017/18 pag. 260 Semantica

Dettagli

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

Dettagli

= < < < < < Matematica 1

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

Dettagli

Parte I. Incontro del 6 dicembre 2011

Parte I. Incontro del 6 dicembre 2011 Parte I Incontro del 6 dicembre 20 3 Notazioni Si suppone che il lettore sia familiare con le notazioni insiemistiche, in particolare con quelle che riguardano gli insiemi numerici: N = { 0,, 2, 3, } (numeri

Dettagli

For e do. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

For e do. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

For e do. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

For e do. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

nota 1. Aritmetica sui numeri interi.

nota 1. Aritmetica sui numeri interi. nota 1. Aritmetica sui numeri interi. Numeri interi. Numeri primi. L algoritmo di Euclide per il calcolo del mcd. Equazioni diofantee di primo grado. Congruenze. Il Teorema Cinese del Resto. 1 0. Numeri

Dettagli

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

Dettagli

Capitolo 5 Campi finiti

Capitolo 5 Campi finiti Capitolo 5 Campi finiti Definizione 5.1. Un campo finito K (cioè composto da un numero finito di elementi) si dice campo di Galois. Il numero dei suoi elementi si dice ordine e si denota con K. Un campo

Dettagli

CAPITOLO 1. I numeri naturali 0, 1, 2, 3,...

CAPITOLO 1. I numeri naturali 0, 1, 2, 3,... CAPITOLO 1 I numeri naturali I numeri naturali sono quelli che usiamo per contare: 0, 1,, 3,... e dei quali conosciamo alcune proprietà. Ad esempio sappiamo sommare e moltiplicare due numeri naturali;

Dettagli

Risposte non motivate non verranno giudicate

Risposte non motivate non verranno giudicate Istituzioni di Matematiche 12/01/2016 Ver.1 SECONDO PARZIALE Gli studenti della laurea quadriennale svolgono gli esercizi 1,2,3,5 e gli studenti della laurea quinquennale gli esercizi 1,2,3,4 1. 2. 3.

Dettagli

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Verifica di programmi

Verifica di programmi Verifica di programmi Informalmente, un programma è corretto se l output prodotto è quello atteso rispetto all input. La correttezza dei programmi può essere espressa mediante formule per la correttezza

Dettagli

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

ESERCITAZIONI 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

Dettagli

Un problema di programmazione dei lavori

Un problema di programmazione dei lavori Un problema di programmazione dei lavori Un lavoro unitario è un lavoro che richiede esattamente una unità di tempo per essere eseguito. Dato un insieme S di lavori unitari, una programmazione per S è

Dettagli

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13 TRIPLE DI HOARE: ESEMPI ED ESERCIZI Corso di Logica per la Programmazione A.A. 2012/13 RICORDIAMO LA REGOLA PER IL COMANDO ITERATIVO P Inv def(e) Inv E Q Inv t 0 {Inv E} C {Inv def(e)} {P} while E do C

Dettagli

ELEMENTI DI LOGICA MATEMATICA LEZIONE VII

ELEMENTI DI LOGICA MATEMATICA LEZIONE VII ELEMENTI DI LOGICA MATEMATICA LEZIONE VII MAURO DI NASSO In questa lezione introdurremo i numeri naturali, che sono forse gli oggetti matematici più importanti della matematica. Poiché stiamo lavorando

Dettagli

Esercizi sulla complessità di frammenti di pseudo-codice

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

Dettagli

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

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

Dettagli

Rappresentazione degli algoritmi

Rappresentazione 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

Dettagli

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 4 anno accademico 2015-2016 Mario Verdicchio Numeri primi Si definisce primo un numero intero maggiore di 1 che ha due soli divisori: se stesso e 1 Esempi di numeri primi:

Dettagli