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.