Introduzione agli algoritmi Algoritmo Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova descrizione di come si deve eseguire un lavoro o risolvere un problema sequenza di passi/istruzioni Muh.ammad ibn Mūsā al-Khuwārizmı̄ matematico arabo autore di Al-jabr w’al muqābala procedimento di calcolo esistono anche in altri contesti: processo algoritmo passo tipico montare un istruzioni incolla mobile di montaggio A su B cucinare ricetta aggiungere olio Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.1 Esecuzione Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.2 Programmazione esecutore uomo/calcolatore problema funzionalità dell’esecutore: capire il significato di ogni passo eseguire l’operazione corrispondente algoritmo descrizione uomo ⇓ ⇓ programma linguaggio naturale fasi calcolatore programma in un linguaggio di programmazione indipendenti dal linguaggio in cui sono espressi potenza espressiva del linguaggio progettare un algoritmo esprimerlo in un linguaggio di programmazione (programma) far eseguire il programma Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.3 Progettazione Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.4 Computabilità Dato un problema come si progetta un algoritmo che lo risolva ? NON esiste un algoritmo per progettare algoritmi attività intellettuale metodologie e linguaggi prevedere tutti i possibili eventi che potrebbero verificarsi durante l’esecuzione • distruzione del vettore Arianne Ci sono problemi per i quali non esistono algoritmi? halting problem Dato un problema, come possiamo sapere se esiste un algoritmo che lo risolve? Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.6 Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.5 Correttezza Complessità Dato un algoritmo, come possiamo essere sicuri che è corretto? metodi formali metodi empirici inaffidabilità dei programmi Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.7 dato un algoritmo quali sono le risorse necessarie per eseguirlo ? in quanto tempo ? se ci sono più algoritmi per un dato problema, qual’è il “migliore”? esistono problemi per i quali il miglior algoritmo richiede tante risorse da rendere impossibile l’elaborazione? crittografia Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.8 Algoritmo Top Down un insieme di passi/istruzioni che definiscono una sequenza di operazioni mediante le quali si risolve un problema (o una classe di problemi) proprietà approccio metodologico alla progettazione di algoritmi per affinamenti successivi divide et impera fasi finitezza numero dei passi finito ed eseguito un numero finito di volte dato un problema lo si scompone P in sottoproblemi determinatezza ogni sottoproblema è scomposto in ulteriori sottoproblemi istruzioni definite senza ambiguità in modo tale da garantire sempre gli stessi risultati a parità di condizioni P1 P2 P3 così via finché ogni sottoproblema è sufficientemente dettagliato e preciso da poter essere eseguito. realizzabilità P11 P12 istruzioni devono essere conosciute all’esecutore che sa come eseguirle Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.10 Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.9 Algoritmo del tè - I Algoritmo del tè - II algoritmo principale: fai bollire dell’acqua metti il tè nella tazza versa l’acqua affinamento primo sottoproblema fai bollire l’acqua: riempi il bollitore accendi il fuoco attendi che bolla spegni il fuoco si noti: azioni(istruzioni) e oggetti (dati) ambiguità Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.11 Bottom Up Algoritmo del tè - III Se esecutore capace di strofinare si può accendere il fuoco con il seguente algoritmo: strofina due legnetti continua finché il fuoco appare Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.12 approccio opposto al top down dato un certo insieme di algoritmi/istruzioni elementari si cerca di aggregarli in maniera da costruire l’algoritmo per la soluzione del problema o di suoi sottoproblemi combinazione delle due metodologie Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.14 Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.13 Rappresentazione Elementi di un linguaggio linguaggi per rappresentare algoritmi: naturale pseudocodice flow chart linguaggio di programmazione Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.15 sintassi l’insieme della regole relative ai procedimenti tramite i quali le unità sintattiche si combinano in espressioni linguistiche semantica relazione fra le espressioni linguistiche e il mondo cui si riferiscono Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.16 Differenza positiva di due numeri N e M linguaggio naturale Do it yourself se N maggiore M sottrai M da N altrimenti sottrai N da M pseudo codice if N > M then Dato un esecutore capace solamente di disegnare e contare, sviluppare un algoritmo per calcolare la somma di due numeri interi sottrai M da N else sottrai N da M flowchart T N−M linguaggio C N>M F M−N if (N > M) R=N-M; else R=M-N; Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.17 Introduzione agli algoritmi, Paolo Bison, FI06, 2007-01-09 – p.18