G. Amodeo,
C. Gaibisso
Programmazione di Calcolatori
Lezione IV
Esistono Problemi non
Risolvibili?
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
1
G. Amodeo,
C. Gaibisso
Problemi e funzioni
Risolvere un problema
Estrarre dalla codifica dell’informazione
esplicita (quella in nostro possesso)
informazione imlicita (quella a cui siamo
interessati)
Calcolare una funzione che associa informazione
esplicita a informazione implicita
Risolvere un problema è
sinonimo di calcolare una
funzione
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
2
G. Amodeo,
C. Gaibisso
Problemi risolvibili e funzioni calcolabili
• Problemi risolvibili:
un problema è risolvibile se esiste un
algoritmo che lo risolve
• Funzioni calcolabili:
una funzione è calcolabile se esiste
un algoritmo che la calcola
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
3
G. Amodeo,
C. Gaibisso
Esempio
• Problema:
Qual è il massimo tra due numeri interi?
• Funzione:
Start
f : N x N→N
N1, N2
N1
si
N1 > N2
no
N2
Stop
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
4
G. Amodeo,
C. Gaibisso
Esempio
Informazione
Esplicita
0, 0
Informazione
Implicita
0
1, 0
0, 1
….
158, 641
1
1
….
641
….
2.856, 567
….
….
2.856
….
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
5
G. Amodeo,
C. Gaibisso
Idea
• “Contiamo” gli algoritmi
• “Contiamo” le funzioni
• Se le funzioni dovessero essere in
“numero maggiore” degli algoritmi
allora ne dedurremmo che non
tutte le funzioni sono calcolabili
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
6
G. Amodeo,
C. Gaibisso
Insiemi numerabili
• Insieme numerabile:
 un insieme A è numerabile se e solo se esiste
f : A→B  N biettiva
o, in altre parole,
 se e solo se A  B  N
• Insieme dei numeri pari Npari è numerabile:
per provare questa affermazione è sufficiente
provare che la funzione f: Npari →N definita da
f(n) = n/2 è biettiva
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
7
G. Amodeo,
C. Gaibisso
Insiemi numerabili
• Se un insieme I è numerabile allora
esiste una enumerazione per I
N
Elementi di I
0
i0
1
2
i1
i2
….
….
….
n
….
in
…
….
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
8
G. Amodeo,
C. Gaibisso
Quanti sono gli algoritmi
Nozione intuitiva di algoritmo
• è una sequenza finita di istruzioni
• ogni istruzione è costruita a partire da un
alfabeto di dimensione finita
• ogni istruzione nella sequenza è codificata
con una quantità finita di informazione
• deve esistere un agente di calcolo C capace
di eseguire le istruzioni dell’algoritmo
• C deve avere capacità di memorizzazione
• …..
Programmazione di Calcolatori: Cosa vuol dire scrivere un programma
9
G. Amodeo,
C. Gaibisso
Quanti sono gli algoritmi?
• L’insieme A degli algoritmi è numerabile
1. definisco un’ordinamento tra i caratteri
dell’alfabeto (in modo analogo a quanto
avviene per i caratteri dell’alfabeto della
lingua italiana)
2. enumero gli algoritmi in ordine di lunghezza
crescente
3. enumero gli algoritmi di eguale lunghezza in
ordine lessicografico
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
10
G. Amodeo,
C. Gaibisso
Esempio
• Alfabeto  {a, b, c}
N
Elementi di A
0
a
1
b
2
c
3
aa
4
ab
5
ac
6
ba
7
bb
…
….
39
aaaa
…
…
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
11
G. Amodeo,
C. Gaibisso
Quante sono le funzioni?
• L’insieme delle funzioni
F  { f | f : N → {0,1}}
non è numerabile
• F  B, l’insieme delle stringhe binarie di
lunghezza infinita
funzione
f(0) = 1
f(1)=0
stringa
1
0
f(2)=1 f(3)=1
1
1
…
f(n)=0
…
…
0
…
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
12
G. Amodeo,
C. Gaibisso
Quante sono le funzioni?
• L’insieme B delle stringhe binarie di
lunghezza inifinita non è numerabile
• se così non fosse potrei
enumerare l’insieme di tali
stringhe.
dimostreremo che esisterà
almeno una stringa mancante da
qualsiasi enumerazione
considereremo
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
13
G. Amodeo,
C. Gaibisso
Quante sono le funzioni
1. Consideriamo una
generica enumerazione
2. Consideriamone la
diagonale
3. Complementiamo tale
diagonale, otteniamo una
stringa binaria di
lunghezza infinita
4. In quanto tale, dovrebbe
comparire nella
enumerazione
N
Elementi di I
0
0
0 0 0 1 1 …
1
0
0 0 1 1 1 …
2
1
1 0 0 1 0 …
3
1
1 1 0 0 1 …
4
0
0 0 0 1 0 …
5
1
1 1 1 1 1 …
6
0
0 1 0 1 0 …
7
1
1 0 1 0 0 …
8
0
1 0 1 0 1 …
9
1
1 0 1 0 1 …
…
..
.. .. .. .. ..
1
1
1
1
0
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
0
…
14
G. Amodeo,
C. Gaibisso
Quante sono le funzioni
5. Supponiamo compaia
nelle generica posizione i
(la III nel nostro esempio)
N
Elementi di I
0
0
0 0 0 1 1 …
1
0
0 0 1 1 1 …
6. Per costruzione, se la iesima cifra della diagonale
complementata è 1(risp.,
0) il bit all’intersezione
della i-esima colonna e
della i-esima riga nella
enumerazione è 0 (risp.,
1) da cui l’assurdo
2
1
1 0 0 1 0 …
3
1
1 1 0 0 1 …
4
0
0 0 0 1 0 …
5
1
1 1 1 1 1 …
6
0
0 1 0 1 0 …
7
1
1 0 1 0 0 …
8
0
1 0 1 0 1 …
7. Ne concludiamo che non
esistono enumerazioni
per B
9
1
1 0 1 0 1 …
…
..
.. .. .. .. ..
1
1
1
1
0
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
0
…
15
G. Amodeo,
C. Gaibisso
Concludendo
• Quando provo a mettere in
corrispondenza biunivoca funzioni ed
algoritmi, esiste sempre almeno una
funzione (quella identificata dalla
diagonale complementata) alla quale
non posso associare un algoritmo
• Ne concludo che esistono funzioni non
calcolabili e quindi problemi non
risolvibili
Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
16
Scarica

1 … f(n)=0