La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

ALGORITMI Luglio 2004 Luglio 2004 Algoritmi.

Presentazioni simili


Presentazione sul tema: "ALGORITMI Luglio 2004 Luglio 2004 Algoritmi."— Transcript della presentazione:

1 ALGORITMI Luglio 2004 Luglio 2004 Algoritmi

2 L’algoritmo più antico
Algoritmo di Euclide [Elementi, libro VII, proposizioni I e II, a.C.] Dati due interi positivi m e n, trovare il loro massimo comune divisore, cioè il massimo intero positivo che divide senza resto sia m che n E1. [trovare il resto]: dividere m per n e chiamare r il resto E2. [è zero?]: se r=0 l’algoritmo termina e n è la risposta E3. [scambiare]: porre mn, nr e tornare indietro al passo E1 (1) m e n sono dati d’ingresso, presi dall’insieme degli interi positivi (2) n, dato d’uscita, è il massimo comune divisore dei dati d’ingresso (3) r decresce dopo ogni applicazione del passo E1, e una sequenza decrescente di interi positivi deve necessariamente finire con 0 (4)-(5) la divisione e il resto sono definiti matematica-mente e sono eseguibili in un tempo finito Luglio 2004 Algoritmi

3 CONOSCENZE SUL PROBLEMA NECESSARIE A COSTRUIRE l’ALGORITMO
Proprietà del MCD (1) MCD(m,n) = MCD(n,m) (2) se m = n allora MCD(m,n) = n = m (3) se m > n e n = 0 allora MCD(m,0) = m (4) se m > n e n > 0 allora MCD(m,n) = MCD(m-n,n) = MCD(m-2*n,n) = ….. = MCD(m-q*n,n) = MCD(r,n) = MCD(n,r) CONOSCENZE SUL PROBLEMA NECESSARIE A COSTRUIRE l’ALGORITMO E1. [trovare il resto]: dividere m per n e chiamare r il resto E2. [è zero?]: se r=0 l’algoritmo termina e n è la risposta E3. [scambiare]: porre mn, nr e tornare indietro al passo E1 Luglio 2004 Algoritmi

4 Il concetto di algoritmo
[Da Al-Kowarizmi, matematico arabo del IX secolo] Algoritmo: metodo generale, astratto ed effettivo di risoluzione di problemi formulati esplicitamente Generale: sommare 3+4 (particolare) sommare x+y (generale, per ogni coppia x,y) Astratto: indipendente dal metodo di rappresentazione Effettivo: soddisfa condizioni di definitezza ed eseguibilità Formulazione esplicita/implicita di problemi Luglio 2004 Algoritmi

5 Diverse rappresentazioni di uno stesso algoritmo
Flowchart INIZIO input m,n m m+1 n n - 1 n=0 vero output m in italiano in pseudocodice 1. Acquisisci in ingresso begin i valori di m,n read m,n 2. Incrementa m di 1 repeat e decrementa n di mm+1 3. Se n0 torna a nn-1 4. Produci in uscita il until n=0 valore di m write m end falso FINE Luglio 2004 Algoritmi

6 Effettività Condizioni di definitezza ed eseguibilità di un algoritmo:
(1) ha zero o più dati in ingresso (quantità assegnate prima dell’inizio) (2) ha uno o più dati d’uscita (quantità ottenute alla fine, che hanno una relazione specificata con gli ingressi) (3) deve poter terminare dopo un numero finito e discreto di passi (4) ogni passo deve essere definito in modo preciso e non ambiguo per ogni caso possibile (5) le azioni (operazioni) devono potere essere eseguite da un esecutore, che le sa interpretare, in una quantità finita di tempo [una ricetta di cucina non è un algoritmo] Luglio 2004 Algoritmi

7 Esecuzione e terminazione
somma (m,n) INIZIO m,n n=0 m n n=0 m n n=0 inizio inizio 1o giro falso 1o giro falso 2o giro vero 2o giro falso ……… … …. n-esimo falso giro non termina per n0! mm+1 n n-1 falso vero FINE Luglio 2004 Algoritmi

8 Algoritmi che usano altri algoritmi
prodotto (x,y) INIZIO x,y yy-1 z somma(z,x) y=0 vero FINE x y z somma (z,x) y=0 inizio 1o giro somma (0,3) falso 2o giro somma (3,3) vero z0 falso Luglio 2004 Algoritmi

9 Soluzione di problemi formulati implicitamente
A deve determinare l'età dei tre figli di B (1) B dice ad A che il prodotto delle età dei figli è 36 A chiede un altro dato (2) B dice ad A la somma delle età dei figli A chiede ancora un altro dato (3) B dice ad A che il figlio maggiore suona il pianoforte A dice a B l'età dei tre figli Che età hanno i tre figli? Ragionamento: (1) triple il cui prodotto è 36 <1,1,36> <1,4,9> <2,3,6> <1,2,18> <1,6,6> <3,3,4> <1,3,12> <2,2,9> (2) somma delle triple precedenti 1+1+36= = =11 1+2+18= = =10 1+3+12= =13 Poiché A chiede un altro dato, la somma è 13, in quanto ci sono 2 triple con quella somma (3) il pianoforte è irrilevante, l’informazione è che uno dei 3 figli è il maggiore: in non c’è un maggiore, mentre c’è in 2+2+9, che è la soluzione Luglio 2004 Algoritmi

10 STORIA DEGLI ALGORITMI
Donald E. Knuth (1970) americano “La teoria degli algoritmi… si occupa principalmente della esistenza o non esistenza di algoritmi effettivi per calcolare particolari quantità… L’analisi degli algoritmi… è invece intesa a significare la teoria delle proprietà di particolari algoritmi per calcolatori.” Edsger W. Dijkstra (1976) olandese “Un algoritmo definito in modo formale consente di farne oggetto di studio matematico e di poterlo eseguire in modo automatico” Niklaus Wirth (1977) svizzero Algoritmi trattati con sistemi multiprocessore. Luglio 2004 Algoritmi

11 Agente segreto L’agente segreto 89 sta cercando di scoprire tra quanti giorni un certo leader mondiale sarà assassinato. Il suo contatto gli dice che questa informazione si trova disseminata in una serie di 10 scatole dell’ufficio postale, per evitare che altri ne vengano a conoscenza, e gli dà 10 chiavi, con le seguenti istruzioni: 1. l’informazione in ogni scatola è scritta in codice; 2. aprire prima la scatola 1 ed eseguire l’istruzione che vi si trova; 3. continuare attraverso le altre scatole in sequenza, a meno che le istruzioni non indichino diversamente; 4. una delle scatole è predisposta per esplodere se aperta . L’agente 89 prende le 10 chiavi e va all’ufficio postale, con il libro del codice in mano. Luglio 2004 Algoritmi

12 Agente segreto Scatole postali : memoria,
contenente istruzioni- scatole da 1) a 6) e dati - scatole da 8) a 10) I numeri delle scatole sono indirizzi di memoria Nelle scatole da 1) a 6) ci sono tre classi di istruzioni; in 1), 2), 3) e 5) istruzioni che riguardano operazioni aritmetiche in 4) un’istruzione di decisione, che dipende dal risultato della precedente istruzione aritmetica in 6) istruzione di controllo (STOP) che non richiede dati nè rimanda ad altri indirizzi Luglio 2004 Algoritmi

13 Le istruzioni di lettura di scrittura di assegnamento di controllo
sono presenti in tutti i linguaggi per esprimere algoritmi Luglio 2004 Algoritmi

14 Istruzioni di lettura LEGGI a, b, c
Assegna alle variabili di nome a, b, c i valori forniti dall’esterno, nell’ordine LEGGI I VALORI DI a, b, c 11 a b c 3 2 11 a 2 b 3 c 11 3 2 Luglio 2004 Algoritmi

15 Istruzioni di scrittura
STAMPA x1, x2 Stampa i valori delle variabili di nome x1 e x2 STAMPA “nessuna soluzione” Stampa (senza alcuna elaborazione) la sequenza di caratteri contenuta tra virgolette Luglio 2004 Algoritmi

16 Variabili e assegnamenti
Una variabile: ha un nome denota un valore Istruzione di Assegnamento Esempio: A  B + C calcola il valore dell’espressione B + C (sommando il valore della variabile B con il valore della variabile C) e lo assegna come (nuovo) valore della variabile A il valore di A viene modificato i valori di B e C sono usati, ma non modificati Luglio 2004 Algoritmi

17 Esempio di assegnamento
X  X + 1 prima della esecuzione dopo l’esecuzione X 2 X 3 Luglio 2004 Algoritmi


Scaricare ppt "ALGORITMI Luglio 2004 Luglio 2004 Algoritmi."

Presentazioni simili


Annunci Google