Al-jabr w`al muq¯abala processo algoritmo passo tipico

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