Sei sulla pagina 1di 167

DECIDIBILITÀ E INDECIDIBILITÀ

Indecidibilità - Il metodo della diagonalizzazione


(Capitolo IV, sezione 4.2, prima parte)
Sommario

• Il metodo della diagonalizzazione di Cantor


Sommario

• Il metodo della diagonalizzazione di Cantor


• Esistenza di linguaggi non Turing riconoscibili
Il metodo della diagonalizzazione

La dimostrazione dell’esistenza di un linguaggio non Turing


riconoscibile (e di un linguaggio indecidibile) utilizza una
tecnica chiamata diagonalizzazione, scoperta dal matematico
Georg Cantor nel 1873.
Il metodo della diagonalizzazione

La dimostrazione dell’esistenza di un linguaggio non Turing


riconoscibile (e di un linguaggio indecidibile) utilizza una
tecnica chiamata diagonalizzazione, scoperta dal matematico
Georg Cantor nel 1873.
Cantor si pose il problema seguente: se abbiamo due insiemi
infiniti, come possiamo dire se uno è più grande dell’altro o se
hanno la stessa dimensione?
Il metodo della diagonalizzazione

La dimostrazione dell’esistenza di un linguaggio non Turing


riconoscibile (e di un linguaggio indecidibile) utilizza una
tecnica chiamata diagonalizzazione, scoperta dal matematico
Georg Cantor nel 1873.
Cantor si pose il problema seguente: se abbiamo due insiemi
infiniti, come possiamo dire se uno è più grande dell’altro o se
hanno la stessa dimensione?
Per gli insiemi finiti basta contare gli elementi dei due insiemi
ma non possiamo applicare questo metodo del conteggio agli
insiemi infiniti.
Il metodo della diagonalizzazione

La dimostrazione dell’esistenza di un linguaggio non Turing


riconoscibile (e di un linguaggio indecidibile) utilizza una
tecnica chiamata diagonalizzazione, scoperta dal matematico
Georg Cantor nel 1873.
Cantor si pose il problema seguente: se abbiamo due insiemi
infiniti, come possiamo dire se uno è più grande dell’altro o se
hanno la stessa dimensione?
Per gli insiemi finiti basta contare gli elementi dei due insiemi
ma non possiamo applicare questo metodo del conteggio agli
insiemi infiniti.
Per esempio, prendiamo l’insieme degli interi positivi pari e
l’insieme di tutte le stringhe su un alfabeto. Entrambi gli
insiemi sono infiniti ma uno dei due è più grande rispetto
all’altro?
Il metodo della diagonalizzazione

- Cantor propose una soluzione interessante al problema di


confrontare gli insiemi infiniti, in particolare a come stabilire
se, dati due insiemi infiniti, uno sia “più grande” dell’altro.
Il metodo della diagonalizzazione

- Cantor propose una soluzione interessante al problema di


confrontare gli insiemi infiniti, in particolare a come stabilire
se, dati due insiemi infiniti, uno sia “più grande” dell’altro.
- Osservò che due insiemi finiti hanno la stessa cardinalità se gli
elementi dell’uno possono essere messi in corrispondenza uno
a uno con quelli dell’altro. Questo metodo confronta le
dimensioni senza ricorrere al conteggio.
Il metodo della diagonalizzazione

- Cantor propose una soluzione interessante al problema di


confrontare gli insiemi infiniti, in particolare a come stabilire
se, dati due insiemi infiniti, uno sia “più grande” dell’altro.
- Osservò che due insiemi finiti hanno la stessa cardinalità se gli
elementi dell’uno possono essere messi in corrispondenza uno
a uno con quelli dell’altro. Questo metodo confronta le
dimensioni senza ricorrere al conteggio.
- Estese questo concetto agli insiemi infiniti.
Il metodo della diagonalizzazione

- Cantor propose una soluzione interessante al problema di


confrontare gli insiemi infiniti, in particolare a come stabilire
se, dati due insiemi infiniti, uno sia “più grande” dell’altro.
- Osservò che due insiemi finiti hanno la stessa cardinalità se gli
elementi dell’uno possono essere messi in corrispondenza uno
a uno con quelli dell’altro. Questo metodo confronta le
dimensioni senza ricorrere al conteggio.
- Estese questo concetto agli insiemi infiniti.
- Introdusse il metodo della diagonalizzazione per provare che
esistono insiemi infiniti di differente cardinalità.
Il metodo della diagonalizzazione

- Cantor propose una soluzione interessante al problema di


confrontare gli insiemi infiniti, in particolare a come stabilire
se, dati due insiemi infiniti, uno sia “più grande” dell’altro.
- Osservò che due insiemi finiti hanno la stessa cardinalità se gli
elementi dell’uno possono essere messi in corrispondenza uno
a uno con quelli dell’altro. Questo metodo confronta le
dimensioni senza ricorrere al conteggio.
- Estese questo concetto agli insiemi infiniti.
- Introdusse il metodo della diagonalizzazione per provare che
esistono insiemi infiniti di differente cardinalità.
- In particolare mostrò che l’insieme N dei numeri interi positivi
ha cardinalità “inferiore” a quella dell’insieme R dei numeri
reali.
Il metodo della diagonalizzazione

• OBIETTIVI:
Il metodo della diagonalizzazione

• OBIETTIVI:
- Il metodo della diagonalizzazione fu successivamente usato per
dimostrare che esistono linguaggi non Turing riconoscibili.
Il metodo della diagonalizzazione

• OBIETTIVI:
- Il metodo della diagonalizzazione fu successivamente usato per
dimostrare che esistono linguaggi non Turing riconoscibili.
- Il metodo della diagonalizzazione e l’autoreferenzialità sono
usati per dimostrare il teorema seguente
Il metodo della diagonalizzazione

• OBIETTIVI:
- Il metodo della diagonalizzazione fu successivamente usato per
dimostrare che esistono linguaggi non Turing riconoscibili.
- Il metodo della diagonalizzazione e l’autoreferenzialità sono
usati per dimostrare il teorema seguente
Teorema
Il linguaggio

ATM = {hM, w i | M è una macchina di Turing che accetta la parola w }

non è decidibile.
Funzioni

Definizione
Dati due insiemi non vuoti X e Y ,
una funzione f : X → Y da X in Y è una relazione che associa a
ogni elemento x in X uno e un solo y = f (x) in Y .
X è il dominio della funzione,
Y è il codominio della funzione.
Funzioni

Definizione
Una funzione f : X → Y è iniettiva se
∀x, x 0 ∈ X x 6= x 0 ⇒ f (x) 6= f (x 0 )
Funzioni

Definizione
Una funzione f : X → Y è iniettiva se
∀x, x 0 ∈ X x 6= x 0 ⇒ f (x) 6= f (x 0 )

Definizione
Una funzione f : X → Y è suriettiva ⇔ ∀y ∈ Y ∃x ∈ X : y = f (x)
Funzioni

Definizione
Una funzione f : X → Y è iniettiva se
∀x, x 0 ∈ X x 6= x 0 ⇒ f (x) 6= f (x 0 )

Definizione
Una funzione f : X → Y è suriettiva ⇔ ∀y ∈ Y ∃x ∈ X : y = f (x)

Definizione
Una funzione f : X → Y è una funzione biettiva di X su Y (o una
biezione tra X e Y ) se f è iniettiva e suriettiva.
Funzioni

Esempio f : {1, 2, 5} → {2, 4, 7},


dove f (1) = 2, f (2) = 2, f (5) = 4, è una funzione. Non è né
iniettiva né suriettiva.
Funzioni

Esempio f : {1, 2, 5} → {2, 4, 7},


dove f (1) = 2, f (2) = 2, f (5) = 4, è una funzione. Non è né
iniettiva né suriettiva.
Esempio f : {1, 2, 5} → {2, 4, 7, 9},
dove f (1) = 2, f (2) = 4, f (5) = 7, è una funzione iniettiva
ma non suriettiva.
Funzioni

Esempio f : {1, 2, 5} → {2, 4, 7},


dove f (1) = 2, f (2) = 2, f (5) = 4, è una funzione. Non è né
iniettiva né suriettiva.
Esempio f : {1, 2, 5} → {2, 4, 7, 9},
dove f (1) = 2, f (2) = 4, f (5) = 7, è una funzione iniettiva
ma non suriettiva.
Esempio f : {1, 2, 5} → {2, 4},
dove f (1) = 2, f (2) = 4, f (5) = 2, è una funzione suriettiva
ma non iniettiva.
Funzioni

Esempio f : {1, 2, 5} → {2, 4, 7},


dove f (1) = 2, f (2) = 2, f (5) = 4, è una funzione. Non è né
iniettiva né suriettiva.
Esempio f : {1, 2, 5} → {2, 4, 7, 9},
dove f (1) = 2, f (2) = 4, f (5) = 7, è una funzione iniettiva
ma non suriettiva.
Esempio f : {1, 2, 5} → {2, 4},
dove f (1) = 2, f (2) = 4, f (5) = 2, è una funzione suriettiva
ma non iniettiva.
Esempio f : {1, 2, 5} → {2, 4, 7},
dove f (1) = 2, f (2) = 4, f (5) = 7, è una funzione biettiva.
Cardinalità

Definizione
Due insiemi X e Y hanno la stessa cardinalità se esiste una
funzione biettiva f : X → Y di X su Y .
Cardinalità

Definizione
Due insiemi X e Y hanno la stessa cardinalità se esiste una
funzione biettiva f : X → Y di X su Y .

|X | = |Y | ⇔ esiste una funzione biettiva f : X → Y


Cardinalità

Definizione
Due insiemi X e Y hanno la stessa cardinalità se esiste una
funzione biettiva f : X → Y di X su Y .

|X | = |Y | ⇔ esiste una funzione biettiva f : X → Y

Esempio f : {1, 2, 5} → {2, 4, 7},


dove f (1) = 2, f (2) = 4, f (5) = 7, è biettiva
Esempio

Sia N l’insieme dei numeri interi positivi e sia


Np = {2n | n ∈ N} l’insieme dei numeri interi positivi pari.
Esempio

Sia N l’insieme dei numeri interi positivi e sia


Np = {2n | n ∈ N} l’insieme dei numeri interi positivi pari.
Utilizzando la definizione di cardinalità possiamo vedere che N
ed Np hanno la stessa cardinalità.
Esempio

Sia N l’insieme dei numeri interi positivi e sia


Np = {2n | n ∈ N} l’insieme dei numeri interi positivi pari.
Utilizzando la definizione di cardinalità possiamo vedere che N
ed Np hanno la stessa cardinalità.
Infatti,
f : N → {2n | n ∈ N}
dove f (n) = 2n, per ogni n ∈ N, è biettiva.
Esempio

Sia N l’insieme dei numeri interi positivi e sia


Np = {2n | n ∈ N} l’insieme dei numeri interi positivi pari.
Utilizzando la definizione di cardinalità possiamo vedere che N
ed Np hanno la stessa cardinalità.
Infatti,
f : N → {2n | n ∈ N}
dove f (n) = 2n, per ogni n ∈ N, è biettiva.
Possiamo visualizzare f più facilmente attraverso la tabella
seguente.
Esempio
Esempio

Consideriamo l’insieme Q+ = { yx | x, y ∈ N, x > 0, y > 0} dei


numeri razionali positivi.
Esempio

Consideriamo l’insieme Q+ = { yx | x, y ∈ N, x > 0, y > 0} dei


numeri razionali positivi.
Utilizzando la definizione di cardinalità possiamo vedere che N
e Q+ hanno la stessa cardinalità.
Esempio

Consideriamo l’insieme Q+ = { yx | x, y ∈ N, x > 0, y > 0} dei


numeri razionali positivi.
Utilizzando la definizione di cardinalità possiamo vedere che N
e Q+ hanno la stessa cardinalità.
Dobbiamo definire una funzione biettiva tra i due insiemi.
Esempio

Creiamo una matrice infinita contenente tutti i numeri


razionali positivi.
Esempio

Creiamo una matrice infinita contenente tutti i numeri


razionali positivi.
La riga i-esima contiene tutti i numeri con numeratore i e la
colonna j-esima ha tutti i numeri con denominatore j.
i
Quindi il numero j occupa la i-esima riga e la j-esima colonna.
Esempio

Creiamo una matrice infinita contenente tutti i numeri


razionali positivi.
La riga i-esima contiene tutti i numeri con numeratore i e la
colonna j-esima ha tutti i numeri con denominatore j.
i
Quindi il numero j occupa la i-esima riga e la j-esima colonna.
Per definire una biezione tra N e Q+ dobbiamo definire una
corrispondenza biunivoca tra gli elementi della matrice e quelli
di N.
Esempio

Creiamo una matrice infinita contenente tutti i numeri


razionali positivi.
La riga i-esima contiene tutti i numeri con numeratore i e la
colonna j-esima ha tutti i numeri con denominatore j.
i
Quindi il numero j occupa la i-esima riga e la j-esima colonna.
Per definire una biezione tra N e Q+ dobbiamo definire una
corrispondenza biunivoca tra gli elementi della matrice e quelli
di N.
Un modo per farlo è descritto nella figura seguente.
Esempio
Esempio

Lo stesso ragionamento porta a definire una biezione tra


N × N = N2 ed N e quindi a concludere che N2 ed N hanno la
stessa cardinalità.
Esempio

Sia N2 = {(x, y ) | x, y ∈ N, x, y > 0}, la funzione f : N2 → N


definita come segue è biettiva
Esempio

Sia N2 = {(x, y ) | x, y ∈ N, x, y > 0}, la funzione f : N2 → N


definita come segue è biettiva

(x + y )(x + y + 1)
∀(x, y ) ∈ N2 f ((x, y )) = +x
2
1
= ((x + y )2 + 3x + y ) ∈ N
2
Esempio

Sia N2 = {(x, y ) | x, y ∈ N, x, y > 0}, la funzione f : N2 → N


definita come segue è biettiva

(x + y )(x + y + 1)
∀(x, y ) ∈ N2 f ((x, y )) = +x
2
1
= ((x + y )2 + 3x + y ) ∈ N
2

La funzione f è nota come la funzione coppia di Cantor. È


graficamente rappresentata dalla seguente matrice.
Cardinalità

In questa matrice infinita il valore di f sulla coppia


(i, j) ∈ N × N occupa la i-esima riga e la j-esima colonna.
Cioè le entrate della matrice sono i valori della funzione e
f (i, j) si trova all’incrocio tra la riga i e la colonna j.
Cardinalità

In questa matrice infinita il valore di f sulla coppia


(i, j) ∈ N × N occupa la i-esima riga e la j-esima colonna.
Cioè le entrate della matrice sono i valori della funzione e
f (i, j) si trova all’incrocio tra la riga i e la colonna j.

1 2 3 4
1 1 2 4 7 ...
2 3 5 8 ... ...
3 6 9 ... ... ...
· ... ... ... ... ...
i ... ... ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
Numerabilità

Definizione
Un insieme X è numerabile se esiste una funzione biettiva
f : N → X di N su X .
Un insieme X è enumerabile se esiste una funzione biettiva
calcolabile f : N → X di N su X .
Un insieme X è contabile se è finito o numerabile.
Numerabilità

Definizione
Un insieme X è numerabile se esiste una funzione biettiva
f : N → X di N su X .
Un insieme X è enumerabile se esiste una funzione biettiva
calcolabile f : N → X di N su X .
Un insieme X è contabile se è finito o numerabile.

Esempio L’insieme dei numeri pari è numerabile.


Numerabilità

Definizione
Un insieme X è numerabile se esiste una funzione biettiva
f : N → X di N su X .
Un insieme X è enumerabile se esiste una funzione biettiva
calcolabile f : N → X di N su X .
Un insieme X è contabile se è finito o numerabile.

Esempio L’insieme dei numeri pari è numerabile.

Esempio Q+ = { yx | x, y ∈ N, x > 0, y > 0}, N2 sono


numerabili.
R non è numerabile

Teorema
R non è numerabile.
R non è numerabile

Mostriamo che non esiste nessuna funzione biettiva di N


sull’insieme R dei numeri reali.
R non è numerabile

Mostriamo che non esiste nessuna funzione biettiva di N


sull’insieme R dei numeri reali.
La dimostrazione è per contraddizione.
R non è numerabile

Mostriamo che non esiste nessuna funzione biettiva di N


sull’insieme R dei numeri reali.
La dimostrazione è per contraddizione.
Supponiamo quindi che esista una funzione biettiva f di N su
R.
R non è numerabile

Mostriamo che non esiste nessuna funzione biettiva di N


sull’insieme R dei numeri reali.
La dimostrazione è per contraddizione.
Supponiamo quindi che esista una funzione biettiva f di N su
R.
Mostriamo che esiste un numero reale x che non è immagine
di nessun elemento di N.
R non è numerabile

Mostriamo che non esiste nessuna funzione biettiva di N


sull’insieme R dei numeri reali.
La dimostrazione è per contraddizione.
Supponiamo quindi che esista una funzione biettiva f di N su
R.
Mostriamo che esiste un numero reale x che non è immagine
di nessun elemento di N.
Il numero x sarà un numero compreso tra 0 e 1.
R non è numerabile

Mostriamo che non esiste nessuna funzione biettiva di N


sull’insieme R dei numeri reali.
La dimostrazione è per contraddizione.
Supponiamo quindi che esista una funzione biettiva f di N su
R.
Mostriamo che esiste un numero reale x che non è immagine
di nessun elemento di N.
Il numero x sarà un numero compreso tra 0 e 1.
Illustriamo prima l’idea della prova su un esempio.
R non è numerabile
La tabella seguente mostra alcuni valori di un’ipotetica
biezione f tra N e R.
R non è numerabile
La tabella seguente mostra alcuni valori di un’ipotetica
biezione f tra N e R.
R non è numerabile
Scegliamo x in modo che sia diverso dagli elementi della
tabella procedendo “per diagonale”.
R non è numerabile
Scegliamo x in modo che sia diverso dagli elementi della
tabella procedendo “per diagonale”.
R non è numerabile

• Idea della prova (metodo della diagonalizzazione).


R non è numerabile

• Idea della prova (metodo della diagonalizzazione).


- Supponiamo per assurdo che esista una funzione biettiva f di
N su R.
R non è numerabile

• Idea della prova (metodo della diagonalizzazione).


- Supponiamo per assurdo che esista una funzione biettiva f di
N su R.
- Allora possiamo costruire la tabella:
n f (n)
1 d1,1 d1,2 . . . . . . ...
2 d2,1 d2,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...
R non è numerabile

• Idea della prova (metodo della diagonalizzazione).


- Supponiamo per assurdo che esista una funzione biettiva f di
N su R.
- Allora possiamo costruire la tabella:
n f (n)
1 d1,1 d1,2 . . . . . . ...
2 d2,1 d2,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...

dove d1,1 d1,2 . . . è la parte decimale del numero reale f (1),


d2,1 d2,2 . . . è la parte decimale del numero reale f (2) e in
generale di,1 di,2 . . . è la parte decimale del numero reale f (i).
R non è numerabile

n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
R non è numerabile

n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...

quindi f (1) = r1 , d1,1 d1,2 . . ., f (2) = r2 , d2,1 d2,2 . . . e in


generale f (i) = ri , di,1 di,2 . . ..
R non è numerabile
n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
R non è numerabile
n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...

- Le cifre sulla diagonale di questa matrice d1,1 d2,2 . . .


definiscono un numero reale r = 0, d1,1 d2,2 . . ..
R non è numerabile
n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...

- Le cifre sulla diagonale di questa matrice d1,1 d2,2 . . .


definiscono un numero reale r = 0, d1,1 d2,2 . . ..
0 d 0 . . . che si ottiene scegliendo in ogni
- Il numero reale 0, d1,1 2,2
posizione (della parte decimale) una cifra diversa dalla
corrispondente cifra in r non è immagine di nessun intero
0 6= d , non può
positivo (non può essere f (1) perché d1,1 1,1
0
essere f (2) perché d2,2 6= d2,2 ,.....)
R non è numerabile

Nella dimostrazione precedente avremmo potuto anche limitarci a


considerare i numeri reali nell’intervallo ]0, 1[ perché questo insieme
ha cardinalità non superiore a R.
Cardinalità

• |X | ≤ |Y | ⇔ esiste una funzione iniettiva f : X → Y


Cardinalità

• |X | ≤ |Y | ⇔ esiste una funzione iniettiva f : X → Y


• |X | ≤ |Y |, |X | =
6 |Y | ⇒ |X | < |Y |
Cardinalità

• |X | ≤ |Y | ⇔ esiste una funzione iniettiva f : X → Y


• |X | ≤ |Y |, |X | =
6 |Y | ⇒ |X | < |Y |
• |X | ≤ |Y |, |Y | ≤ |X | ⇒ |X | = |Y |
|N| < |R|

• n ∈ N → n ∈ R è una funzione iniettiva di N in R. Quindi


|N| ≤ |R|.
|N| < |R|

• n ∈ N → n ∈ R è una funzione iniettiva di N in R. Quindi


|N| ≤ |R|.
• Non esiste nessuna funzione biettiva di N sull’insieme R dei
numeri reali. Quindi |N| =
6 |R|, N e R non hanno la stessa
cardinalità.
|N| < |R|

• n ∈ N → n ∈ R è una funzione iniettiva di N in R. Quindi


|N| ≤ |R|.
• Non esiste nessuna funzione biettiva di N sull’insieme R dei
numeri reali. Quindi |N| =
6 |R|, N e R non hanno la stessa
cardinalità.
• Quindi da |N| ≤ |R| e |N| =6 |R| deduciamo |N| < |R|.
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

E’ possibile usare il metodo della diagonalizzazione per provare


che esistono linguaggi che non sono Turing riconoscibili.
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

E’ possibile usare il metodo della diagonalizzazione per provare


che esistono linguaggi che non sono Turing riconoscibili.
La prova consiste nel provare le affermazioni seguenti:
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

E’ possibile usare il metodo della diagonalizzazione per provare


che esistono linguaggi che non sono Turing riconoscibili.
La prova consiste nel provare le affermazioni seguenti:
- Dato un alfabeto Σ, l’insieme Σ∗ è numerabile.
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

E’ possibile usare il metodo della diagonalizzazione per provare


che esistono linguaggi che non sono Turing riconoscibili.
La prova consiste nel provare le affermazioni seguenti:
- Dato un alfabeto Σ, l’insieme Σ∗ è numerabile.
- L’insieme delle codifiche delle macchine di Turing, e quindi
l’insieme delle macchine di Turing è numerabile.
Nota: la codifica di una macchina di Turing è una stringa.
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

E’ possibile usare il metodo della diagonalizzazione per provare


che esistono linguaggi che non sono Turing riconoscibili.
La prova consiste nel provare le affermazioni seguenti:
- Dato un alfabeto Σ, l’insieme Σ∗ è numerabile.
- L’insieme delle codifiche delle macchine di Turing, e quindi
l’insieme delle macchine di Turing è numerabile.
Nota: la codifica di una macchina di Turing è una stringa.
- L’insieme dei linguaggi Turing riconoscibili è numerabile.
Nota: a ogni linguaggio Turing riconoscibile è associata (la
codifica di) una macchina di Turing.
Il Metodo della diagonalizzazione per provare che esistono
linguaggi non Turing riconoscibili

E’ possibile usare il metodo della diagonalizzazione per provare


che esistono linguaggi che non sono Turing riconoscibili.
La prova consiste nel provare le affermazioni seguenti:
- Dato un alfabeto Σ, l’insieme Σ∗ è numerabile.
- L’insieme delle codifiche delle macchine di Turing, e quindi
l’insieme delle macchine di Turing è numerabile.
Nota: la codifica di una macchina di Turing è una stringa.
- L’insieme dei linguaggi Turing riconoscibili è numerabile.
Nota: a ogni linguaggio Turing riconoscibile è associata (la
codifica di) una macchina di Turing.
- L’insieme dei linguaggi sull’alfabeto Σ ha cardinalità
maggiore del numerabile.
Enumerazione delle stringhe

Sia Σ = {a1 , a2 , . . . ak } un alfabeto. Possiamo definire una


corrispondenza biunivoca tra N e Σ∗ che permette di enumerare le
stringhe in ordine radix: w1 = , w2 = a1 , w3 = a2 , . . . ,
(vedremo come).

Ad esempio, se Σ = {a, b}, la sequenza è

, a, b, aa, ab, ba, bb, . . . ,

e w2 = a, w6 = ba, w8 =?
Non numerabilità dell’insieme dei linguaggi

Sia Σ∗ = {w1 , w2 , . . .}.


Non numerabilità dell’insieme dei linguaggi

Sia Σ∗ = {w1 , w2 , . . .}.

Sia B l’insieme delle sequenze binarie infinite


cioè delle sequenze infinite di 0 e 1.
Non numerabilità dell’insieme dei linguaggi

Sia Σ∗ = {w1 , w2 , . . .}.

Sia B l’insieme delle sequenze binarie infinite


cioè delle sequenze infinite di 0 e 1.

È possibile associare a ogni linguaggio L una sequenza binaria


infinita sL (la sequenza caratteristica di L) cosı̀ definita:
Non numerabilità dell’insieme dei linguaggi

Sia Σ∗ = {w1 , w2 , . . .}.

Sia B l’insieme delle sequenze binarie infinite


cioè delle sequenze infinite di 0 e 1.

È possibile associare a ogni linguaggio L una sequenza binaria


infinita sL (la sequenza caratteristica di L) cosı̀ definita:

il bit i-esimo di sL è 1 se l’i-esima stringa wi è in L, il bit


i-esimo di sL è 0 se wi 6∈ L.
Esempio

La sequenza binaria del linguaggio delle stringhe binarie che iniziano con 0
Esempio
Esempio
Non numerabilità dell’insieme dei linguaggi

Sia B l’insieme delle sequenze binarie infinite.


È possibile associare a ogni linguaggio L una sequenza binaria
infinita sL , la sequenza caratteristica di L.
Non numerabilità dell’insieme dei linguaggi

Sia B l’insieme delle sequenze binarie infinite.


È possibile associare a ogni linguaggio L una sequenza binaria
infinita sL , la sequenza caratteristica di L.

Questa relazione è una corrispondenza biunivoca tra l’insieme


B delle sequenze binarie infinite e l’insieme P(Σ∗ ) dei
linguaggi su Σ, cioè
Non numerabilità dell’insieme dei linguaggi

Sia B l’insieme delle sequenze binarie infinite.


È possibile associare a ogni linguaggio L una sequenza binaria
infinita sL , la sequenza caratteristica di L.

Questa relazione è una corrispondenza biunivoca tra l’insieme


B delle sequenze binarie infinite e l’insieme P(Σ∗ ) dei
linguaggi su Σ, cioè
• A ogni linguaggio L è associata una sola sequenza binaria
infinita s tale che s = sL
Non numerabilità dell’insieme dei linguaggi

Sia B l’insieme delle sequenze binarie infinite.


È possibile associare a ogni linguaggio L una sequenza binaria
infinita sL , la sequenza caratteristica di L.

Questa relazione è una corrispondenza biunivoca tra l’insieme


B delle sequenze binarie infinite e l’insieme P(Σ∗ ) dei
linguaggi su Σ, cioè
• A ogni linguaggio L è associata una sola sequenza binaria
infinita s tale che s = sL
• A ogni sequenza binaria infinita s è associato un solo
linguaggio L tale che s = sL
Non numerabilità dell’insieme dei linguaggi

Sia B l’insieme delle sequenze binarie infinite.


È possibile associare a ogni linguaggio L una sequenza binaria
infinita sL , la sequenza caratteristica di L.

Questa relazione è una corrispondenza biunivoca tra l’insieme


B delle sequenze binarie infinite e l’insieme P(Σ∗ ) dei
linguaggi su Σ, cioè
• A ogni linguaggio L è associata una sola sequenza binaria
infinita s tale che s = sL
• A ogni sequenza binaria infinita s è associato un solo
linguaggio L tale che s = sL

In altri termini, l’applicazione f : P(Σ∗ ) → B definita da


f (L) = sL è biettiva.
Non numerabilità dell’insieme delle sequenze binarie
L’insieme B non è numerabile.
Non numerabilità dell’insieme delle sequenze binarie
L’insieme B non è numerabile.
• Idea della prova (metodo della diagonalizzazione).
Non numerabilità dell’insieme delle sequenze binarie
L’insieme B non è numerabile.
• Idea della prova (metodo della diagonalizzazione).
- Mostriamo che non esiste nessuna funzione biettiva di N
sull’insieme B delle sequenze binarie infinite. Supponiamo per
assurdo che esista una funzione biettiva f di N su B.
Non numerabilità dell’insieme delle sequenze binarie
L’insieme B non è numerabile.
• Idea della prova (metodo della diagonalizzazione).
- Mostriamo che non esiste nessuna funzione biettiva di N
sull’insieme B delle sequenze binarie infinite. Supponiamo per
assurdo che esista una funzione biettiva f di N su B.
- Allora possiamo costruire la tabella:
n f (n)
1 d1,1 d1,2 . . . . . . ...
2 d2,1 d2,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...
Non numerabilità dell’insieme delle sequenze binarie
L’insieme B non è numerabile.
• Idea della prova (metodo della diagonalizzazione).
- Mostriamo che non esiste nessuna funzione biettiva di N
sull’insieme B delle sequenze binarie infinite. Supponiamo per
assurdo che esista una funzione biettiva f di N su B.
- Allora possiamo costruire la tabella:
n f (n)
1 d1,1 d1,2 . . . . . . ...
2 d2,1 d2,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 . . . . . . ...
· ... ... ... ... ...
· ... ... ... ... ...

dove d1,1 d1,2 . . . è la sequenza binaria infinita associata a f (1),


d2,1 d2,2 . . . è la sequenza binaria infinita associata a f (2) e in
generale di,1 di,2 . . . è la sequenza binaria infinita associata a
f (i).
Non numerabilità dell’insieme delle sequenze binarie
n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
Non numerabilità dell’insieme delle sequenze binarie
n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...

- Le cifre sulla diagonale di questa matrice d1,1 d2,2 . . .


definiscono una sequenza binaria infinita s.
Non numerabilità dell’insieme delle sequenze binarie
n f (n)
1 d1,1 d1,2 ... ... ...
2 d2,1 d2,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...
i di,1 di,2 ... ... ...
· ... ... ... ... ...
· ... ... ... ... ...

- Le cifre sulla diagonale di questa matrice d1,1 d2,2 . . .


definiscono una sequenza binaria infinita s.
- La sequenza binaria infinita d¯1,1 d¯2,2 . . . che si ottiene
scegliendo in ogni posizione il complemento della
corrispondente cifra in s non è immagine di nessun intero
positivo (non può essere f (1) perché d¯1,1 6= d1,1 , non può
essere f (2) perché d¯2,2 6= d2,2 ,.....)
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.


Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.


Dimostrazione
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.


Dimostrazione
Esiste un’applicazione biettiva f di P(Σ∗ ) in B, quindi
|B| = |P(Σ∗ )|.
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.


Dimostrazione
Esiste un’applicazione biettiva f di P(Σ∗ ) in B, quindi
|B| = |P(Σ∗ )|.
Poiché, come abbiamo provato, B non è numerabile,
concludiamo che P(Σ∗ ) non è numerabile.
Esistono linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.
Esistono linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.

La funzione h : Σ∗ → P(Σ∗ ), dove h(w ) = {w }, è iniettiva.


Esistono linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.

La funzione h : Σ∗ → P(Σ∗ ), dove h(w ) = {w }, è iniettiva.


Ne consegue
|N| = |Σ∗ | < |P(Σ∗ )|
Esistono linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.

La funzione h : Σ∗ → P(Σ∗ ), dove h(w ) = {w }, è iniettiva.


Ne consegue
|N| = |Σ∗ | < |P(Σ∗ )|
Proveremo che
|{L ⊆ Σ∗ | L è Turing riconoscibile}| = |Σ∗ |
Esistono linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.

La funzione h : Σ∗ → P(Σ∗ ), dove h(w ) = {w }, è iniettiva.


Ne consegue
|N| = |Σ∗ | < |P(Σ∗ )|
Proveremo che
|{L ⊆ Σ∗ | L è Turing riconoscibile}| = |Σ∗ |
Quindi
|{L ⊆ Σ∗ | L è Turing riconoscibile}| = |N| < |P(Σ∗ )|.
Esistono linguaggi non Turing riconoscibili

Corollario
Esistono linguaggi che non sono Turing riconoscibili.

La funzione h : Σ∗ → P(Σ∗ ), dove h(w ) = {w }, è iniettiva.


Ne consegue
|N| = |Σ∗ | < |P(Σ∗ )|
Proveremo che
|{L ⊆ Σ∗ | L è Turing riconoscibile}| = |Σ∗ |
Quindi
|{L ⊆ Σ∗ | L è Turing riconoscibile}| = |N| < |P(Σ∗ )|.
L’insieme dei linguaggi Turing riconoscibili è numerabile ma
l’insieme di tutti i linguaggi ha cardinalità maggiore del
numerabile. Quindi esistono linguaggi che non sono Turing
riconoscibili.
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.


Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.

(Seconda) Dimostrazione
Supponiamo per assurdo che P(Σ∗ ) sia numerabile.
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.

(Seconda) Dimostrazione
Supponiamo per assurdo che P(Σ∗ ) sia numerabile.
Quindi esiste un’applicazione biettiva h di N in P(Σ∗ ).
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.

(Seconda) Dimostrazione
Supponiamo per assurdo che P(Σ∗ ) sia numerabile.
Quindi esiste un’applicazione biettiva h di N in P(Σ∗ ).
Sia L1 , L2 , . . . la lista dei linguaggi, cioè degli elementi di
P(Σ∗ ), dove L1 = h(1), L2 = h(2) e in generale Li = h(i).
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.

(Seconda) Dimostrazione
Supponiamo per assurdo che P(Σ∗ ) sia numerabile.
Quindi esiste un’applicazione biettiva h di N in P(Σ∗ ).
Sia L1 , L2 , . . . la lista dei linguaggi, cioè degli elementi di
P(Σ∗ ), dove L1 = h(1), L2 = h(2) e in generale Li = h(i).
Σ∗ è enumerabile, sia g una biezione di N in Σ∗ e siano
w1 , w2 , . . . gli elementi di Σ∗ , con wi = g (i).
Non numerabilità dell’insieme dei linguaggi

L’insieme P(Σ∗ ) dei linguaggi su Σ non è numerabile.

(Seconda) Dimostrazione
Supponiamo per assurdo che P(Σ∗ ) sia numerabile.
Quindi esiste un’applicazione biettiva h di N in P(Σ∗ ).
Sia L1 , L2 , . . . la lista dei linguaggi, cioè degli elementi di
P(Σ∗ ), dove L1 = h(1), L2 = h(2) e in generale Li = h(i).
Σ∗ è enumerabile, sia g una biezione di N in Σ∗ e siano
w1 , w2 , . . . gli elementi di Σ∗ , con wi = g (i).
Definiamo una matrice (infinita) avente come indici di riga i
linguaggi L1 , L2 , . . . e indici di colonna le stringhe w1 , w2 , . . ..
Non numerabilità dell’insieme dei linguaggi

w1 w2 ... wj
L1 0 1 ... 0 ...
L2 1 1 ... 1 ...
L3 0 0 ... 1 ...
· ... ... ... ... ...
Li 1 0 ... 0 ...
· ... ... ... ... ...
· ... ... ... ... ...
Non numerabilità dell’insieme dei linguaggi

w1 w2 ... wj
L1 0 1 ... 0 ...
L2 1 1 ... 1 ...
L3 0 0 ... 1 ...
· ... ... ... ... ...
Li 1 0 ... 0 ...
· ... ... ... ... ...
· ... ... ... ... ...

Nella matrice scriviamo 1 all’incrocio tra la riga Li e la


colonna wj se wj ∈ Li , altrimenti scriviamo 0. Quindi la riga
corrispondente ad Li è la sequenza caratteristica di Li .
Non numerabilità dell’insieme dei linguaggi

Definiamo un linguaggio L come segue:

∀i > 0 wi ∈ L ⇔ wi 6∈ Li
Non numerabilità dell’insieme dei linguaggi

Definiamo un linguaggio L come segue:

∀i > 0 wi ∈ L ⇔ wi 6∈ Li

L ∈ P(Σ∗ ) ma per ogni i > 0, L 6= Li .


Non numerabilità dell’insieme dei linguaggi

Definiamo un linguaggio L come segue:

∀i > 0 wi ∈ L ⇔ wi 6∈ Li

L ∈ P(Σ∗ ) ma per ogni i > 0, L 6= Li .


Infatti, sia h tale che L = Lh . La domanda “wh ∈ L?”
conduce a una contraddizione.
Non numerabilità dell’insieme dei linguaggi

Definiamo un linguaggio L come segue:

∀i > 0 wi ∈ L ⇔ wi 6∈ Li

L ∈ P(Σ∗ ) ma per ogni i > 0, L 6= Li .


Infatti, sia h tale che L = Lh . La domanda “wh ∈ L?”
conduce a una contraddizione.
Assumiamo wh ∈ L. Per la definizione di L deve essere
wh 6∈ Lh . Ma per ipotesi L = Lh , assurdo.
Non numerabilità dell’insieme dei linguaggi

Definiamo un linguaggio L come segue:

∀i > 0 wi ∈ L ⇔ wi 6∈ Li

L ∈ P(Σ∗ ) ma per ogni i > 0, L 6= Li .


Infatti, sia h tale che L = Lh . La domanda “wh ∈ L?”
conduce a una contraddizione.
Assumiamo wh ∈ L. Per la definizione di L deve essere
wh 6∈ Lh . Ma per ipotesi L = Lh , assurdo.
Assumiamo wh 6∈ L. Per la definizione di L deve essere
wh ∈ Lh . Ma per ipotesi L = Lh , assurdo.
Numerabilità dell’insieme delle parole

Σ∗ è numerabile
Numerabilità dell’insieme delle parole

Σ∗ è numerabile

Idea della dimostrazione:


Numerabilità dell’insieme delle parole

Σ∗ è numerabile

Idea della dimostrazione:


Provare che |N| ≤ |Σ∗ | e poi che |Σ∗ | ≤ |N × N| = |N|
Numerabilità dell’insieme delle parole

Per provare che |N| ≤ |Σ∗ | bisogna definire una funzione


iniettiva da N in Σ∗ .
Numerabilità dell’insieme delle parole

Per provare che |N| ≤ |Σ∗ | bisogna definire una funzione


iniettiva da N in Σ∗ .
Vediamo prima su un esempio come potremmo definire una
tale funzione.
Numerabilità dell’insieme delle parole

Per provare che |N| ≤ |Σ∗ | bisogna definire una funzione


iniettiva da N in Σ∗ .
Vediamo prima su un esempio come potremmo definire una
tale funzione.
Sia Σ = {a, b}.
Consideriamo l’applicazione f tale che f (n) = an .
Numerabilità dell’insieme delle parole

Per provare che |N| ≤ |Σ∗ | bisogna definire una funzione


iniettiva da N in Σ∗ .
Vediamo prima su un esempio come potremmo definire una
tale funzione.
Sia Σ = {a, b}.
Consideriamo l’applicazione f tale che f (n) = an .
Quindi ad esempio f (1) = a, f (5) = a5 = aaaaa.
Numerabilità dell’insieme delle parole

Per provare che |N| ≤ |Σ∗ | bisogna definire una funzione


iniettiva da N in Σ∗ .
Vediamo prima su un esempio come potremmo definire una
tale funzione.
Sia Σ = {a, b}.
Consideriamo l’applicazione f tale che f (n) = an .
Quindi ad esempio f (1) = a, f (5) = a5 = aaaaa.
L’applicazione f è iniettiva.
Numerabilità dell’insieme delle parole

Per provare che |Σ∗ | ≤ |N × N| = |N| bisogna definire una


funzione iniettiva da Σ∗ in N × N.
Numerabilità dell’insieme delle parole

Per provare che |Σ∗ | ≤ |N × N| = |N| bisogna definire una


funzione iniettiva da Σ∗ in N × N.
Ad ogni parola associamo una coppia di numeri di cui il primo
è la lunghezza della parola aumentata di uno.
Numerabilità dell’insieme delle parole

Per provare che |Σ∗ | ≤ |N × N| = |N| bisogna definire una


funzione iniettiva da Σ∗ in N × N.
Ad ogni parola associamo una coppia di numeri di cui il primo
è la lunghezza della parola aumentata di uno.
Vediamo prima su un esempio come potremmo definire una
tale funzione.
Numerabilità dell’insieme delle parole

Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.


Inoltre poniamo f0 () = 1.
Numerabilità dell’insieme delle parole

Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.


Inoltre poniamo f0 () = 1.
Esempio. Sia Σ = {a, b}.
f1 (a) = 1, f1 (b) = 2.
Numerabilità dell’insieme delle parole

Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.


Inoltre poniamo f0 () = 1.
Esempio. Sia Σ = {a, b}.
f1 (a) = 1, f1 (b) = 2.
f2 (aa) = 1, f2 (ab) = 2, f2 (ba) = 3, f2 (bb) = 4.
Numerabilità dell’insieme delle parole

Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.


Inoltre poniamo f0 () = 1.
Esempio. Sia Σ = {a, b}.
f1 (a) = 1, f1 (b) = 2.
f2 (aa) = 1, f2 (ab) = 2, f2 (ba) = 3, f2 (bb) = 4.
Definiamo una funzione g tale che g (w ) = (|w | + 1, f|w | (w )).
Numerabilità dell’insieme delle parole

Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.


Inoltre poniamo f0 () = 1.
Esempio. Sia Σ = {a, b}.
f1 (a) = 1, f1 (b) = 2.
f2 (aa) = 1, f2 (ab) = 2, f2 (ba) = 3, f2 (bb) = 4.
Definiamo una funzione g tale che g (w ) = (|w | + 1, f|w | (w )).
Ad esempio, g (b) = (2, 2), g (ab) = (3, 2) e g (bb) = (3, 4).
Numerabilità dell’insieme delle parole

Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.


Inoltre poniamo f0 () = 1.
Esempio. Sia Σ = {a, b}.
f1 (a) = 1, f1 (b) = 2.
f2 (aa) = 1, f2 (ab) = 2, f2 (ba) = 3, f2 (bb) = 4.
Definiamo una funzione g tale che g (w ) = (|w | + 1, f|w | (w )).
Ad esempio, g (b) = (2, 2), g (ab) = (3, 2) e g (bb) = (3, 4).
L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è
iniettiva.
Numerabilità dell’insieme delle parole

Σ∗ è numerabile
Numerabilità dell’insieme delle parole

Σ∗ è numerabile

Dimostrazione
Numerabilità dell’insieme delle parole

Σ∗ è numerabile

Dimostrazione
Sia σ ∈ Σ, l’applicazione f : n ∈ N → σ n ∈ Σ∗ è iniettiva,
quindi
|N| ≤ |Σ∗ |
Numerabilità dell’insieme delle parole

Σ∗ è numerabile

Dimostrazione
Sia σ ∈ Σ, l’applicazione f : n ∈ N → σ n ∈ Σ∗ è iniettiva,
quindi
|N| ≤ |Σ∗ |
Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.
Inoltre poniamo f0 () = 1.
Numerabilità dell’insieme delle parole

Σ∗ è numerabile

Dimostrazione
Sia σ ∈ Σ, l’applicazione f : n ∈ N → σ n ∈ Σ∗ è iniettiva,
quindi
|N| ≤ |Σ∗ |
Per ogni n ∈ N sia fn : Σn → N un’applicazione iniettiva.
Inoltre poniamo f0 () = 1.
Definiamo una funzione g tale che g (w ) = (|w | + 1, f|w | (w )).
Numerabilità dell’insieme delle parole

L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è


iniettiva.
Numerabilità dell’insieme delle parole

L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è


iniettiva.
Siano x, y ∈ Σ∗ tali che x 6= y .
Numerabilità dell’insieme delle parole

L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è


iniettiva.
Siano x, y ∈ Σ∗ tali che x 6= y .
Se |x| =
6 |y | allora
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
prima coordinata è diversa.
Numerabilità dell’insieme delle parole

L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è


iniettiva.
Siano x, y ∈ Σ∗ tali che x 6= y .
Se |x| =
6 |y | allora
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
prima coordinata è diversa.
Se |x| = |y | allora f|x| (x) 6= f|y | (y ) e
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
seconda coordinata è diversa.
Numerabilità dell’insieme delle parole

L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è


iniettiva.
Siano x, y ∈ Σ∗ tali che x 6= y .
Se |x| =
6 |y | allora
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
prima coordinata è diversa.
Se |x| = |y | allora f|x| (x) 6= f|y | (y ) e
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
seconda coordinata è diversa.
Ne consegue
|Σ∗ | ≤ |N × N| = |N|
Numerabilità dell’insieme delle parole

L’applicazione g : w ∈ Σ∗ → (|w | + 1, f|w | (w )) ∈ N × N è


iniettiva.
Siano x, y ∈ Σ∗ tali che x 6= y .
Se |x| =
6 |y | allora
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
prima coordinata è diversa.
Se |x| = |y | allora f|x| (x) 6= f|y | (y ) e
g (x) = (|x| + 1, f|x| (x)) 6= (|y | + 1, f|y | (y )) = g (y ) perché la
seconda coordinata è diversa.
Ne consegue
|Σ∗ | ≤ |N × N| = |N|
Quindi
|Σ∗ | = |N|

Numerabilità dell’insieme delle codifiche delle macchine di
Turing
L’insieme {hMi | M è una TM sull’alfabeto Σ} è
numerabile.
Numerabilità dell’insieme delle codifiche delle macchine di
Turing
L’insieme {hMi | M è una TM sull’alfabeto Σ} è
numerabile.
Dimostrazione
È possibile codificare una MT M con una stringa su un
alfabeto Σ e l’applicazione f : hMi → hMi ∈ Σ∗ è iniettiva.
Quindi
|{hMi | M è una TM sull’alfabeto Σ}| ≤ |Σ∗ | = |N|
Numerabilità dell’insieme delle codifiche delle macchine di
Turing
L’insieme {hMi | M è una TM sull’alfabeto Σ} è
numerabile.
Dimostrazione
È possibile codificare una MT M con una stringa su un
alfabeto Σ e l’applicazione f : hMi → hMi ∈ Σ∗ è iniettiva.
Quindi
|{hMi | M è una TM sull’alfabeto Σ}| ≤ |Σ∗ | = |N|
Sia n ∈ N, sia σ ∈ Σ. Il linguaggio {σ n } è decidibile, sia Mn
una macchina di Turing che decide {σ n }.
Numerabilità dell’insieme delle codifiche delle macchine di
Turing
L’insieme {hMi | M è una TM sull’alfabeto Σ} è
numerabile.
Dimostrazione
È possibile codificare una MT M con una stringa su un
alfabeto Σ e l’applicazione f : hMi → hMi ∈ Σ∗ è iniettiva.
Quindi
|{hMi | M è una TM sull’alfabeto Σ}| ≤ |Σ∗ | = |N|
Sia n ∈ N, sia σ ∈ Σ. Il linguaggio {σ n } è decidibile, sia Mn
una macchina di Turing che decide {σ n }.
L’applicazione g : n ∈ N → hMn i è iniettiva. Quindi
|N| ≤ |{hMi | M è una TM sull’alfabeto Σ}
Numerabilità dell’insieme delle codifiche delle macchine di
Turing
L’insieme {hMi | M è una TM sull’alfabeto Σ} è
numerabile.
Dimostrazione
È possibile codificare una MT M con una stringa su un
alfabeto Σ e l’applicazione f : hMi → hMi ∈ Σ∗ è iniettiva.
Quindi
|{hMi | M è una TM sull’alfabeto Σ}| ≤ |Σ∗ | = |N|
Sia n ∈ N, sia σ ∈ Σ. Il linguaggio {σ n } è decidibile, sia Mn
una macchina di Turing che decide {σ n }.
L’applicazione g : n ∈ N → hMn i è iniettiva. Quindi
|N| ≤ |{hMi | M è una TM sull’alfabeto Σ}
Da cui
|{hMi | M è una TM sull’alfabeto Σ} = |N|

Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Dimostrazione
Possiamo associare a ogni linguaggio Turing riconoscibile una
TM che lo riconosce e questa corrispondenza è iniettiva.
Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Dimostrazione
Possiamo associare a ogni linguaggio Turing riconoscibile una
TM che lo riconosce e questa corrispondenza è iniettiva.
Quindi: |{L ⊆ Σ∗ | L è Turing riconoscibile}|
≤ |{hMi | M è una TM sull’alfabeto Σ}| ≤ |N|
Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Dimostrazione
Possiamo associare a ogni linguaggio Turing riconoscibile una
TM che lo riconosce e questa corrispondenza è iniettiva.
Quindi: |{L ⊆ Σ∗ | L è Turing riconoscibile}|
≤ |{hMi | M è una TM sull’alfabeto Σ}| ≤ |N|
Sia n ∈ N e sia σ ∈ Σ. Il linguaggio {σ n } è
Turing-riconoscibile.
Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Dimostrazione
Possiamo associare a ogni linguaggio Turing riconoscibile una
TM che lo riconosce e questa corrispondenza è iniettiva.
Quindi: |{L ⊆ Σ∗ | L è Turing riconoscibile}|
≤ |{hMi | M è una TM sull’alfabeto Σ}| ≤ |N|
Sia n ∈ N e sia σ ∈ Σ. Il linguaggio {σ n } è
Turing-riconoscibile.
L’applicazione g : n ∈ N → {σ n } è iniettiva.
Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Dimostrazione
Possiamo associare a ogni linguaggio Turing riconoscibile una
TM che lo riconosce e questa corrispondenza è iniettiva.
Quindi: |{L ⊆ Σ∗ | L è Turing riconoscibile}|
≤ |{hMi | M è una TM sull’alfabeto Σ}| ≤ |N|
Sia n ∈ N e sia σ ∈ Σ. Il linguaggio {σ n } è
Turing-riconoscibile.
L’applicazione g : n ∈ N → {σ n } è iniettiva.
Quindi |N| ≤ |{L ⊆ Σ∗ | L è Turing riconoscibile}|
Numerabilità dell’insieme dei linguaggi Turing riconoscibili

L’insieme {L ⊆ Σ∗ | L è Turing riconoscibile} è


numerabile.
Dimostrazione
Possiamo associare a ogni linguaggio Turing riconoscibile una
TM che lo riconosce e questa corrispondenza è iniettiva.
Quindi: |{L ⊆ Σ∗ | L è Turing riconoscibile}|
≤ |{hMi | M è una TM sull’alfabeto Σ}| ≤ |N|
Sia n ∈ N e sia σ ∈ Σ. Il linguaggio {σ n } è
Turing-riconoscibile.
L’applicazione g : n ∈ N → {σ n } è iniettiva.
Quindi |N| ≤ |{L ⊆ Σ∗ | L è Turing riconoscibile}|
Da cui: |N| = |{L ⊆ Σ∗ | L è Turing riconoscibile}|.


Potrebbero piacerti anche