collana di istruzione scientifica serie di informatica

collana di istruzione scientifica
serie di informatica
Carlo Toffalori
Flavio Corradini
Stefano Leonesi
Stefano Mancini
Teoria della computabilità
e della complessità
McGraw-Hill
Milano • New York • San Francisco • Washington D.C. • Auckland
Bogotá • Lisboa • London • Madrid • Mexico City • Montreal
New Delhi • San Juan • Singapore • Sydney • Tokyo • Toronto
Copyright © 2005, 2010 The McGraw-Hill Companies, S.r.l.
Publishing Group Italia
via Ripamonti 89 – 20139 Milano
McGraw-Hill
A Division of The McGraw-Hill Companies
I diritti di traduzione, di riproduzione, di memorizzazione elettronica e di adattamento
totale e parziale con qualsiasi mezzo (compresi i microfilm e le copie fotostatiche) sono
riservati per tutti i Paesi.
Date le caratteristiche intrinseche di Internet, l’Editore non è responsabile per eventuali
variazioni negli indirizzi e nei contenuti dei siti Internet riportati.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive
case produttrici.
Publisher: Paolo Roncoroni
Produzione: Donatella Giuliani
Impaginazione: a cura degli Autori
Grafica di copertina: G & G
Realizzazione print on demand: Prontostampa, Fara Gera d’Adda (BG)
Stampa: I Love Books, Fara Gera d’Adda (BG)
ISBN 978-88-386-7260-6
Printed in Italy
Indice
A Teoria della computabilità
1
1
Introduzione
1.1 Breve preistoria della computabilità . . . . . . . . . . . . . . . .
1.2 Problemi di matematica . . . . . . . . . . . . . . . . . . . . . . .
1.3 Un decalogo per i bravi algoritmi . . . . . . . . . . . . . . . . . .
3
3
5
7
2
Le Macchine di Turing
2.1 Macchine che calcolano . . . . . . . . .
2.2 Alfabeti, stringhe, linguaggi . . . . . .
2.3 La Macchina di Turing . . . . . . . . .
2.4 Macchine di Turing e linguaggi . . . . .
2.5 Macchine di Turing e funzioni . . . . .
2.6 CodiÞche di stringhe . . . . . . . . . .
2.7 Numeri e coppie . . . . . . . . . . . . .
2.8 Numeri e macchine . . . . . . . . . . .
2.9 La Tesi di Church-Turing . . . . . . . .
2.10 Macchine di Turing a più nastri . . . . .
2.11 Macchine di Turing non deterministiche
2.12 Esercizi . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
12
15
20
22
23
26
28
31
33
37
39
Problemi senza Soluzione
3.1 Diagonalizzare e ridurre . . . . . .
3.2 Problemi risolubili algoritmicamente
3.3 La Macchina Universale . . . . . .
3.4 Il Problema dell’Arresto . . . . . .
3.5 Insiemi decidibili e semidecidibili .
3.6 Un’altra funzione non calcolabile . .
3.7 Il Decimo Problema di Hilbert . . .
3.8 I teoremi di Kleene e di Rice . . . .
3.9 Esercizi . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
41
42
44
45
49
52
56
58
61
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vi
4
5
6
B
7
8
INDICE
Funzioni Ricorsive
4.1 Calcolabilità secondo Church .
4.2 Le funzioni parziali ricorsive .
4.3 Esempi a volontà . . . . . . .
4.4 Church o Turing? . . . . . . .
4.5 Esercizi . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
64
68
71
74
Calcolabilità e Grammatiche
5.1 Grammatiche e Automi . . . . . . .
5.2 Linguaggi . . . . . . . . . . . . . .
5.3 Grammatiche e Linguaggi . . . . .
5.4 La Gerarchia di Chomsky . . . . . .
5.5 Alberi di Derivazione . . . . . . . .
5.6 Linguaggi regolari . . . . . . . . .
5.7 Linguaggi Liberi dal Contesto . . .
5.8 Linguaggi Dipendenti dal Contesto .
5.9 Linguaggi e Macchine di Turing . .
5.10 Automi di Riconoscimento . . . . .
5.11 Esercizi . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
77
77
78
79
81
83
85
89
93
96
98
100
Calcolabilità e Linguaggi di Programmazione
6.1 Il linguaggio WHILE . . . . . . . . . . . .
6.2 La Sintassi del Linguaggio WHILE . . . .
6.3 La Semantica dei linguaggi WHILE . . . .
6.4 Funzioni WHILE-Calcolabili . . . . . . . .
6.5 Programmi e Macchine di Turing . . . . . .
6.6 Il Teorema di Kleene per i Programmi . . .
6.7 Esercizi . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
103
103
103
108
110
111
112
114
.
.
.
.
.
.
.
.
.
.
Teoria della complessità
Complessità
7.1 Introduzione . . . . . . . . . .
7.2 Come misurare la complessità
7.3 Un esempio . . . . . . . . . .
7.4 Esercizi . . . . . . . . . . . .
117
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Classi di Complessità Temporale
8.1 La classe e la Tesi di Edmonds-Cook-Karp . . . . . . . . . . .
8.2 La classe ! . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3 Un’altra caratterizzazione di ! : le macchine di Turing non deterministiche . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4 Il problema
! ........................
8.5 Problemi ! -completi . . . . . . . . . . . . . . . . . . . . . . .
8.6 Il teorema di Cook-Levin . . . . . . . . . . . . . . . . . . . . . .
119
119
123
128
130
133
133
143
149
151
152
154
INDICE
8.7
8.8
8.9
8.10
8.11
8.12
8.13
9
vii
Altri problemi !-completi . . . . . . . . . . . . . . . . . . . . 159
! e !: qualche commento ulteriore . . . . . . . . . . . . . . . 165
# ! e la gerarchia polinomiale . . . . . . . . . . . . . . . . . . 167
Oracoli . . . . . . . .
Tempi esponenziali . .
nella pratica
Esercizi . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
174
175
175
180
Complessità, Logica e Circuiti
9.1 Un po’ di logica . . . . . . . . . . . . . . . . . .
9.2 Ancora logica: le formule Booleane quantiÞcate .
9.3 Circuiti . . . . . . . . . . . . . . . . . . . . . .
9.4 Circuiti e complessità . . . . . . . . . . . . . . .
9.5 Circuiti e
-completezza . . . . . . . . . . . .
9.6 Esercizi . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
183
183
190
191
198
204
204
!
!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
!
10 Classi di Complessità Spaziale
10.1 Il parametro spazio . . . .
10.2
e
. . . . . .
10.3
e
. . . .
10.4 Il teorema di Savitch . . .
. . . . . . .
10.5
10.6
-completezza .
10.7 Esercizi . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
207
207
210
212
216
219
221
226
11 Classi di Complessità Probabilistiche
11.1 Probabilmente primi . . . . . . . . . . .
11.2 Montecarlo o Las Vegas? . . . . . . . . .
11.3 La classe
, e altre variazioni sul tema .
e
. . . . . . . . . . . . . . . .
11.4
11.5 Esercizi . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
229
229
233
234
246
250
12 Contare e Approssimare
12.1 Soddisfacibilità unica . . . . .
12.2 Contare . . . . . . . . . . . .
12.3 Approssimare . . . . . . . . .
12.4 Il teorema di Valiant-Vazirani .
12.5 Esercizi . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
251
251
252
256
261
267
13 Algoritmi Interattivi
13.1 Artù e Merlino . . . . . .
13.2 La classe
. . . . . . . .
13.3 Il teorema di Shamir . . .
13.4 Un tentativo di conclusione
13.5 Esercizi . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
269
269
275
281
286
288
!$!%&' (
!$!%&' (
( # (
!$!%&'
)!!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
!!
!
*!
.
.
.
.
.
.
.
.
.
.
viii
INDICE
C Teoria quantistica della computazione
14 Dal Bit al QuantumBit
14.1 Nozioni preliminari . . . . . . . . . . .
14.2 I postulati della Meccanica Quantistica .
14.3 Qubits versus Bits . . . . . . . . . . . .
14.4 Esercizi . . . . . . . . . . . . . . . . .
289
.
.
.
.
15 Modelli di Computazione Quantistica
15.1 Dalla macchina di Turing classica a quella
quantistica . . . . . . . . . . . . . . . . .
15.1.1 Macchina di Turing reversibile . .
15.1.2 Macchina di Turing quantistica . .
15.2 Classi di complessità quantistiche . . . .
15.3 Porte logiche quantistiche . . . . . . . . .
15.4 Circuiti quantistici . . . . . . . . . . . .
15.4.1 Insiemi universali . . . . . . . . .
15.4.2 Aritmetica con circuiti quantistici
15.5 Esercizi . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
291
291
295
300
300
303
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
303
304
305
310
312
315
315
320
321
16 Algoritmi Quantistici
16.1 Algoritmo di Deutsch-Jozsa . . . . . . . . .
16.2 Algoritmo di Simon . . . . . . . . . . . . . .
16.3 Trasformata di Fourier quantistica . . . . . .
16.4 Algoritmo di fattorizzazione (Shor) . . . . . .
16.4.2 Il caso generale . . . . . . . . . . . .
16.4.4 Il problema del sottogruppo nascosto
16.5 Algoritmo di ricerca (Grover) . . . . . . . . .
16.5.1 Interpretazione geometrica . . . . . .
16.6 I limiti della computazione quantistica . . . .
16.7 Conclusioni . . . . . . . . . . . . . . . . . .
16.8 Esercizi . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
323
323
325
326
330
334
338
338
340
342
345
346
!"#"$$%
Il libro introduce e discute due argomenti fondamentali, che hanno accompagnato e anzi preceduto la nascita e lo sviluppo dell’Informatica e dei moderni
“calcolatori”:
1) che cosa si può calcolare?
2) che cosa si può calcolare a costi accessibili?
L’esistenza di problemi che non si possono risolvere in alcun modo, oppure richiedono risorse praticamente indisponibili per la loro soluzione, avvalora l’interesse
ad approfondire e possibilmente chiarire le due questioni. A esse si aggiunge in
modo naturale una terza domanda:
3) può il progresso delle teorie Þsiche intervenire anche sugli aspetti teorici della
computazione?
Il libro affronta nell’ordine i tre argomenti, dedicando a ciascuno una delle sue
parti:
1) tratta dapprima la teoria della computabilità, fornisce e confronta varie possibili risposte alla prima domanda, da quelle classiche (macchine di Turing,
grammatiche, funzioni ricorsive) ad altre più recenti, legate all’evoluzione dei
linguaggi di programmazione;
2) considera poi la teoria della complessità computazionale, discute cioè il tema
dei costi di una computazione, dei possibili criteri (tempo, memoria, casualità)
che li misurano, delle varie classi di problemi che si possono conseguentemente formare e delle relazioni che intercorrono tra queste classi;
3) introduce inÞne l’argomento relativamente nuovo della computazione quantistica, mostrando come i progressi della meccanica quantistica possano indurre
a profonde revisioni e rivisitazioni del concetto di complessità.
Le tre parti del libro corrispondono in modo naturale a tre corsi separati e successivi secondo l’attuale ordinamento universitario:
1) è argomento per un corso di primo livello in una Laurea Triennale in Informatica, ma interessa anche Matematica e Fisica;
2) fornisce materiale per un corso specialistico di Informatica, o eventualmente
per un corso Þnale della laurea triennale in Informatica, ma, di nuovo, si adatta
senza difÞcoltà a lauree in Matematica e Fisica;
3) è la base per corsi specialistici o di dottorato, ancora in Fisica, Matematica,
Informatica.
Intersezioni con lauree in Ingegneria Informatica sono anche possibili. Anche i
prerequisiti richiesti per le tre parti variano; in particolare le nozioni e gli strumenti
di Matematica e Fisica necessari per 3) sono ovviamente superiori a quelli richiesti
in precedenza.
Gli autori conÞdano che il loro lavoro possa riuscire di utilità e interesse a quanti
vorranno considerarlo.