Se un qualunque problema può essere ben definito, allora con

Se un qualunque problema può essere ben definito, allora con
“sufficiente sforzo” può essere determinata una sua soluzione,
o per lo meno si può dimostrare che non esiste soluzione
David Hilbert (1862-1943):
definire un sistema matematico formale in cui ogni problema
potesse essere formulato in termini di proposizioni vere o false
nel 1930 molti ricercatori mostrarono che
il problema di Hilbert è non calcolabile
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
1
Nel 1931 Kurt Gödel dimostrò il teorema di incompletezza:
non esiste nessun algoritmo il cui input è una proposizione
sugli interi e il cui output ci dice se la proposizione è
vera oppure falsa
Church
Kleene
Post
Turing
…
problemi che non hanno
soluzione algoritmica
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
2
problemi
calcolabili
Universo dei problemi
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
3
- lo studio della calcolabilità ci porta a stabilire quali
problemi
ammettono soluzione algoritmica e quali no
- tra quelli che ammettono soluzione, è di interesse sapere quante
“risorse” di calcolo richiede la loro esecuzione
memoria e tempo
- solo quegli algoritmi la cui esecuzione richiede una quantità di risorse
“ragionevole” sono realmente utili
teoria della complessità
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
4
problemi
calcolabili
problemi
trattabili
Universo dei problemi
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
5
Pr1: determinare il maggiore di n numeri interi
1
2
3
4
…
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
n
6
Pr1: determinare il maggiore di n numeri interi
…
1
2
3
4
P1. trovare il maggiore fra i primi 2 numeri;
n
P2. trovare il maggiore fra
il terzo numero e il risultato del sottoproblema precedente;
P3. trovare il maggiore fra
il quarto numero e il risultato del sottoproblema precedente;
P4. trovare il maggiore fra
il quinto numero e il risultato del sottoproblema precedente;
…
Pn-1. trovare il maggiore fra
l'ultimo numero e il risultato del sottoproblema precedente.
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
7
1. I passi sono eseguiti uno alla volta
2. Ogni passo è eseguito esattamente una volta:
nessuno è ripetuto nessuno è omesso
3. L'ordine in cui i passi sono eseguiti è esattamente quello
in cui sono scritti
4. La terminazione dell'ultimo passo implica
la terminazione dell'algoritmo
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
8
SEQUENZA
1. I passi sono eseguiti uno alla volta
2. Ogni passo è eseguito esattamente una volta:
nessuno è ripetuto nessuno è omesso
3. L'ordine in cui i passi sono eseguiti è esattamente quello
in cui sono scritti
4. La terminazione dell'ultimo passo implica
la terminazione dell'algoritmo
Poco flessibile!
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
9
Pr1: determinare il maggiore di n numeri interi
…
1
2
3
4
P1. trovare il maggiore fra i primi 2 numeri;
n
P2. trovare il maggiore fra
il terzo numero e il risultato del sottoproblema precedente;
P3. trovare il maggiore fra
il quarto numero e il risultato del sottoproblema precedente;
P4. trovare il maggiore fra
il quinto numero e il risultato del sottoproblema precedente;
Pi. … i+1-esimo e il risultato del sottoproblema precedente;
…
Pn-1. trovare il maggiore fra
l'ultimo numero e il risultato del sottoproblema precedente.
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
10
P1. trovare il maggiore fra i primi 2 numeri;
P 3. trovare il maggiore fra
il nuovo numero da esaminare e
il più grande trovato in precedenza.
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
11
P1. trovare il maggiore fra i primi 2 numeri;
P2. finchè ci sono numeri da verificare
ripetere il passo P3;
P 3. trovare il maggiore fra
il nuovo numero da esaminare e
il più grande trovato in precedenza.
ITERAZIONE
. poter ripetere certi passi in un algoritmo
un numero arbitrario di volte
. per esprimere algoritmi la cui lunghezza varia
in accordo alle “circostanze”
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
12
P1. trovare il maggiore fra i primi 2 numeri;
P2. finchè ci sonoCONDIZIONE
numeri da verificare
ripetere
il passo P3;
AZIONE
P 3. trovare il maggiore fra
il nuovo numero da esaminare e
il più grande trovato in precedenza.
ITERAZIONE
. poter ripetere certi passi in un algoritmo
un numero arbitrario di volte
. per esprimere algoritmi la cui lunghezza varia
in accordo alle “circostanze”
definita
indefinita
descrivere un processo di durata indeterminata mediante
un algoritmo di lunghezza finita
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
13
Pr2: determinare il maggiore fra due numeri interi x e y
P1. determinare la differenza δ fra x e y
P2. se δ >0
allora la soluzione è x
altrimenti la soluzione è y.
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
14
Pr2: determinare il maggiore fra due numeri interi x e y
P1. determinare la differenza δ fra x e y
P2. se δcondizione
>0
allora la soluzione
azione1 è x
altrimenti la soluzione
azione2 è y.
SELEZIONE
. poter selezionare tra diversi cammini in un algoritmo
a seconda delle “circostanze”
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
15
problema
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
analisi
soluzione
informale
formalizzazione
algoritmo
programmazione
programma (alto livello)
esecutore del
linguaggio alto livello
soluzione
esecutore del
linguaggio macchina
esecuzione
(HW)
traduzione
programma
(linguaggio
macchina)
16
a Methodology for Algorihmic Problem
Solving (MAPS)
Passo 1. Analizzare il problema e sviluppare le specifiche
Passo 2. Progettare una soluzione
- decomposizione (progettazione top-down)
- astrazioni
Passo 3. codifica e documentazione
Passo 4. testing (in parallelo a passo 3)
Passo 5. validazione
Fondamenti di informatica 1 A.A. 2005/’06
Prof. V. de Nitto Personè
17