Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A.A. 2020/2021
Note
• Alcuni esercizi possono avere più di una soluzione;
• La notazione utilizzata può non sempre corrispondere con quella del docente; si
consiglia in ogni caso di usare la notazione presentata a lezione;
• Gli esercizi relativi ad esami passati sono identificati dalla sigla “FI" seguita da
una data, e.g. “FI - 20/06/2019".
1
Indice
Computabilità 5
Esercizio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Esercizio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Esercizio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Esercizio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Esercizio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Esercizio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Esercizio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Esercizio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Esercizio 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Esercizio 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Esercizio 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Esercizio 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Esercizio 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Esercizio 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Esercizio 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Esercizio 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Esercizio 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Esercizio 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Esercizio 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Esercizio 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Esercizio 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Esercizio 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Appendice - Insiemi di indici . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Macchine di Turing 24
Esercizio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Esercizio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Esercizio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Esercizio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Esercizio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Esercizio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Dimostrazioni 28
2
Esercizio 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Esercizio 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Esercizio 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Esercizio 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Esercizio 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Esercizio 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Esercizio 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Esercizio 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Esercizio 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Esercizio 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Esercizio 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Esercizio 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Esercizio 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Esercizio 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Grammatiche e Automi 32
Esercizio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Esercizio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Esercizio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Esercizio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Esercizio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Esercizio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Esercizio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Esercizio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Esercizio 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Esercizio 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Esercizio 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Esercizio 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Esercizio 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Esercizio 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Esercizio 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Esercizio 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Esercizio 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Esercizio 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Esercizio 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Esercizio 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Esercizio 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Appendice - Gerarchia di Chomsky . . . . . . . . . . . . . . . . . . . . . . . . 45
Appendice - Pumping lemma per linguaggi regolari . . . . . . . . . . . . . . . 46
Il linguaggio While 47
Esercizio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Esercizio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Esercizio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3
Esercizio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Esercizio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Esercizio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Esercizio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Esercizio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Esercizio 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Esercizio 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Esercizio 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Esercizio 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Esercizio 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Esercizio 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Esercizio 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Esercizio 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Esercizio 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Appendice - Macro disponibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4
COMPUTABILITÀ
Esercizio 1
FI - 20/06/2019
Esercizio 2
FI - 23/07/2019, 21/02/2022
Studiare l’insieme:
I “ ti | Dx; y tali che 'i pxq ‰ 'i pyqu
Soluzione
L’insieme I non è decidibile. Per dimostrare ciò, invochiamo il teorema di Rice. L’in-
sieme I rappresenta la famiglia F di funzioni unarie calcolabili che non sono costanti,
cioè esistono almeno due punti x e y dove il valore di 'i differisce. Questa famiglia di
funzioni:
• non corrisponde all’insieme vuoto perché esistono funzioni unarie calcolabili che
non sono costanti, per esempio la funzione g : N Ñ N; g pxq “ x ` 1. Quindi
F ‰ H;
5
• non corrisponde all’insieme di tutte le funzioni calcolabili unarie C1 , perché esisto-
no funzioni unarie calcolabili costanti, per esempio la funzione h : N Ñ N; hpxq “
0. Quindi F ‰ C1 .
Quindi per il teorema di Rice I non è decidibile.
Dimostriamo ora la semidecidibilità di I descrivendo un algoritmo che accetti tutti e
soli gli elementi di I :
1. Leggi i;
2. Estrai il codice della MdT Mi che calcola 'i ;
3. Imposta un contatore c1 “ 0 tale che c1 “ x1 pc1 q; 2 pc1 qy e un contatore c2 “ 0
tale che c2 “ x1 pc2 q; 2 pc2 qy
4. Ottieni x “ 1 pc1 q e n “ 2 pc1 q;
5. Esegui Mi pxq per n passi;
6. Se Mi è in una configurazione finale salva il suo output in una variabile m1 ;
7. Altrimenti incrementa c1 di una unità e vai al passaggio 4;
8. Ottieni y “ 1 pc2 q e n “ 2 pc2 q;
9. Esegui Mi py q per n passi;
10. Se Mi è in una configurazione finale il suo output è diverso da m1 ritorna SÍ e
arresta;
11. Altrimenti incrementa c2 di una unità e vai al passaggio 8;
Per la tesi di Church-Turing tale algoritmo descrive una funzione calcolabile che accetta
l’insieme I , dunque I è semidecidibile.
Esercizio 3
FI - 13/09/2019
6
codpf q ‰ H, fissiamo un elemento a P codpf q. Consideriamo poi i numeri naturali n
come una codifica di coppie di numeri naturali tramite una funzione totale calcolabile
x¨; ¨y : N2 Ñ N in modo che:
n “ x1 pnq; 2 pnqy
per opportune funzioni 1 ; 2 : N Ñ N.
Per ipotesi abbiamo che f è calcolabile, quindi esiste una MdT Mf che la calcola. Allora
possiamo definire una funzione g totale calcolabile in questo modo:
Esercizio 4
FI - 27/09/2019
7
è calcolabile.
Soluzione
La funzione f è calcolabile. Per convincersi di ciò, basta considerare che, a seconda del
meteo di domani, si ha che f “ c1 o f “ c0 , ossia f corrisponde alla funzione costante 1
o alla funzione costante 0. Sia c1 che c2 sono funzioni trivialmente calcolabili. Quindi la
MdT che computa f è un elemento di un insieme composto da due elementi: una MdT
M1 che restituisce 1 per ogni input e una MdT M0 che restituisce 0 per ogni input,
tuttavia non è noto quale delle due MdT sia quella che computi f .
Esercizio 5
FI - 07/02/2020
Studiare l’insieme:
I “ tx | Dy tali che 'x pyq “ 5u
Soluzione
L’insieme I non è decidibile. Per dimostrare ciò, invochiamo il teorema di Rice. L’in-
sieme I rappresenta la famiglia F di funzioni unarie calcolabili tali che 5 P Impf q.
Questa famiglia di funzioni:
• non corrisponde all’insieme vuoto perché esistono funzioni unarie calcolabili tali
che 5 fa parte del loro codominio, per esempio la funzione g : N Ñ N; g pxq “ 5x
per x “ 1. Quindi F ‰ H;
• non corrisponde all’insieme di tutte le funzioni calcolabili unarie C1 , perché esi-
stono funzioni unarie calcolabili tali che 5 non fa parte del loro codominio, per
esempio la funzione h : N Ñ N; hpxq “ x ` 6. Quindi F ‰ C1 .
Quindi per il teorema di Rice I non è decidibile.
Dimostriamo ora la semidecidibilità di I descrivendo un algoritmo che accetti tutti e
soli gli elementi di I :
1. Leggi x;
2. Estrai il codice della Mdt Mx che calcola 'x ;
3. Imposta un contatore c “ 0 tale che c “ x1 pcq; 2 pcqy
4. Ottieni y “ 1 pcq e n “ 2 pcq;
5. Esegui Mx py q per n passi;
6. Se Mx è in una configurazione finale con output 5 ritorna SÍ e arresta;
7. Altrimenti incrementa c di una unità e vai al passaggio 4.
8
Per la tesi di Church-Turing tale algoritmo descrive una funzione calcolabile che accetta
l’insieme I , dunque I è semidecidibile.
Esercizio 6
FI - 05/03/2020
Studiare l’insieme:
I “ tpx; yq | 'x pyq Òu
Soluzione
L’insieme I non è semidecidibile. Per prima cosa, notiamo che il suo complemento, I “
tpx; y q | 'x py q Óu è un insieme semidecidibile, corrispondente al problema dell’arresto.
In ogni caso, possiamo dimostrare la semidecidibilità di I tramite il seguente algoritmo:
1. Leggi x e y;
2. Estrai la MdT Mx che calcola la funzione 'x
3. Esegui Mx pyq;
4. Se e quando Mx termina, ritorna SÍ e arresta;
Per la tesi di Church-Turing il precedente algoritmo descrive una funzione calcolabile
che accetta tutti e soli gli elementi di I.
Per il teorema di Post, sappiamo che un insieme A è decidibile se e solo se sia A che
A sono semidecidibili. Ne consegue che siccome I è semidecidibile, se anche il suo
complemento I fosse semidecidibile allora I sarebbe decidibile, che è assurdo. Quindi
concludiamo che I non è semidecidibile.
Esercizio 7
FI - 18/06/2020
Studiare l’insieme:
I “ tpx; yq | 'x pyq “ nNomeCognome u
dove il naturale nNomeCognome corrisponde alla codifica (nella biezione tra naturali e
stringhe su un dato alfabeto) del nome e cognome del candidato all’esame.
Soluzione
N.B. per le finalità dell’esame il passaggio svolto nel seguente paragrafo si può
anche saltare. Si può applicare il Th. di Rice anche direttamente.
L’insieme I non è un insieme di indici, essendo infatti un insieme di tuple px; y q.
Tuttavia si può facilmente costruire un insieme di indici
I 1 “ ti | @z P N 'i pz q “ nNomeCognome u
9
con i “ tpx; y q. In questo modo ogni tupla px; y q determina mediante una opportuna
funzione totale calcolabile l’indice i di una MdT che per ogni input svuota il proprio
nastro, scrive y e simula la x-esima MdT Mx su y . Segue dunque che i “ tpx; y q P
I 1 ðñ px; yq P I e che qualsiasi funzione che decida uno dei due insiemi può decidere
anche l’altro.
Possiamo ora applicare il teorema di Rice all’insieme I 1 , il quale rappresenta la famiglia
F di funzioni unarie calcolabili tali che per ogni input il proprio output è nNomeCognome .
Questa famiglia di funzioni:
• non corrisponde all’insieme vuoto perché esistono funzioni unarie calcolabili tali
che per ogni input il proprio output è nNomeCognome , per esempio la funzione
costante g : N Ñ N; g pxq “ nNomeCognome . Quindi F ‰ H;
• non corrisponde all’insieme di tutte le funzioni calcolabili unarie C1 , perché esi-
stono funzioni unarie calcolabili tali che nNomeCognome non fa parte del proprio co-
dominio o che comunque hanno altri elementi nel proprio codominio, per esempio
la funzione h : N Ñ N; hpxq “ nNomeCognome ` x. Quindi F ‰ C1 .
Quindi per il teorema di Rice I 1 non è decidibile e di conseguenza nemmeno I lo è.
Dimostriamo ora la semidecidibilità di I descrivendo un algoritmo che accetti tutti e
soli gli elementi di I :
1. Leggi x e y ;
2. Estrai il codice della Mdt Mx che calcola 'x ;
3. Esegui Mx py q;
4. Se Mx termina e il suo output è nNomeCognome ritorna SÍ e arresta;
5. Altrimenti while true do skip;
Per la tesi di Church-Turing tale algoritmo descrive una funzione calcolabile che accetta
l’insieme I , dunque I è semidecidibile.
Esercizio 8
FI - 01/07/2020, 20/07/2020, 07/09/2020
Dire se la funzione
se 'x p0q Ó
#
1
f pxq “
0 se 'x p0q Ò
è calcolabile.
Soluzione
La funzione f risulta essere la funzione caratteristica dell’insieme A “ tx | 'x p0q Óu, o
in altre parole, è una funzione che decide A.
10
Tuttavia, per il teorema di Rice, si ha che l’insieme A non è decidibile. La famiglia di
funzioni F delle funzioni unarie definite nel punto 0:
• non corrisponde all’insieme vuoto perché esistono funzioni unarie calcolabili de-
finite su 0, per esempio la funzione identità g : N Ñ N; g pxq “ x. Quindi
F ‰ H;
• non corrisponde all’insieme di tutte le funzioni calcolabili unarie C1 , perché esi-
stono funzioni unarie calcolabili non definite su 0, per esempio la funzione h :
N Ñ N; hpxq “ xx . Quindi F ‰ C1 .
Quindi per il teorema di Rice A non è decidibile, e di conseguenza f non è calcolabile.
Esercizio 9
FI - 28/09/2020
Studiare l’insieme:
A “ tx P N | 'x pxq “ x2 u
ovvero, dire se A e complemento di A sono ricorsivi/ricorsivamente enumerabili.
Soluzione
In questo caso non si può utilizzare il teorema di Rice, perché A non è un insieme di
indici. Per dimostrarne quindi la sua indecidibilità, proviamo a ridurre l’ insieme non
decidibile K “ tx | 'x pxq Óu all’insieme A in modo che x P K ðñ tpxq P A per una
qualche funzione totale calcolabile t.
Definiamo una funzione parziale calcolabile f : N2 Ñ N:
y2 se 'x pxq Ó
#
f px; yq “
Ò se 'x pxq Ò
Inoltre per ogni x si può definire una funzione gx : N Ñ N calcolabile tale che:
y2 se 'x pxq Ó
#
gx pyq “
Ò se 'x pxq Ò
11
xPK ðñ 'x pxq Ó ðñ @y 'tpxq pyq “ y2 ùñ tpxq P A
Esercizio 10
FI - 09/02/2021
12
Tuttavia, avendo fissato n a un certo numero naturale, si può dimostrare la decidibilità
di I mediante il seguente algoritmo:
1. Leggi x;
2. Estrai il codice della MdT Mx che calcola 'x ;
3. Esegui Mx pxq per n passi;
4. Se Mx al passo n si trova in una configurazione finale, ritorna SÍ e arresta;
5. Altrimenti, ritorna NO e arresta.
Per la tesi di Church-Turing, tale algoritmo descrive una funzione calcolabile, quindi
l’insieme I è ricorsivo, e di conseguenza è anche ricorsivamente enumerabile (Vedi Th
3.5.1, pp. 49-50).
Esercizio 11
FI - 26/02/2021
Studiare l’insieme:
I “ tx P N | 'x pxq “ 10u
ovvero, dire se I è ricorsivo, ricorsivamente enumerabile o non ricorsivamente enume-
rabile.
Soluzione
In questo caso non si può utilizzare il teorema di Rice, perché I non è un insieme di
indici. Per dimostrarne quindi la sua semidecidibilità, proviamo a ridurre l’insieme non
decidibile K “ tx | 'x pxq Óu all’insieme I , in modo che x P K ðñ tpxq P I per una
qualche funzione totale calcolabile t.
Definiamo una funzione parziale calcolabile f : N2 Ñ N:
10 se 'x pxq Ó
#
f px; yq “
Ò se 'x pxq Ò
Inoltre per ogni x si può definire una funzione gx : N Ñ N calcolabile tale che:
se 'x pxq Ó
#
10
gx pyq “
Ò se 'x pxq Ò
13
A questo punto possiamo osservare che per ogni x:
Esercizio 12
TOC
Dimostrare con il metodo diagonale che l’insieme I “ tn P N | 'n pnq Óu non è decidibile.
Soluzione
Supponiamo per assurdo che I sia decidibile. Allora possiamo definire una funzione
f : N Ñ N tale che, per ogni n P N :
se 'n pnq Ó
#
Ò
f pnq –
0 se 'n pnq Ò
14
Esercizio 13
TOC
n P Imp'n q
#
Ò se
f pnq –
n se n R Imp'n q
Naturalmente, se assumiamo I decidibile, questa funzione è calcolabile, e dunque esi-
ste un indice m tale che f – 'm e quindi Impf q “ Imp'm q. Ma allora si ha la
contraddizione
Esercizio 14
TOC, Concorso di ammissione al PhD in Matematica, Università di Torino
Si consideri la funzione
a) Dire se f è calcolabile
b) Dire se esiste una estensione di f totale calcolabile
Soluzione
a) La funzione f è calcolabile. Per dimostrare ciò, invochiamo la tesi di Church-
Turing stabilendo il seguente algoritmo per calcolare f :
1) Leggi n;
2) Recupera il codice dell’ n-esima Macchina di Turing Mn , la quale calcola 'n ;
3) Calcola 'n pnq eseguendo Mn pnq;
4) Ritorna 'n pnq ` 1 e arresta.
Si noti che, se n non fa parte del dominio di 'n , la MdT che esegue il precedente
algoritmo diverge al passo 3 come stabilito da f pnq nel caso che 'n pnq Ò.
15
b) Per rendere f 1 una estensione totale di f dobbiamo definirla in modo che resti-
tuisca un valore anche nel caso che 'n pnq Ò
Tuttavia qualsiasi valore venga usato, non esiste una estensione totale calcolabile
di f . Assumiamo per assurdo che f 1 sia calcolabile ed esista un indice m tale che
f 1 “ 'm . Allora si ha la contraddizione:
'm pmq “ f 1 pmq “ 'm pmq ` 1
Quindi f 1 non è calcolabile come non lo è qualsiasi altra estensione totale di f .
Esercizio 15
TOC, Università di Leeds - 01/1998
1 se 'x è totale
#
gpxq “
0 altrimenti
è calcolabile.
Ma allora è possibile stabilire un algoritmo che calcoli f :
1) Leggi x;
2) Calcola g pxq;
16
3) Se g pxq “ 1, allora ritorna 'x pxq ` 1 e arresta;
4) Se g pxq “ 0, allora ritorna 0 e arresta.
e dunque f è calcolabile, che è assurdo. Quindi T ot non può essere decidibile.
Esercizio 16
FI - 22/06/2021
Studiare l’insieme:
I “ tx | Dy such that 'x pyq “ xu
ovvero, dire se I è ricorsivo, ricorsivamente enumerabile o non ricorsivamente enume-
rabile.
Soluzione
In questo caso non si può utilizzare il teorema di Rice, perché I non è un insieme di
indici. Per dimostrarne quindi la sua indecidibilità, proviamo a ridurre l’ insieme non
decidibile K “ tx | 'x pxq Óu all’insieme I in modo che x P K ðñ tpxq P I per una
qualche funzione totale calcolabile t.
Definiamo una funzione parziale calcolabile f : N2 Ñ N:
y se 'x pxq Ó
#
f px; yq “
Ò se 'x pxq Ò
Inoltre per ogni x si può definire una funzione gx : N Ñ N calcolabile tale che:
y se 'x pxq Ó
#
gx pyq “
Ò se 'x pxq Ò
xPK ðñ 'x pxq Ó ðñ @y 'tpxq pyq “ y ùñ 'tpxq ptpxqq “ tpxq ùñ tpxq P Imptpxqq ðñ tpxq P I
Quindi un algoritmo che decide I ne produce uno che decide anche K : per ogni x, si
calcola tpxq e si verifica se appartiene ad I ; in caso affermativo x P K . Quindi I non è
decidibile, altrimenti anche K lo sarebbe a sua volta.
17
Dimostriamo ora la semidecidibilità di I descrivendo un algoritmo che accetti tutti e
soli gli elementi di I :
1. Leggi x;
2. Estrai il codice della Mdt Mx che calcola 'x ;
3. Imposta un contatore c “ 0 tale che c “ x1 pcq; 2 pcqy
4. Ottieni y “ 1 pcq e n “ 2 pcq;
5. Esegui Mx py q per n passi;
6. Se Mx è in una configurazione finale con output x ritorna SÍ e arresta;
7. Altrimenti incrementa c di una unità e vai al passaggio 4.
Per la tesi di Church-Turing tale algoritmo descrive una funzione calcolabile che accetta
l’insieme I , dunque I è semidecidibile.
Esercizio 17
FI - 01/07/2021
Studiare l’insieme:
I “ tx | Imp'x q “ Hu
ovvero, dire se I è ricorsivo, ricorsivamente enumerabile o non ricorsivamente enume-
rabile.
Soluzione
L’insieme I non è decidibile. Per dimostrare ciò, invochiamo il teorema di Rice. L’in-
sieme I rappresenta la famiglia F di funzioni unarie calcolabili la cui immagine è vuota,
ossia le funzioni che divergono su ogni input. Questa famiglia di funzioni:
• non corrisponde all’insieme vuoto perché esistono funzioni unarie calcolabili che
divergono su ogni input, per esempio la funzione sempre indefinita ∅ : N Ñ N.
Quindi F ‰ H;
• non corrisponde all’insieme di tutte le funzioni calcolabili unarie C1 , perché esi-
stono funzioni unarie calcolabili la cui immagine non è vuota, per esempio la
funzione g : N Ñ N; g pxq “ x ` 1. Quindi F ‰ C1 .
Quindi per il teorema di Rice I non è decidibile.
Notiamo che il complemento I “ tx | Imp'x q ‰ Hu è un insieme semidecidibile tramite
il seguente algoritmo:
1. Leggi x;
2. Estrai il codice della Mdt Mx che calcola 'x ;
18
3. Imposta un contatore c “ 0 tale che c “ x1 pcq; 2 pcqy
4. Ottieni y “ 1 pcq e n “ 2 pcq;
5. Esegui Mx py q per n passi;
6. Se Mx è in una configurazione finale ritorna SÍ e arresta;
7. Altrimenti incrementa c di una unità e vai al passaggio 4.
che descrive una funzione calcolabile secondo la tesi di Church-Turing. Dunque I è
semidecidibile. Per il teorema di Post, dato che I è semidecidibile, I deve necessaria-
mente essere un insieme non semidecidibile, altrimenti si avrebbe per assurdo che I è
un insieme ricorsivo (mentre tramite il Th. di Rice abbiamo dimostrato che non può
esserlo).
Esercizio 18
FI - 06/09/2021
xPA
#
1 se
gpxq “
Ò altrimenti
19
7. Altrimenti esegui Mf pxq per n2 passi;
8. Se Mf è in una configurazione finale con output y ritorna SÍ e arresta;
9. Altrimenti incrementa c di una unità e vai al passaggio 4.
Per la tesi di Church-Turing tale algoritmo descrive una funzione calcolabile che
corrisponde esattamente alla funzione h che cercavamo.
In alternativa, invece di utilizzare la funzione g che semidecide l’insieme A, pos-
siamo utilizzare una funzione k : N Ñ N totale calcolabile che enumera A. Tale
funzione sicuramente esiste perché abbiamo che A è ricorsivamente enumerabile.
1. Leggi y ;
2. Estrai il codice della MdT Mk che calcola k e la MdT Mf che calcola f ;
3. Imposta un contatore c “ 0 tale che c “ x1 pcq; 2 pcqy
4. Ottieni x “ 1 pcq e n “ 2 pcq
5. Esegui Mf pMk pxqq per n passi;
6. Se Mf è in una configurazione finale con output y ritorna SÍ e arresta;
7. Altrimenti incrementa c di una unità e vai al passaggio 4.
• Prendiamo come insieme A “ tx P N | 'x pxq Òu. L’insieme non è ricorsivamente
enumerabile. Prendiamo poi come funzione f : N Ñ N la funzione costante 1.
Chiaramente f pAq è un insieme ricorsivo, e di conseguenza è anche ricorsivamen-
te enumerabile. Tuttavia abbiamo per definizione che A è non ricorsivamente
enumerabile, quindi la deduzione non si può fare.
Esercizio 19
FI - 27/09/2021
gpxq “ x
Quindi F ‰ H;
20
– non corrisponde all’insieme di tutte le funzioni calcolabili unarie C1 , perché
esistono funzioni unarie calcolabili il cui dominio non include 3, per esempio
la funzione h : N Ñ N; hpxq “ x modx . Quindi F ‰ C .
3 1
Esercizio 20
FI - 15/11/2021
21
2. Estrai il codice della Mdt Mi che calcola 'i ;
3. Imposta un contatore c “ 0 tale che c “ x1 pcq; 2 pcqy
4. Ottieni x “ 1 pcq e n “ 2 pcq;
5. Esegui Mi pxq per n passi;
6. Se Mi è in una configurazione finale con Mi pxq “ 3 ritorna SÍ e arresta;
7. Altrimenti incrementa c di una unità e vai al passaggio 4.
che descrive una funzione calcolabile secondo la tesi di Church-Turing. Dunque I è
semidecidibile. Per il teorema di Post, dato che I è semidecidibile, I deve necessaria-
mente essere un insieme non semidecidibile, altrimenti si avrebbe per assurdo che I sia
un insieme ricorsivo (mentre tramite il Th. di Rice abbiamo dimostrato che non può
essere).
Esercizio 21
FI - 07/02/2022
22
7. Altrimenti incrementa c di una unità e vai al passaggio 4.
Per la tesi di Church-Turing tale algoritmo descrive una funzione calcolabile che accetta
l’insieme I , dunque I è semidecidibile.
Esercizio 22
FI - 07/03/2022
Insiemi di indici
Un insieme A è un insieme di indici se per ogni x; y P N con 'x – 'y si ha che
x P A ðñ y P A.
23
MACCHINE DI TURING
Esercizio 1
FI - 16/12/2019, 20/07/2017, 30/01/2017
Si scriva un programma per Macchina di Turing che, ricevuto sul nastro un numero
decimale, lasci sul nastro solo l’intero della divisione del numero di ingresso per 10.
Input Output atteso
231 23
19 1
7 0
Soluzione
( q0 , [0 , 1 , ... , 9]) Ñ ( q1 , [0 , 1 , ... , 9] , +1)
( q1 , *) Ñ ( q2 , * , -1)
( q1 , [0 , 1 , ... , 9]) Ñ ( q3 , [0 , 1 , ... , 9] , +1)
( q2 , [0 , 1 , ... , 9]) Ñ ( q5 , 0 , +1)
( q3 , [0 , 1 , ... , 9]) Ñ ( q3 , [0 , 1 , ... , 9] , +1)
( q3 , *) Ñ ( q4 , * , -1)
( q4 , [0 , 1 , ... , 9]) Ñ ( q5 , * , +1)
Esercizio 2
FI - 2017
Costruire la MdT che calcola la funzione logica NOT su una sequenza binaria.
Input Output atteso
1 0
11011001 00100110
000 111
Soluzione
( q0 , 1) Ñ ( q0 , 0 , +1)
( q0 , 0) Ñ ( q0 , 1 , +1)
Esercizio 3
FI - 24/02/2017
Programmare una macchina di Turing che, dato un nastro iniziale contenente due
sequenze di A separate da una D, termina la sua esecuzione lasciando sul nastro la
sequenza che contiene il maggior numero di A.
24
Input Output atteso
AADA AA
AADAAA AAA
AADAA AA
DA A
Soluzione
( q0 , A) Ñ ( q1 , *, +1)
( q0 , D) Ñ ( q2 , D, +1)
( q1 , A) Ñ ( q1 , A, +1)
( q1 , D) Ñ ( q3 , D, +1)
( q2 , *) Ñ ( q2 , *, -1)
( q2 , D) Ñ ( q4 , *, -1)
( q2 , A) Ñ ( q5 , A, -1)
( q3 , A) Ñ ( q3 , A, +1)
( q3 , *) Ñ ( q6 , *, -1)
( q5 , D) Ñ ( q3 , D, +1)
( q6 , A) Ñ ( q6 , *, +1)
( q6 , D) Ñ ( q6 , D, +1)
( q6 , *) Ñ ( q7 , *, +1)
( q7 , *) Ñ ( q8 , A, -1)
( q7 , A) Ñ ( q7 , A, +1)
( q8 , *) Ñ ( q8 , *, -1)
( q8 , A) Ñ ( q8 , A, -1)
( q8 , D) Ñ ( q9 , D, -1)
( q9 , A) Ñ ( q9 , A, -1)
( q9 , *) Ñ ( q0 , *, +1)
Esercizio 4
FI - 22/06/2017
Durante le sue guerre in Gallia, Giulio Cesare usava un semplice cifrario per comunicare
con i suoi generali. In questo cifrario, ogni lettera era traslata di un numero fisso di
posizioni. Nel cifrario originale, questo numero era 13: si aveva dunque:
in chiaro ABCDEFGHIJKLMNOPQRSTUVWXYZ
cifrato NOPQRSTUVWXYZABCDEFGHIJKLM
Si scriva un programma per macchina di Turing che implementi un cifrario di Cesare
generalizzato. Il programma prende in ingresso un numero decimale (da 1 a 5) seguito
da una stringa su A-Z, e deve lasciare sul nastro la stessa stringa, cifrata traslando ogni
lettera del numero indicato di posizioni.
25
Input Output atteso
3ABC DEF
5BACO GFHT
1BACO CBDP
Soluzione
( q0 , 1) Ñ ( q1 , * , +1)
( q0 , 2) Ñ ( q2 , * , +1)
( q0 , 3) Ñ ( q3 , * , +1)
( q0 , 4) Ñ ( q4 , * , +1)
( q0 , 5) Ñ ( q5 , * , +1)
( q1 , [A , B , ... , Z ]) Ñ ( q1 , [B , C, ... , A], +1)
( q2 , [A , B , ... , Z ]) Ñ ( q2 , [C , D, ... , B], +1)
( q3 , [A , B , ... , Z ]) Ñ ( q3 , [D , E, ... , C], +1)
( q4 , [A , B , ... , Z ]) Ñ ( q4 , [E , F, ... , D], +1)
( q5 , [A , B , ... , Z ]) Ñ ( q5 , [F , G, ... , E], +1)
Esercizio 5
TOC, Università di Leeds - 01/1998
Programmare una macchina di Turing che calcoli hpx; y q “ x ´ y (la sottrazione tronca-
ta) utilizzando il sistema numerico unario (NB: utilizzare la notazione per cui l’output
corrisponde al numero di simboli 1 sul nastro, mentre l’input è il numero di simboli 1
meno 1, e.g: zero in input corrisponde a "1", ma in output è il nastro vuoto).
Input Output atteso
111*11 1
111*111111 *
1111*1 111
Soluzione
( q0 , 1) Ñ ( q0 , 1, +1)
( q0 , *) Ñ ( q1 , *, +1)
( q1 , 1) Ñ ( q1 , 1, +1)
( q1 , *) Ñ ( q2 , *, -1)
( q2 , 1) Ñ ( q3 , *, -1)
( q3 , 1) Ñ ( q3 , 1, -1)
( q3 , *) Ñ ( q4 , *, -1)
( q4 , 1) Ñ ( q4 , 1, -1)
( q4 , *) Ñ ( q5 , *, +1)
( q5 , 1) Ñ ( q0 , *, +1)
( q5 , *) Ñ ( q6 , *, +1)
( q6 , 1) Ñ ( q6 , *, +1)
( q6 , *) Ñ ( q2 , *, +1)
26
Esercizio 6
FI - 15/07/2021
Costruire una Macchina di Turing che preso un numero naturale ne restituisce il doppio.
Per la rappresentazione dei naturali si scelga la notazione che si ritiene più idonea.
Soluzione
Nel caso si scelga la notazione unaria, è sufficiente cancellare un 1 e raddoppiare gli
1 rimanenti (NB: utilizziamo la notazione per cui l’output corrisponde al numero di
simboli 1 sul nastro, mentre l’input è il numero di simboli 1 meno 1, e.g: zero in input
corrisponde a "1", ma in output è il nastro vuoto):
( q0 , 1) Ñ ( q1 , *, +1)
( q1 , 1) Ñ ( q2 , *, +1)
( q2 , 1) Ñ ( q2 , 1, +1)
( q2 , *) Ñ ( q3 , *, +1)
( q3 , 1) Ñ ( q3 , 1, +1)
( q3 , *) Ñ ( q4 , 1, +1)
( q4 , *) Ñ ( q5 , 1, -1)
( q5 , 1) Ñ ( q5 , 1, -1)
( q5 , *) Ñ ( q6 , *, -1)
( q6 , 1) Ñ ( q6 , 1, -1)
( q6 , *) Ñ ( q1 , *, +1)
Nel caso si scelga la notazione binaria, è sufficiente aggiungere uno zero in fondo alla
stringa di input:
( q0 , 1) Ñ ( q0 , 1 , +1)
( q0 , 0) Ñ ( q0 , 0 , +1)
( q0 , *) Ñ ( q1 , 0 , +1)
27
DIMOSTRAZIONI
Esercizio 1
FI - 20/06/2019
Esercizio 2
FI - 23/07/2019, 27/09/2021, 07/03/2022
Esercizio 3
FI - 13/09/2019
Esercizio 4
FI - 27/09/2019
Esercizio 5
FI - 07/02/2020
28
Enunciare formalmente la definizione di insieme ricorsivamente enumerabile. Si dimo-
stri che ogni insieme ricorsivo è anche ricorsivamente enumerabile. In particolare, se
non è vuoto (risp. non finito) può essere enumerato mediante una funzione calcolabile
monotona crescente (risp. strettamente crescente).
Soluzione
Pagine 49-50 e 72-74. Per definire una funzione monotona strettamente crescente nel
caso di un insieme infinito L, definiamo g : N Ñ N nella seguente maniera:
gp0q “ z rfL pz q “ 1s
gpx ` 1q “ z rfL pz q “ 1 ^ z ą gpxqs
dove è l’operatore di minimalizzazione e fL è la funzione caratteristica dell’insieme
in questione.
Nel caso di un insieme finito non vuoto, definiamo invece una funzione monotona
crescente h : N Ñ N nella seguente maniera:
hp0q “ z rfL pz q “ 1s
x ` 1 se fL px ` 1q “ 1
#
hpx ` 1q “
hpxq se fL px ` 1q “ 0
Esercizio 6
FI - 05/03/2020
Esercizio 7
FI - 18/06/2020
Esercizio 8
FI - 01/07/2020, 20/07/2020, 07/09/2020, 15/07/2021
Si enunci e si dimostri formalmente il pumping lemma per i linguaggi liberi dal contesto.
29
Soluzione
Pagine 89-91.
Esercizio 9
FI - 28/09/2020, 09/02/2021
Esercizio 10
FI - 26/02/2021, 15/11/2021
Esercizio 11
FI - 22/06/2021
Esercizio 12
FI - 01/07/2021
Esercizio 13
FI - 06/09/2021, 21/02/2022
30
Enunciare i requisiti di ogni definizione di algoritmo.
Soluzione
Pagine 7-10.
Esercizio 14
FI - 07/02/2022
31
GRAMMATICHE E AUTOMI
Esercizio 1
FI - 20/06/2019, 15/11/2021
Dato il linguaggio L su t0; 1u˚ costituito da stringhe tali che ogni 0 ha un 1 alla sua
destra:
a) Dire a quale classe nella gerarchia di Chomsky il linguaggio L appartiene e trovare
la grammatica corrispondente.
b) Trovare l’automa che lo riconosce.
Soluzione
a) L è un linguaggio regolare (di tipo 3) generato dalla seguente grammatica regolare
S ÝÑ 1S | 0A | 1 |
A ÝÑ 1S | 1
b)
Esercizio 2
FI - 23/07/2019
S ÝÑ | aSc | SS
Dire a quale classe di linguaggi nella Gerarchia di Chomsky appartiene L. Può un
sottoinsieme infinito di L essere regolare?
Soluzione
L è un linguaggio libero dal contesto (tipo 2). Difatti la grammatica che lo genera è
di tipo 2 (se la lambda produzione turba qualcuno, si può comunque riscrivere una
grammatica equivalente dove S non appare sulla destra di nessuna produzione).
Un sottoinsieme infinito di L è per esempio il linguaggio L1 “ tpacqn | n ą 0u che è un
linguaggio regolare generato dalla seguente grammatica regolare
32
S ÝÑ aA
A ÝÑ cS | c
Esercizio 3
FI - 13/09/2019
G “ tN “ tS u; T “ ta; bu; P; S u
S ÝÑ aS | bS |
L’automa che lo riconosce è
Esercizio 4
FI - 27/09/2019
L “ tan an | a P A; n P Nu
Soluzione
Il linguaggio genera tutte stringhe nella forma a2n per n ě 0: ; aa; aaaa; : : : . Quindi è
un linguaggio regolare (tipo 3), perché lo si può generare tramite la seguente grammatica
regolare:
G “ tN “ tS; A; B u; T “ tau; P; S u
S ÝÑ aA |
A ÝÑ aS | a
Esercizio 5
FI - 16/12/2019
33
Si consideri la seguente grammatica G “ pVt “ ta; b; cu; Vn “ tS; X u; P; S q e le seguenti
produzioni
S ÝÑ X |
X ÝÑ aXa | bXb | c
Svolgere ciascuno dei seguenti punti:
1. Di che tipo è la grammatica?
2. Mostrare una derivazione per “aaba”.
3. Mostrare una derivazione per “abbcbba”.
4. Sono ammesse stringhe vuote?
5. Qual è il linguaggio generato da G?
Soluzione
1. La grammatica è libera dal contesto (tipo 2).
2. S ñ X ñ aXa ñ : : : non è possibile.
3. S ñ X ñ aXa ñ abXba ñ abbXbba ñ abbcbba.
4. Sì.
5. L “ t ¨ c ¨ rev | P ta; bu˚ u Y tu
Esercizio 6
FI - 16/12/2019, 22/06/2017
Soluzione
34
Stato a b c
qS qA qC H
qA qA qC H
•
qC H H qCF
qF H H H
qCF H H qCF
• L “ t an bcm | n ě 0; m ą 0u
Esercizio 7
FI - 07/02/2020, 06/09/2021
Scrivere una grammatica a struttura di frase (06/09/2021: regolare) sull’alfabeto t0; 1u,
che denota il linguaggio L formato da tutte le stringhe che contengono la stringa 00
come prefisso oppure la stringa 110 come suffisso.
- Costruire l’automa a stati finiti che riconosce L.
- Definire una espressione regolare che definisce L.
Soluzione
• La grammatica a struttura di frase è la seguente: G “ tN “ tS; Au; T “
t0; 1u; P; S u
S ÝÑ 00A | A110
A ÝÑ 0A | 1A |
La grammatica regolare, invece, è la seguente: G “ tN “ tS; A; B; C; D; E; F u; T “
35
t0; 1u; P; S u
S ÝÑ 0A | 1B
A ÝÑ 0C | 1B | 0
B ÝÑ 1D | 0F
C ÝÑ 0C | 1C | 0 | 1
D ÝÑ 1D | 0E | 0
E ÝÑ 1B | 0F
F ÝÑ 0F | 1B
• Automa deterministico:
Automa non-deterministico:
Esercizio 8
FI - 05/03/2020
36
Quale tipologia di linguaggi sono generati da grammatiche con produzioni della forma:
A ÝÑ wB
B ÝÑ w
dove A e B sono simboli non terminali e w è una stringa di simboli terminali su un
dato alfabeto.
Soluzione
Linguaggi regolari (tipo 3).
Esercizio 9
FI - 18/06/2020
Dire a quale classe appartiene il linguaggio di tutte le stringhe sull’alfabeto ta; b; cu che
contengono un numero dispari di a, un numero dispari di b e un numero pari di c.
Soluzione
Il linguaggio è regolare. Per convincersi di ciò è possibile disegnare un automa a stati
finiti deterministico che lo riconosce: Si possono definire gli 8 possibili stati nella quale
la stringa si può trovare: tutte le combinazioni da "a" pari, "b" pari, "c" pari a "a"
dispari, "b" dispari, "c" dispari. Lo stato iniziale sarà lo stato con tutti simboli pari,
perché la stringa vuota rappresenterebbe tale stato, mentre lo stato finale sarebbe "a"
dispari, "b" dispari e "c" pari che è ciò che l’automa dovrebbe riconoscere. Dopo aver
definito gli stati basta tracciare i 24 archi (3 per ogni stato) per ogni possibile lettera
che può essere letta.
Questo automa si può molto facilmente convertire in una grammatica regolare, che avrà
almeno 8 simboli non terminali.
Esercizio 10
FI - 01/07/2020, 20/07/2020
37
Dato che lpuv q ď p, v può consistere solamente di parentesi aperte, e dato che lpv q ą 0
v non può essere una stringa vuota. Quindi la stringa uv2 w ha più parentesi aperte
che chiuse e non appartiene a L, e di conseguenza L non è un linguaggio regolare.
Mostriamo ora che L è un linguaggio di tipo 2 definendo una grammatica libera dal
contesto che lo generi: G “ tN “ tS u; T “ tp; qu; P; S u
S ÝÑ pS q | SS | pq
Esercizio 11
FI - 07/09/2020
Esercizio 12
FI - 28/09/2020
L “ t0n 1m 0m`n | m; n ě 0u
Soluzione
Mostriamo che L non è un linguaggio regolare applicando il Pumping lemma.
Assumiamo L regolare e fissiamo un p P N come richiesto dal pumping lemma. Pren-
diamo dunque la stringa z “ 0p 1p 02p . Si ha che z P L e lpz q “ 4p ě p, quindi si può
scrivere z “ uvw per qualche u; v; w.
38
Dato che lpuv q ď p, v può consistere solamente di zeri, e dato che lpv q ą 0 v non può
essere una stringa vuota. Quindi pompando nuovi zeri in v , per esempio con uv 3 w,
il numero di zeri nel prefisso di z aumenterebbe ma il numero di zeri nel suffisso di z
rimarebbe invariato, violando quindi il vincolo che gli zeri in fondo alla stringa devono
essere uguali al numero di uni e di zeri all’inizio della stringa. Quindi L non è un
linguaggio regolare.
Mostriamo ora che L è un linguaggio di tipo 2 definendo una grammatica libera dal
contesto che lo generi: G “ tN “ tS; A; B u; T “ t0; 1u; P; S u
S ÝÑ A | 00 | 10 |
A ÝÑ 0A0 | 0B 0
B ÝÑ 1B 0 | 10
Esercizio 13
FI - 09/02/2021
Esercizio 14
FI - 26/02/2021
39
Sia L il linguaggio generato dalla seguente espressione regolare pa ` bq˚ .
• Dire a quale classe di linguaggi appartiene L.
• Scrivere una grammatica a struttura di frase che genera L.
• Scrivere l’automa che riconosce L.
Soluzione
• L è un linguaggio regolare (tipo 3), infatti si può facilmente generare tramite una
grammatica regolare.
• L è generato dalla seguente grammatica a struttura di frase
G “ tN “ tS u; T “ ta; bu; P; S u
S ÝÑ aS | bS |
Esercizio 15
FI - 22/06/2021
Dire a quale classe di linguaggi sull’alfabeto t0; 1u appartengono gli insiemi di stringhe
tali che le occorrenze di 0 e di 1 soddisfano i seguenti requisiti:
- ci sono almeno due 0 consecutivi e non vi sono mai due 1 consecutivi;
- il numero di occorrenze di 0 è uguale al numero di occorrenze di 1
Soluzione
- Il linguaggio è regolare, perché riconosciuto dal seguente automa a stati finiti
deterministico:
40
- Mostriamo che il linguaggio non è regolare applicando il Pumping lemma.
Assumiamo L regolare e fissiamo un p P N come richiesto dal pumping lemma.
Prendiamo dunque la stringa z “ 0p 1p . Si ha che z P L e lpz q “ 2p ě p, quindi si
può scrivere z “ uvw per qualche u; v; w.
Dato che lpuv q ď p, v può consistere solamente di zeri, e dato che lpv q ą 0, v non
può essere una stringa vuota. Quindi pompando nuovi zeri in v , per esempio con
uv2 w, il numero di zeri aumenta rispetto al numero di uni, violando il vincolo che
le loro occorrenze devono essere in egual numero. Quindi L non è un linguaggio
regolare.
Mostriamo ora che L è un linguaggio di tipo 2 definendo una grammatica libera
dal contesto che lo generi: G “ tN “ tS u; T “ t0; 1u; P; S u
S ÝÑ 1S 0 | 0S 1 | SS | 10 | 01 |
Esercizio 16
FI - 01/07/2021
L “ tx P A | x è palindromau
41
Soluzione
Mostriamo che L non è un linguaggio regolare applicando il Pumping lemma.
Assumiamo L regolare e fissiamo un p P N come richiesto dal pumping lemma. Pren-
diamo dunque la stringa z “ 0p 10p . Si ha che z P L e lpz q “ 2p ` 1 ě p, quindi si può
scrivere z “ uvw per qualche u; v; w.
Dato che lpuv q ď p, v può consistere solamente di zeri, e dato che lpv q ą 0, v non può
essere una stringa vuota. Quindi pompando nuovi zeri in v , per esempio con uv 2 w, il
numero di zeri a sinistra del simbolo 1 in z aumenterebbe ma il numero di zeri a destra
del simbolo 1 rimarebbe invariato, rompendo la simmetria della stringa che quindi cessa
di essere palindroma. Quindi L non è un linguaggio regolare.
Mostriamo ora che L è un linguaggio di tipo 2 definendo una grammatica libera dal
contesto che lo generi: G “ tN “ tS u; T “ t0; 1u; P; S u
S ÝÑ 0S 0 | 1S 1 | 0 | 1 | 00 | 11 |
Esercizio 17
FI - 15/07/2021, 21/02/2022
L “ tx P A˚ | x mod 5 “ 0u
NB: mod rappresenta l’operazione che restituisce il resto della divisione intera tra i
numeri a cui è applicata.
Soluzione
Il linguaggio L è regolare, perché generato dalla seguente grammatica regolare: G“
tN “ tS; Au; T “ t0; 1; : : : ; 9u; P; S u
S ÝÑ 0S | 1S | : : : | 9S | 0 | 5 |
Esercizio 18
FI - 27/09/2021
42
L è un linguaggio regolare (di tipo 3) generato dalla seguente grammatica regolare
S ÝÑ aA | bB | 0C | 1D | a | b | 0 | 1
A ÝÑ bB | 0C | 1D | b | 0 | 1
B ÝÑ aA | 0C | 1D | a | 0 | 1
C ÝÑ aA | bB | 1D | a | b | 1
D ÝÑ aA | bB | 0C | a | b | 0
In alternativa, può risultare più semplice disegnare un automa:
Esercizio 19
FI - 07/02/2022
43
L è un linguaggio regolare (di tipo 3) generato dalla seguente grammatica regolare
S ÝÑ 1S | 0A
A ÝÑ 0A | 1S | 0 | 1
Esercizio 20
FI - 07/03/2022
L “ t0n 1m | n; m P N ^ n ă mu
Soluzione
Mostriamo che L non è un linguaggio regolare applicando il Pumping lemma.
Assumiamo L regolare e fissiamo un p P N come richiesto dal pumping lemma. Pren-
diamo dunque la stringa z “ 0p 1p`1 . Si ha che z P L e lpz q “ 2p ` 1 ě p, quindi si può
scrivere z “ uvw per qualche u; v; w.
Dato che lpuv q ď p, v può consistere solamente di zeri, e dato che lpv q ą 0, v non può
essere una stringa vuota. Quindi pompando nuovi zeri in v , per esempio con uv 2 w,
il numero di zeri diventa necessariamente pari o superiore al numero di uni; nel caso
peggiore che v sia un singolo zero, con v 2 la nuova stringa ha n “ m che quindi non
può appartenere al linguaggio L. Quindi L non è un linguaggio regolare.
Mostriamo ora che L è un linguaggio di tipo 2 definendo una grammatica libera dal
contesto che lo generi: G “ tN “ tS u; T “ t0; 1u; P; S u
S ÝÑ 0S 1 | S 1 | 1
Esercizio 21
FI, Slides da Prof. Re
1. Scrivere una espressione regolare per stringhe binarie che descriva l’insieme t0; 11; 101u.
2. Scrivere una espressione regolare per stringhe binarie che descriva l’insieme delle
stringhe composte solo da simboli "0".
3. Scrivere una espressione regolare per tutte stringhe binarie.
4. Scrivere una espressione regolare per tutte stringhe binarie che cominciano e
finiscono per "1".
5. Scrivere una espressione regolare per le stringhe binarie che contengono almeno
tre "1" consecutivi.
44
6. Scrivere una espressione regolare per le stringhe binarie che contengono almeno
tre "1".
7. Scrivere una espressione regolare per le stringhe binarie di lunghezza dispari.
8. Scrivere una espressione regolare per stringhe di testo che descriva le date in
formato GG/MM/AAAA.
9. Scrivere una espressione regolare per stringhe di testo che descriva i numeri di
telefono.
Soluzione
1. 0 ` 11 ` 101
2. 0 ¨ 0˚
3. p0 ` 1q˚
4. 1 ¨ p0 ` 1q˚ ¨ 1
5. p0 ` 1q˚ ¨ 111 ¨ p0 ` 1q˚
6. p0 ` 1q˚ ¨ 1 ¨ p0 ` 1q˚ ¨ 1 ¨ p0 ` 1q˚ ¨ 1 ¨ p0 ` 1q˚
7. p0 ` 1q ¨ p00 ` 01 ` 10 ` 11q˚ oppure p0 ` 1q ¨ pp0 ` 1q ¨ p0 ` 1qq˚
8. p0 ` 1 ` 2 ` 3q ¨ p0 ` 1 ` 2 ` ¨ ¨ ¨ ` 9q ¨ { ¨ p0 ` 1q ¨ p0 ` 1 ` 2 ` ¨ ¨ ¨ ` 9q ¨ { ¨ p0 ` 1 `
2 ` ¨ ¨ ¨ ` 9q ¨ p0 ` 1 ` 2 ` ¨ ¨ ¨ ` 9q ¨ p0 ` 1 ` 2 ` ¨ ¨ ¨ ` 9q ¨ p0 ` 1 ` 2 ` ¨ ¨ ¨ ` 9q
9. p0 ` 1 ` 2 ` ¨ ¨ ¨ ` 9q˚
Gerarchia di Chomsky
Grammatica a struttura di frase (tipo 0) Una grammatica a struttura di frase (o
grammatica di tipo 0) è una quadrupla G “ pN; T; P; S q dove:
• T eN sono alfabeti disgiunti, composti rispettivamente da quelli che sono chia-
mati simboli terminali e simboli non terminali di G;
• Le produzioni in P sono nella forma
A Ñ con A P N; ; ; P pN Y T q˚
45
• Le produzioni in P sono nella forma
A Ñ con A P N; ; P pN Y T q˚ ; P pN Y T q`
Grammatica libera dal contesto (tipo 2) Una grammatica libera dal contesto (o
grammatica di tipo 2) è una quadrupla G “ pN; T; P; S q dove:
• T eN sono alfabeti disgiunti, composti rispettivamente da quelli che sono chia-
mati simboli terminali e simboli non terminali di G;
• Le produzioni in P sono nella forma
AÑ con A P N; P pN Y T q`
A Ñ aB
AÑa
con A; B P N; a P T
• S è un simbolo di N , e viene chiamato simbolo iniziale di G.
46
IL LINGUAGGIO WHILE
Esercizio 1
FI - 20/06/2019
Fornire la macro-istruzione nel linguaggio While per la divisione con resto di due numeri
naturali.
Soluzione
Consideriamo A come dividendo e B come divisore. Quindi calcoliamo il quoziente
Q e il resto della divisione (che per comodità viene salvato in A). In caso di B = 0,
l’algoritmo non termina perché l’operazione non è definita. In ogni caso, è possibile
inserire un if per gestire il caso B = 0 con un output di 0, 0.
begin
INPUT ( A ) ;
INPUT ( B ) ;
Q := 0;
while A ě B do
begin
A := A ´ B ;
Q := s ( Q )
end
OUTPUT ( Q ) ;
OUTPUT ( A )
end
Esercizio 2
FI - 23/07/2019
Fornire la macro-istruzione nel linguaggio While per la moltiplicazione tra due naturali.
E tra due interi?
Soluzione
Consideriamo la moltiplicazione come l’operazione X “X ¨Y
begin
INPUT ( X ) ;
INPUT ( Y ) ;
U := X ;
Z := Y ;
ZERO := 0;
UNO := 1;
47
if X = ZERO _ Y = ZERO then
X := 0
else
while Z ‰ UNO do
begin
X := X + U ;
Z := pd ( Z )
end
OUTPUT ( X )
end
Introduciamo il segno come due variabili booleane SIGNX e SIGNY, dove il valore 1
indica un segno negativo e 0 un segno positivo.
begin
INPUT ( SIGNX ) ;
INPUT ( X ) ;
INPUT ( SIGNY ) ;
INPUT ( Y ) ;
U := X ;
Z := Y ;
ZERO := 0;
UNO := 1;
if X = ZERO _ Y = ZERO then
X := 0
else
while Z ‰ UNO do
begin
X := X + U ;
Z := pd ( Z )
end
if SIGNX ‰ SIGNY then
begin
OUTPUT ( UNO ) ;
OUTPUT ( X )
end
else
begin
OUTPUT ( ZERO ) ;
OUTPUT ( X )
end
end
48
Esercizio 3
FI - 13/09/2019
Come è possibile estendere il linguaggio While con un nuovo comando repeat C until
E dove C è un comando e E è una espressione booleana. Informalmente, il comando re-
peat C until E esegue C fino a che E risulta falsa. Mostrare la semantica operazionale
del nuovo comando.
Soluzione
begin
T := 1;
while E ‰ T do C
end
Esercizio 4
FI - 27/09/2019, 15/11/2021
Come è possibile estendere il linguaggio While con un nuovo comando repeat C until
E dove C è un comando e E è una espressione booleana. Informalmente, il comando
repeat C until E esegue C e poi verifica E , se E falsa ripete C , altrimenti esce dal
ciclo.
Soluzione
begin
T := 1;
C;
while E ‰ T do C
end
Esercizio 5
FI - 16/12/2019
49
CIFRA ::= 0 | 1 | ... | 9
Esercizio 6
FI - 07/02/2020
Scrivere un programma While che presi due numeri in input controlla se il primo è
multiplo del secondo.
Soluzione
Presi X e Y ritorniamo 1 se X è un multiplo di Y, 0 altrimenti.
begin
INPUT ( X ) ;
INPUT ( Y ) ;
ZERO := 0;
UNO := 1;
if Y = ZERO then
OUTPUT ( ZERO )
else
while X ě Y do X := X ´ Y
if X ‰ ZERO then
OUTPUT ( ZERO )
else
OUTPUT ( UNO )
end
Esercizio 7
FI - 05/03/2020, 18/06/2020
50
Dove n dipende dall’ n fissato del numero degli input. Se ci sono n input ci sono n
righe di comandi INPUT che assegnano il valore alla variable Xi.
Esercizio 8
FI - 01/07/2020, 20/07/2020, 07/09/2020
In alternativa ai comandi while all’interno del while principale, si possono anche usare
comandi if-then-else con le stesse condizioni, col vantaggio che è possibile eseguire
multipli comandi Ci quando e appartiene a più intervalli.
Esercizio 9
FI - 28/09/2020, 06/09/2021
Scrivere un programma in linguaggio WHILE che legga in input una sequenza di lun-
ghezza ignota a priori di numeri interi positivi. Il programma, a partire dal primo
numero introdotto, stampa ogni volta la media aritmetica di tutti i numeri introdotti.
Terminare quando il numero inserito è negativo.
51
Soluzione
Prendiamo il segno come input aggiuntivo nella variabile SIGNX, dove il valore 0 indica
segno positivo e il valore 1 segno negativo.
begin
INPUT ( X ) ;
INPUT ( SIGNX ) ;
M := 0;
C := 0;
S := 0;
UNO := 1;
while SIGNX ‰ UNO do
begin
C := s ( C ) ;
S := S + X ;
M := 0;
TMPS := S ;
while TMPS ě C do
begin
TMPS := TMPS ´ C ;
M := s ( M )
end
OUTPUT ( M ) ;
INPUT ( X ) ;
INPUT ( SIGNX )
end
OUTPUT ( M )
end
Esercizio 10
FI - 09/02/2021
52
INPUT ( CHAR ) ;
N := 0;
M := 0;
L := 0;
LAMBDA := ;
A := a ;
B := b ;
C := c ;
ZERO := 0;
UNO := 1;
53
begin
N2 := s ( N2 ) ;
INPUT ( CHAR )
end
if N2 ‰ N _ M2 ‰ M _ CHAR ‰ then
OUTPUT ( ZERO )
else
OUTPUT ( UNO )
end
end
end
else
OUTPUT ( UNO )
end
Esercizio 11
FI - 26/02/2021
54
end
if COUNT ‰ ZERO then
OUTPUT ( ZERO )
else
OUTPUT ( UNO )
end
In alternativa:
begin
FLAG := 1;
A := a ;
B := b ;
LAMBDA := ;
UNO := 1;
ZERO := 0;
while FLAG = UNO do
begin
INPUT ( CHAR ) ;
if CHAR = A _ CHAR = B then
begin end
else
FLAG := 0
end
if CHAR = LAMBDA then
OUTPUT ( UNO )
else
OUTPUT ( ZERO )
end
Esercizio 12
FI - 22/06/2021
loop E do C end
dove E è una espressione aritmetica, la cui valutazione restituisce un intero I . La
semantica intuitiva del comando loop è di controllare la guardia E e, se è diversa da
0, eseguire C e decrementare la guardia. Dire se il comando loop è esprimibile nel
linguaggio WHILE.
Soluzione
55
begin
I := E ;
ZERO := 0;
while I ‰ ZERO do
begin
C;
I := pd ( I )
end
end
Esercizio 13
FI - 01/07/2021
Si consideri il comando:
for I “ E1 to E2 do C end
dove E1 ; E2 sono espressioni aritmetiche. La semantica intuitiva del for è di eseguire
il comando C tante volte quante E 2 ´ E 1. Dire se il comando for è esprimibile nel
linguaggio WHILE.
Soluzione Notare bene che calcolare E2 ´ E1 potrebbe portare a un valore negativo.
Utilizzando l’operatore di confronto ă si evita il problema di dover operare su valori
interi negativi.
begin
I := E1 ;
E := E2 ;
while I < E do
begin
C;
I := s ( I )
end
end
Esercizio 14
FI - 15/07/2021
Si consideri il comando:
loopmax E1 ; E2 do C end
56
la cui semantica intuitiva consiste nell’eseguire il comando C tante volte quanto vale il
massimo tra E1 ed E2 fissato all’inizio. Dire se il comando loopmax è esprimibile nel
linguaggio WHILE.
Soluzione
begin
ZERO := 0;
E1 := E1 ;
E2 := E2 ;
if E1 < E2 then
I := E1
else
I := E2
while I ‰ ZERO do
begin
C;
I := pd ( I )
end
end
Esercizio 15
FI - 27/09/2021
Esercizio 16
FI - 07/02/2022, 21/02/2022
57
begin
ZERO := 0;
E1 := E1 ;
E2 := E2 ;
Q := 0;
while E1 ě E2 do
begin
E1 := E1 ´ E2 ;
Q := s ( Q )
end
R := E1 ;
while Q ‰ ZERO _ R ‰ ZERO do
begin
if Q ě ZERO then
begin
C1 ;
Q := pd ( Q )
end
else begin end
if R ě ZERO then
begin
C2 ;
R := pd ( R )
end
else begin end
end
end
Esercizio 17
FI - 07/03/2022
58
ZERO := 0;
while I ‰ ZERO do
begin
C1 ;
C2 ;
I := pd ( I )
end
end
Macro disponibili
• Assegnamento di costante: X :“ n; n P N
• Assegnamento di variabile: X :“ Y
• Somma: X :“ X ` Y; X :“ Z ` Y
• Differenza troncata: X :“ X ´ Y; X :“ Z ´ Y
• Operatori di confronto: X ě Y; X ď Y; X “ Y; X ą Y; X ă Y con X; Y numeri
naturali
• Operatori booleani: XE ^ YE ; XE _ YE ; XE con XE ; YE espressioni booleane arbi-
trarie (con valori in 0 e 1)
• Assegnamento di espressione booleana: X :“ TE
• While con condizione booleana: while TE do COMMAND
• If-then-else con condizione booleana: if TE then COMMAND else COMMAND.
• Input di un valore su una variabile: INP UT pV ARq
• Output del valore di una variabile: OUT P UT pV ARq
59