Algoritmo descrizione di come si deve eseguire un lavoro o risolvere un problema Algoritmi sequenza di passi/istruzioni Paolo Bison Muh.ammad ibn Mūsā al-Khuwārizmı̄ matematico arabo autore di Fondamenti di Informatica 1 A.A. 2003/04 Al-jabr w’al muqābala Università di Padova 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 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.2/16 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.1/16 Esecuzione Programmazione esecutore uomo/calcolatore problema funzionalità dell’esecutore: capire il significato di ogni passo eseguire l’operazione corrispondente algoritmo programma descrizione uomo linguaggio naturale calcolatore programma in un linguaggio di programmazione indipendenti dal linguaggio in cui sono espressi fasi progettare un algoritmo esprimerlo in un linguaggio di programmazione (programma) far eseguire il programma potenza espressiva del linguaggio Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.3/16 Progettazione Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.4/16 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? Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.6/16 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.5/16 Correttezza Complessità Dato un algoritmo, come possiamo essere sicuri che è corretto? metodi formali metodi empirici inaffidabilità dei programmi 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 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.7/16 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.8/16 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) approccio metodologico alla progettazione di algoritmi per affinamenti successivi proprietà fasi dato un problema si scompone in sottoproblemi finitezza divide et impera numero dei passi finito ed eseguito un numero finito di volte ciascun sottoproblema è a sua volta scomposto in ulteriori sottoproblemi determinatezza istruzioni definite senza ambiguità in modo tale da garantire sempre gli stessi risultati a parità di condizioni realizzabilità istruzioni devono essere conosciute all’esecutore che sa come eseguirle così via finché ogni sottoproblema è sufficientemente dettagliato e preciso da poter essere eseguito. Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.9/16 Algoritmo del tè - I Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.10/16 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à Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.12/16 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.11/16 Bottom Up Algoritmo del tè - III 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 Se esecutore capace di strofinare si può accendere il fuoco con il seguente algoritmo: strofina due legnetti continua finché il fuoco appare combinazione delle due metodologie Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.13/16 Rappresentazione Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.14/16 Do it yourself linguaggi per rappresentare algoritmi: naturale pseudocodice flow chart linguaggio di programmazione Dato un esecutore capace solamente di disegnare e contare, sviluppare un algoritmo per calcolare la somma di due numeri interi Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.15/16 Algoritmi, Paolo Bison, A.A. 2003-04, 2003-09-30 – p.16/16