Sei sulla pagina 1di 16

i

i
hopcroft 2009/1/30 11:37 page iii #3

John E. Hopcroft
Rajeev Motwani
Jeffrey D. Ullman

Automi, linguaggi e calcolabilit


Terza edizione
Edizione italiana a cura di Giovanni Pighizzini

i
i

i
hopcroft 2009/1/11 22:35 page iv #4

c 2009 Pearson Paravia Bruno Mondadori S.p.A.


Authorized translation from the English language edition, entitled: Introduction to Automata Theory,
Languages, and Computation, 3nd Edition by Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D.,
published by Pearson Education, Inc., publishing as Addison Wesley, Copyright c 2007.
Italian language edition published by Pearson Paravia Bruno Mondadori S.p.A.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education, Inc. Copyright c 2009.
Le informazioni contenute in questo libro sono state vericate e documentate con la massima cura possibile.
Nessuna responsabilit derivante dal loro utilizzo potr venire imputata allAutore, a Pearson Paravia Bruno
Mondadori S.p.A. o a ogni persona e societ coinvolta nella creazione, produzione e distribuzione di questo
libro.
Per i passi antologici, per le citazioni, per le riproduzioni grache, cartograche e fotograche appartenenti
alla propriet di terzi, inseriti in questopera, leditore a disposizione degli aventi diritto non potuti reperire
nonch per eventuali non volute omissioni e/o errori di attribuzione nei riferimenti.
I diritti di riproduzione e di memorizzazione elettronica totale e parziale con qualsiasi mezzo, compresi i
microlm e le copie fotostatiche, sono riservati per tutti i paesi. LA FOTOCOPIATURA DEI LIBRI UN
REATO. Le fotocopie per uso personale del lettore possono essere effettuate nei limiti del 15% di ciascun
volume dietro pagamento alla SIAE del compenso previsto dallart. 68, commi 4 e 5, della legge 22 aprile
1941 n. 633. Le riproduzioni effettuate per nalit di carattere professionale, economico o commerciale o
comunque per uso diverso da quello personale possono essere effettuate a seguito di specica autorizzazione
rilasciata da AIDRO, corso di Porta Romana n. 108, 20122 Milano, e-mail segreteria@aidro.org e sito
web www.aidro.org.

Curatore per ledizione italiana: Giovanni Pighizzini


Copy-editing: Federica Sonzogno
Composizione: Giovanni Pighizzini
Graca di copertina: Nicol Cannizzaro
Stampa: Tip.Le.Co - S. Bonico (PC)
Tutti i marchi citati nel testo sono di propriet dei loro detentori.
978-88-7192-552-3
Printed in Italy
3a edizione: marzo 2009
Ristampa
00 01 02 03 04

Anno
09 10 11 12 13

i
i

i
hopcroft 2009/1/11 22:35 page v #5

Sommario

Prefazione alledizione italiana

xv

Prefazione
1

Automi: metodo e follia


1.1
Perch studiare la teoria degli automi . . . . . . . . . . . .
1.1.1 Introduzione agli automi a stati niti . . . . . . . .
1.1.2 Rappresentazioni strutturali . . . . . . . . . . . . .
1.1.3 Automi e complessit . . . . . . . . . . . . . . . .
1.2
Introduzione alle dimostrazioni formali . . . . . . . . . . .
1.2.1 Dimostrazioni deduttive . . . . . . . . . . . . . . .
1.2.2 Riduzione a denizioni . . . . . . . . . . . . . . .
1.2.3 Altre forme di teorema . . . . . . . . . . . . . . .
1.2.4 Teoremi che non assomigliano a enunciati se-allora
1.3
Altre forme di dimostrazione . . . . . . . . . . . . . . . .
1.3.1 Dimostrazioni di uguaglianza tra insiemi . . . . . .
1.3.2 Il contronominale . . . . . . . . . . . . . . . . . .
1.3.3 Dimostrazioni per assurdo . . . . . . . . . . . . .
1.3.4 Controesempi . . . . . . . . . . . . . . . . . . . .
1.4
Dimostrazioni induttive . . . . . . . . . . . . . . . . . . .
1.4.1 Induzione sugli interi . . . . . . . . . . . . . . . .
1.4.2 Forme pi generali di induzione sugli interi . . . .
1.4.3 Induzione strutturale . . . . . . . . . . . . . . . .
1.4.4 Induzione mutua . . . . . . . . . . . . . . . . . . .
1.5
I concetti centrali della teoria degli automi . . . . . . . . .
1.5.1 Alfabeto . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 Stringa . . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 Linguaggio . . . . . . . . . . . . . . . . . . . . .
1.5.4 Problema . . . . . . . . . . . . . . . . . . . . . .

xvii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
2
2
4
5
5
6
8
9
13
13
13
15
16
17
18
18
21
22
25
27
27
28
29
30

i
i

i
hopcroft 2009/1/11 22:35 page vi #6

vi Sommario
1.6
1.7
2

Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Automi a stati niti


2.1
Una descrizione informale degli automi a stati niti . . . . . . . . . . . . .
2.1.1 Le regole fondamentali . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2 Il protocollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3 Automi che possono ignorare azioni . . . . . . . . . . . . . . . . .
2.1.4 Lintero sistema come automa . . . . . . . . . . . . . . . . . . . .
2.1.5 Validazione del protocollo mediante lautoma prodotto . . . . . . .
2.2
Automi a stati niti deterministici . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Denizione di automa a stati niti deterministico . . . . . . . . . .
2.2.2 Elaborazione di stringhe in un DFA . . . . . . . . . . . . . . . . . .
2.2.3 Notazioni pi semplici per i DFA . . . . . . . . . . . . . . . . . . .
2.2.4 Estensione della funzione di transizione alle stringhe . . . . . . . .
2.2.5 Il linguaggio di un DFA . . . . . . . . . . . . . . . . . . . . . . . .
2.2.6 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3
Automi a stati niti nondeterministici . . . . . . . . . . . . . . . . . . . . .
2.3.1 Descrizione informale degli automi a stati niti nondeterministici . .
2.3.2 Denizione di automa a stati niti nondeterministico . . . . . . . .
2.3.3 La funzione di transizione estesa . . . . . . . . . . . . . . . . . . .
2.3.4 Il linguaggio di un NFA . . . . . . . . . . . . . . . . . . . . . . . .
2.3.5 Equivalenza di automi a stati niti deterministici e nondeterministici
2.3.6 Un caso sfavorevole di costruzione per sottoinsiemi . . . . . . . . .
2.3.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4
Unapplicazione: ricerche testuali . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Ricerca di stringhe in un testo . . . . . . . . . . . . . . . . . . . . .
2.4.2 Automi a stati niti nondeterministici per ricerche testuali . . . . . .
2.4.3 Un DFA per riconoscere un insieme di parole chiave . . . . . . . . .
2.4.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5
Automi a stati niti con epsilon-transizioni . . . . . . . . . . . . . . . . . .
2.5.1 Uso delle -transizioni . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 La notazione formale per gli -NFA . . . . . . . . . . . . . . . . .
2.5.3 Epsilon-chiusure . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.4 Transizioni estese e linguaggi per gli -NFA . . . . . . . . . . . . .
2.5.5 Eliminazione delle -transizioni . . . . . . . . . . . . . . . . . . . .
2.5.6 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

35
36
36
37
39
40
42
43
43
44
45
46
50
50
53
53
54
55
56
58
62
63
65
66
66
67
69
69
70
71
71
73
74
77
77
78

i
i

i
hopcroft 2009/1/11 22:35 page vii #7

Sommario vii
3

Espressioni e linguaggi regolari


3.1
Espressioni regolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Gli operatori delle espressioni regolari . . . . . . . . . . . . . . . .
3.1.2 Costruzione di espressioni regolari . . . . . . . . . . . . . . . . . .
3.1.3 Precedenza degli operatori delle espressioni regolari . . . . . . . . .
3.1.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
Automi a stati niti ed espressioni regolari . . . . . . . . . . . . . . . . . .
3.2.1 Dai DFA alle espressioni regolari . . . . . . . . . . . . . . . . . . .
3.2.2 Conversione di DFA in espressioni regolari per eliminazione di stati
3.2.3 Conversione di espressioni regolari in automi . . . . . . . . . . . .
3.2.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3
Applicazioni delle espressioni regolari . . . . . . . . . . . . . . . . . . . .
3.3.1 Le espressioni regolari in UNIX . . . . . . . . . . . . . . . . . . .
3.3.2 Analisi lessicale . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3 Ricerca di pattern in un testo . . . . . . . . . . . . . . . . . . . . .
3.3.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4
Propriet algebriche per le espressioni regolari . . . . . . . . . . . . . . . .
3.4.1 Associativit e commutativit . . . . . . . . . . . . . . . . . . . . .
3.4.2 Identit e annichilatori . . . . . . . . . . . . . . . . . . . . . . . .
3.4.3 Distributivit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.4 Idempotenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.5 Propriet relative alla chiusura . . . . . . . . . . . . . . . . . . . .
3.4.6 Alla ricerca di propriet per le espressioni regolari . . . . . . . . . .
3.4.7 Verica di propriet algebriche sulle espressioni regolari . . . . . .
3.4.8 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

79
79
80
82
84
85
86
86
91
97
101
103
103
104
106
108
109
109
110
110
111
112
112
114
116
117
117

Propriet dei linguaggi regolari


4.1
Dimostrare che un linguaggio non regolare . . . . . . . . . . . . . .
4.1.1 Il pumping lemma per i linguaggi regolari . . . . . . . . . . .
4.1.2 Applicazioni del pumping lemma . . . . . . . . . . . . . . . .
4.1.3 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2
Propriet di chiusura dei linguaggi regolari . . . . . . . . . . . . . . .
4.2.1 Chiusura dei linguaggi regolari rispetto a operazioni booleane .
4.2.2 Inversione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Omomorsmi . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4 Omomorsmi inversi . . . . . . . . . . . . . . . . . . . . . .
4.2.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3
Problemi di decisione per i linguaggi regolari . . . . . . . . . . . . . .
4.3.1 Conversioni . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Vericare se un linguaggio regolare vuoto . . . . . . . . . .
4.3.3 Appartenenza a un linguaggio regolare . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

119
119
120
121
123
124
125
130
132
133
138
141
142
144
145

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

i
i

i
hopcroft 2009/1/11 22:35 page viii #8

viii Sommario
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

146
146
146
149
151
154
156
156
157

Grammatiche e linguaggi liberi dal contesto


5.1
Grammatiche libere dal contesto . . . . . . . . . . . . . . . . . . .
5.1.1 Un esempio informale . . . . . . . . . . . . . . . . . . . . .
5.1.2 Denizione delle grammatiche libere dal contesto . . . . . .
5.1.3 Derivazioni per mezzo di una grammatica . . . . . . . . . .
5.1.4 Derivazioni a sinistra e a destra . . . . . . . . . . . . . . . .
5.1.5 Il linguaggio di una grammatica . . . . . . . . . . . . . . .
5.1.6 Forme sentenziali . . . . . . . . . . . . . . . . . . . . . . .
5.1.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2
Alberi sintattici . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Costruzione di alberi sintattici . . . . . . . . . . . . . . . .
5.2.2 Il prodotto di un albero sintattico . . . . . . . . . . . . . . .
5.2.3 Inferenza, derivazioni e alberi sintattici . . . . . . . . . . . .
5.2.4 Dalle inferenze agli alberi . . . . . . . . . . . . . . . . . . .
5.2.5 Dagli alberi alle derivazioni . . . . . . . . . . . . . . . . . .
5.2.6 Dalle derivazioni alle inferenze ricorsive . . . . . . . . . . .
5.2.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3
Applicazioni delle grammatiche libere dal contesto . . . . . . . . . .
5.3.1 Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.2 YACC: un generatore di parser . . . . . . . . . . . . . . . .
5.3.3 Linguaggi di markup . . . . . . . . . . . . . . . . . . . . .
5.3.4 XML e DTD . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4
Ambiguit nelle grammatiche e nei linguaggi . . . . . . . . . . . . .
5.4.1 Grammatiche ambigue . . . . . . . . . . . . . . . . . . . .
5.4.2 Eliminare le ambiguit da una grammatica . . . . . . . . . .
5.4.3 Derivazioni a sinistra come modo per esprimere lambiguit
5.4.4 Ambiguit inerente . . . . . . . . . . . . . . . . . . . . . .
5.4.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

159
159
160
161
163
165
167
168
169
171
171
173
174
175
176
180
181
182
182
184
185
188
194
195
195
197
200
201
203
204
205

4.4

4.5
4.6
5

4.3.4 Esercizi . . . . . . . . . . . . . . . . . . . . . .
Equivalenza e minimizzazione di automi . . . . . . . . .
4.4.1 Verica dellequivalenza di stati . . . . . . . . .
4.4.2 Equivalenza di linguaggi regolari . . . . . . . . .
4.4.3 Minimizzazione di DFA . . . . . . . . . . . . . .
4.4.4 Perch il DFA minimo non pu essere migliorato
4.4.5 Esercizi . . . . . . . . . . . . . . . . . . . . . .
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

i
i

i
hopcroft 2009/1/11 22:35 page ix #9

Sommario ix
6

Automi a pila
6.1
Denizione di automa a pila . . . . . . . . . . .
6.1.1 Introduzione informale . . . . . . . . .
6.1.2 Denizione formale di automa a pila . .
6.1.3 Una notazione graca per i PDA . . . .
6.1.4 Descrizioni istantanee di un PDA . . . .
6.1.5 Esercizi . . . . . . . . . . . . . . . . .
6.2
I linguaggi di un PDA . . . . . . . . . . . . . .
6.2.1 Accettazione per stato nale . . . . . .
6.2.2 Accettazione per stack vuoto . . . . . .
6.2.3 Da stack vuoto a stato nale . . . . . .
6.2.4 Da stato nale a stack vuoto . . . . . .
6.2.5 Esercizi . . . . . . . . . . . . . . . . .
6.3
Equivalenza di PDA e CFG . . . . . . . . . . .
6.3.1 Dalle grammatiche agli automi a pila . .
6.3.2 Dai PDA alle grammatiche . . . . . . .
6.3.3 Esercizi . . . . . . . . . . . . . . . . .
6.4
Automi a pila deterministici . . . . . . . . . . .
6.4.1 Denizione di PDA deterministico . . .
6.4.2 Linguaggi regolari e PDA deterministici
6.4.3 DPDA e linguaggi liberi dal contesto . .
6.4.4 DPDA e grammatiche ambigue . . . . .
6.4.5 Esercizi . . . . . . . . . . . . . . . . .
6.5
Riepilogo . . . . . . . . . . . . . . . . . . . . .
6.6
Bibliograa . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

207
207
207
209
211
212
215
216
217
218
218
221
223
224
225
228
232
233
234
234
236
236
237
238
239

Propriet dei linguaggi liberi dal contesto


7.1
Forme normali per grammatiche libere dal contesto .
7.1.1 Eliminazione di simboli inutili . . . . . . . .
7.1.2 Calcolo dei simboli generatori e raggiungibili
7.1.3 Eliminazione di -produzioni . . . . . . . . .
7.1.4 Eliminazione delle produzioni unitarie . . . .
7.1.5 Forma normale di Chomsky . . . . . . . . . .
7.1.6 Esercizi . . . . . . . . . . . . . . . . . . . .
7.2
Il pumping lemma per i linguaggi liberi dal contesto .
7.2.1 Dimensione degli alberi sintattici . . . . . . .
7.2.2 Enunciato del pumping lemma . . . . . . . .
7.2.3 Applicazioni del pumping lemma per i CFL .
7.2.4 Esercizi . . . . . . . . . . . . . . . . . . . .
7.3
Propriet di chiusura dei linguaggi liberi dal contesto
7.3.1 Sostituzione . . . . . . . . . . . . . . . . . .
7.3.2 Applicazioni del teorema di sostituzione . . .
7.3.3 Inversione . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

241
241
242
243
244
248
252
255
259
259
260
262
264
266
266
268
269

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

i
i

i
hopcroft 2009/1/11 22:35 page x #10

x Sommario

7.4

7.5
7.6
8

7.3.4 Intersezione con un linguaggio regolare . . . . . . . . . . . . . . . .


7.3.5 Omomorsmo inverso . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3.6 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propriet di decisione dei CFL . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.1 Complessit delle conversioni fra CFG e PDA . . . . . . . . . . . . .
7.4.2 Tempo di esecuzione della conversione in forma normale di Chomsky
7.4.3 Vericare se un CFL vuoto . . . . . . . . . . . . . . . . . . . . . .
7.4.4 Appartenenza a un CFL . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.5 Anteprima di problemi indecidibili per i CFL . . . . . . . . . . . . .
7.4.6 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Macchine di Turing: introduzione


8.1
Problemi che i calcolatori non possono risolvere . . . . . . . . . . .
8.1.1 Programmi che stampano Ciao, mondo . . . . . . . . . .
8.1.2 Un ipotetico vericatore di ciao-mondo . . . . . . . . . . .
8.1.3 Ridurre un problema a un altro . . . . . . . . . . . . . . . .
8.1.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2
La macchina di Turing . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1 La ricerca della soluzione a tutte le domande matematiche .
8.2.2 Notazione per la macchina di Turing . . . . . . . . . . . . .
8.2.3 Descrizioni istantanee delle macchine di Turing . . . . . . .
8.2.4 Diagrammi di transizione per le macchine di Turing . . . . .
8.2.5 Il linguaggio di una macchina di Turing . . . . . . . . . . .
8.2.6 Le macchine di Turing e larresto . . . . . . . . . . . . . . .
8.2.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3
Tecniche di programmazione per le macchine di Turing . . . . . . .
8.3.1 Memoria nello stato . . . . . . . . . . . . . . . . . . . . . .
8.3.2 Tracce multiple . . . . . . . . . . . . . . . . . . . . . . . .
8.3.3 Subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4
Estensioni alla macchina di Turing semplice . . . . . . . . . . . . .
8.4.1 Macchine di Turing multinastro . . . . . . . . . . . . . . . .
8.4.2 Equivalenza di macchine di Turing mononastro e multinastro
8.4.3 Tempo di esecuzione e costruzione da n a un nastro . . . . .
8.4.4 Macchine di Turing nondeterministiche . . . . . . . . . . .
8.4.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.5
Macchine di Turing ristrette . . . . . . . . . . . . . . . . . . . . . .
8.5.1 Macchine di Turing con nastri semi-inniti . . . . . . . . . .
8.5.2 Macchine multistack . . . . . . . . . . . . . . . . . . . . .
8.5.3 Macchine a contatori . . . . . . . . . . . . . . . . . . . . .
8.5.4 La potenza delle macchine a contatori . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

269
273
275
277
277
279
280
281
285
285
286
287

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

289
289
290
292
295
298
298
299
300
301
304
308
308
309
311
311
312
314
315
317
317
318
319
321
322
325
325
328
330
331

i
i

i
hopcroft 2009/1/11 22:35 page xi #11

Sommario xi

8.6

8.7
8.8
9

8.5.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le macchine di Turing e i computer . . . . . . . . . . . . . . . . . . . . . . .
8.6.1 Simulazione di una macchina di Turing da parte di un computer . . .
8.6.2 Simulazione di un computer da parte di una macchina di Turing . . .
8.6.3 Confronto dei tempi di esecuzione dei computer e delle macchine di
Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Indecidibilit
9.1
Un linguaggio non ricorsivamente enumerabile . . . . . . . . . .
9.1.1 Enumerazione delle stringhe binarie . . . . . . . . . . .
9.1.2 Codici per le macchine di Turing . . . . . . . . . . . . .
9.1.3 Il linguaggio di diagonalizzazione . . . . . . . . . . . .
9.1.4 Dimostrazione che Ld non ricorsivamente enumerabile
9.1.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2
Un problema indecidibile ma ricorsivamente enumerabile . . . .
9.2.1 Linguaggi ricorsivi . . . . . . . . . . . . . . . . . . . .
9.2.2 Complementi di linguaggi ricorsivi e RE . . . . . . . . .
9.2.3 Il linguaggio universale . . . . . . . . . . . . . . . . . .
9.2.4 Indecidibilit del linguaggio universale . . . . . . . . . .
9.2.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
9.3
Problemi indecidibili relativi alle macchine di Turing . . . . . .
9.3.1 Riduzioni . . . . . . . . . . . . . . . . . . . . . . . . .
9.3.2 Macchine di Turing che accettano il linguaggio vuoto . .
9.3.3 Il teorema di Rice e le propriet dei linguaggi RE . . . .
9.3.4 Problemi sulle speciche di macchine di Turing . . . . .
9.3.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4
Il problema di corrispondenza di Post . . . . . . . . . . . . . . .
9.4.1 Denizione del problema di corrispondenza di Post . . .
9.4.2 PCP modicato . . . . . . . . . . . . . . . . . . . . . .
9.4.3 Dimostrazione di indecidibilit di PCP: conclusione . . .
9.4.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
9.5
Altri problemi indecidibili . . . . . . . . . . . . . . . . . . . . .
9.5.1 Problemi relativi a programmi . . . . . . . . . . . . . .
9.5.2 Indecidibilit dellambiguit delle CFG . . . . . . . . .
9.5.3 Il complemento di un linguaggio associato a una lista . .
9.5.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.7
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

333
334
334
336

. 340
. 342
. 344

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

347
348
349
349
350
351
352
353
353
354
357
359
360
362
362
364
366
369
369
371
371
373
376
381
382
382
382
384
387
388
389

i
i

i
hopcroft 2009/1/11 22:35 page xii #12

xii Sommario
10 Problemi intrattabili
10.1 Le classi P e N P . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.1 Problemi risolvibili in tempo polinomiale . . . . . . . . .
10.1.2 Un esempio: lalgoritmo di Kruskal . . . . . . . . . . . .
10.1.3 Tempo polinomiale nondeterministico . . . . . . . . . . .
10.1.4 Un esempio in N P: il problema del commesso viaggiatore
10.1.5 Riduzioni polinomiali . . . . . . . . . . . . . . . . . . . .
10.1.6 Problemi NP-completi . . . . . . . . . . . . . . . . . . .
10.1.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Un problema NP-completo . . . . . . . . . . . . . . . . . . . . .
10.2.1 Il problema della soddisfacibilit . . . . . . . . . . . . . .
10.2.2 Rappresentazione di istanze di SAT . . . . . . . . . . . . .
10.2.3 NP-completezza del problema SAT . . . . . . . . . . . . .
10.2.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3 Una versione ristretta di soddisfacibilit . . . . . . . . . . . . . .
10.3.1 Forme normali di espressioni booleane . . . . . . . . . . .
10.3.2 Conversione in CNF di espressioni booleane . . . . . . . .
10.3.3 NP-completezza di CSAT . . . . . . . . . . . . . . . . . .
10.3.4 NP-completezza di 3SAT . . . . . . . . . . . . . . . . . .
10.3.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.4 Altri problemi NP-completi . . . . . . . . . . . . . . . . . . . . .
10.4.1 Descrivere problemi NP-completi . . . . . . . . . . . . .
10.4.2 Il problema dellinsieme indipendente . . . . . . . . . . .
10.4.3 Il problema della copertura per nodi . . . . . . . . . . . .
10.4.4 Il problema del circuito hamiltoniano orientato . . . . . . .
10.4.5 Circuiti hamiltoniani non orientati e TSP . . . . . . . . . .
10.4.6 Riepilogo dei problemi NP-completi . . . . . . . . . . . .
10.4.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.5 Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.6 Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

391
392
393
393
396
397
398
399
401
403
403
405
406
411
412
413
414
416
421
422
423
423
424
427
429
435
436
437
441
441

11 Altre classi di problemi


11.1 Complementi dei linguaggi in N P . . . . . . . . . . . . . . .
11.1.1 La classe di linguaggi co-N P . . . . . . . . . . . . .
11.1.2 Problemi NP-completi e co-N P . . . . . . . . . . . .
11.1.3 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . .
11.2 Problemi risolvibili in spazio polinomiale . . . . . . . . . . . .
11.2.1 Macchine di Turing in spazio polinomiale . . . . . . .
11.2.2 Le relazioni di PS e N PS con altre classi . . . . . . .
11.2.3 Spazio polinomiale deterministico e nondeterministico
11.3 Un problema completo per PS . . . . . . . . . . . . . . . . .
11.3.1 PS-completezza . . . . . . . . . . . . . . . . . . . . .
11.3.2 Formule booleane con quanticatori . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

443
444
444
445
446
447
447
448
449
451
451
453

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

i
i

i
hopcroft 2009/1/11 22:35 page xiii #13

Sommario xiii

11.4

11.5

11.6
11.7

11.3.3 Valutazione di formule booleane con quanticatori . . .


11.3.4 PS-completezza del problema QBF . . . . . . . . . . . .
11.3.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
Classi di linguaggi basate sulla randomizzazione . . . . . . . . .
11.4.1 Quicksort: un esempio di algoritmo randomizzato . . . .
11.4.2 Un modello di macchina di Turing con randomizzazione
11.4.3 Il linguaggio di una macchina di Turing randomizzata . .
11.4.4 La classe RP . . . . . . . . . . . . . . . . . . . . . . .
11.4.5 Riconoscimento di linguaggi in RP . . . . . . . . . . .
11.4.6 La classe ZPP . . . . . . . . . . . . . . . . . . . . . .
11.4.7 Relazioni tra RP e ZPP . . . . . . . . . . . . . . . . .
11.4.8 Relazioni con le classi P e N P . . . . . . . . . . . . . .
Complessit e numeri primi . . . . . . . . . . . . . . . . . . . .
11.5.1 Limportanza della verica di primalit . . . . . . . . . .
11.5.2 Introduzione allaritmetica modulare . . . . . . . . . . .
11.5.3 La complessit del calcolo in aritmetica modulare . . . .
11.5.4 Verica di primalit in tempo polinomiale randomizzato .
11.5.5 Veriche di primalit nondeterministiche . . . . . . . . .
11.5.6 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . .
Riepilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A La gerarchia di Chomsky
A.1 Grammatiche . . . . . . . . . . . . . . . . . . . . . .
A.1.1 Denizione di grammatica . . . . . . . . . .
A.1.2 Derivazioni e linguaggi . . . . . . . . . . . .
A.2 Tipi di grammatiche e gerarchia di Chomsky . . . . .
A.2.1 Linguaggi di tipo 0 . . . . . . . . . . . . . .
A.2.2 Linguaggi di tipo 1 o dipendenti dal contesto .
A.2.3 Linguaggi di tipo 2 e di tipo 3 . . . . . . . . .
A.3 Bibliograa . . . . . . . . . . . . . . . . . . . . . .
Indice analitico

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

454
456
460
461
461
462
463
465
467
468
469
470
470
471
473
475
476
477
480
480
482

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

485
485
486
487
488
490
490
491
492
493

i
i

i
hopcroft 2009/1/11 22:35 page xv #15

Prefazione alledizione italiana

Questo libro ha una lunga storia. Nel 1969, John E. Hopcroft e Jeffrey D. Ullman pubblicarono
per Addison-Wesley Formal Languages and Their Relation to Automata, uno dei primi libri
dedicati alla presentazione sistematica della teoria dei linguaggi formali e degli automi. Il volume, completamente rivisto e notevolmente arricchito, venne riproposto nel 1979 dagli stessi
autori e per lo stesso editore con il titolo Introduction to Automata Theory, Languages, and
Computation. Dopo pi di ventanni, nel 2001, venne pubblicata una nuova edizione, questa
volta anche con il contributo di Rajeev Motwani, profondamente modicata sia per la scelta dei
contenuti (in gran parte ridotti rispetto alle edizioni precedenti), sia per lo stile della presentazione, meno formale. Rimandiamo alla prefazione degli Autori per le motivazioni che li hanno
indotti a questa scelta.
sorprendente che questo famoso libro sia apparso in edizione italiana solo nel 2003, grazie a Pearson Education che ha tradotto la seconda edizione. Questo volume, seconda edizione italiana, frutto di una completa revisione della edizione italiana precedente, nonch di un
aggiornamento alla terza edizione americana, pubblicata nel 2007.
Per completezza, ho ritenuto utile integrare questa edizione scrivendo una breve appendice
relativa alle grammatiche e alla gerarchia di Chomsky. Questo argomento, forse snobbato negli
Stati Uniti, in genere presentato nei corsi di Linguaggi Formali delle universit italiane ed
utile per fornire un inquadramento pi preciso e completo di queste tematiche. Inoltre ritengo
che sia un interessante arricchimento (che tra laltro non richiede molto spazio n molto tempo
per la presentazione in un corso) alla formazione culturale degli studenti, che pu fornire uno
stimolo per ulteriori letture e approfondimenti a chi sia pi interessato a questi argomenti.
Come affermato dagli Autori nella prefazione, il ruolo della teoria degli automi e dei linguaggi cambiato negli ultimi venti anni. La disciplina ampiamente riconosciuta come fondazionale
nellinformatica. Gli automi e i linguaggi sono gli strumenti formali di riferimento per svariati
settori e applicazioni. Tuttavia, a differenza di quanto affermato nella prefazione scritta dagli
Autori, voglio sottolineare che esiste tuttora una fervida attivit di ricerca in questarea, che ha
ricevuto proprio in questi ultimi anni nuovi signicativi contributi. Allo stesso tempo, doveroso
segnalare che molti problemi rilevanti sono tuttora aperti.1
1 Per approfondimenti su questi punti, si veda ad esempio S. Yu A renaissance of Automata Theory?, Bulletin
of EATCS 72 (2000), pp. 270-272, e J. Hromkovi Descriptional complexity of nite automata: concepts and open
c
problems, Journal of Automata, Languages and Combinatorics 7 (2002), pp. 519-531.

i
i

i
hopcroft 2009/1/11 22:35 page xvi #16

xvi Prefazione alledizione italiana


Ritengo questo libro uno strumento prezioso, contenente argomenti che devono fare necessariamente parte del bagaglio culturale di ogni laureato (anche di primo livello) nel settore informatico. Il libro permeato dallo sforzo continuo di fornire, accanto alla teoria, esempi reali e pratici, al ne di mostrare come gli automi e i linguaggi formali siano fondamentali nellinformatica,
anche a livello delle applicazioni.
Tra la pubblicazione della seconda e della terza edizione americana, vi stata unimportante
novit, che tra laltro unulteriore conferma della vitalit e dellimportanza del settore. Allinizio di questo nuovo millennio stata fatta limportante scoperta che la verica di primalit pu
essere effettuata in tempo polinomiale. In questa terza edizione, lultimo capitolo, dedicato in
gran parte al test di primalit, stato modicato menzionando brevemente questo nuovo risultato.
Dalla versione americana traspare un certo rammarico da parte degli Autori per questa scoperta.
In effetti essa va nella direzione opposta rispetto a quanto stato creduto (e insegnato come probabilmente vero) per lungo tempo da molti. Ulteriori progressi in questa direzione potrebbero
avere importanti e sconvolgenti implicazioni. Se ad esempio venisse trovato un algoritmo deterministico che in tempo polinomiale trova i fattori di un numero composto, i sistemi crittograci
attualmente utilizzati risulterebbero immediatamente insicuri.

Ringraziamenti
Desidero ringraziare Pearson Education per la ducia con la quale mi ha afdato la revisione
di questo libro. Ringrazio in particolare Marlene Farina che ha dato lavvio a questo progetto
e Alessandra Piccardo che ne ha curato la prosecuzione, Micaela Guerra per la gestione precisa e puntuale delle questioni organizzative e per la tempestivit nel rispondere a ogni genere di domanda, Federica Sonzogno per gli utili e preziosi suggerimenti riguardanti lo stile e
limpaginazione.

Giovanni Pighizzini
Milano, febbraio 2009

i
i

i
hopcroft 2009/1/11 22:35 page xvii #17

Prefazione

Nella prefazione alledizione del 1979 di questo libro, Hopcroft e Ullman si mostravano sorpresi
di fronte al orire degli studi sugli automi rispetto alla situazione del 1969, anno in cui veniva
pubblicato il loro primo volume. In effetti il libro del 1979 trattava numerosi argomenti nuovi
ed era lungo circa il doppio. Paragonata a quella del 1979, si scopre che la presente edizione,
come le automobili degli anni 70, pi grande fuori e pi piccola dentro. Pu sembrare
uninvoluzione, ma questa nuova veste ci soddisfa per diverse ragioni.
Innanzitutto nel 1979 la teoria degli automi e dei linguaggi era ancora unarea vitale di ricerca, e quel libro aveva anche lo scopo di incoraggiare gli studenti tagliati per la matematica a dare
un contributo attivo. Rispetto alle applicazioni, la ricerca pura nella teoria degli automi attualmente limitata; non c pi motivo, quindi, di conservare lo stile conciso e pi matematico del
libro del 1979.
In secondo luogo il ruolo della teoria degli automi e dei linguaggi negli ultimi ventanni
cambiato. Nel 1979 lo studio degli automi era riservato perlopi a studenti degli ultimi anni di un
corso di laurea che avevano intrapreso un indirizzo specico; essi formavano perci il pubblico
di riferimento, soprattutto per gli ultimi capitoli. Oggi questo tipo di studi parte integrante del
curriculum di base di un corso di laurea. Di conseguenza la scelta dei contenuti deve presupporre
che lo studente abbia un bagaglio di conoscenze inferiore, e fornire pi nozioni fondamentali e
maggiori dettagli nelle dimostrazioni.
Un terzo cambiamento riguarda il contesto: negli ultimi ventanni linformatica ha raggiunto
un livello quasi inimmaginabile. Nel 1979 era spesso difcile trovare argomenti in grado di
superare la successiva ondata di progresso tecnologico e sufcienti a riempire un piano di studi;
oggi lo spazio limitato del piano di studi di un corso di laurea conteso da un numero elevato di
discipline.
Un quarto motivo che la scelta di studiare informatica appare sempre pi legata a obiettivi
concreti e fra gli studenti si diffuso un rigido pragmatismo. Siamo ancora convinti che certi
aspetti della teoria degli automi siano strumenti essenziali per diverse nuove discipline e che gli
esercizi di natura teorica e creativa che fanno parte di un tipico corso sugli automi restino utili,
per quanto gli studenti preferiscano apprendere solo le tecniche immediatamente monetizzabili.
Daltra parte, se vogliamo che la materia conservi il suo ruolo tra le discipline proposte agli studenti di informatica, riteniamo indispensabile sottolinearne le applicazioni, accanto agli aspetti
matematici. Abbiamo perci sostituito alcuni fra gli argomenti pi avanzati delledizione pre-

i
i

i
hopcroft 2009/1/11 22:35 page xviii #18

xviii Prefazione
cedente con esempi di come i concetti possono essere applicati nella pratica. Le applicazioni
della teoria degli automi e dei linguaggi formali ai compilatori sono ormai talmente consolidate
da essere di norma trattate nei corsi sui compilatori, ma ci sono impieghi pi recenti, tra cui gli
algoritmi di model-checking per vericare protocolli, e i linguaggi di descrizione di documenti,
strutturati in modo simile alle grammatiche libere dal contesto.
Unultima spiegazione dellampliamento e al contempo riduzione del libro risiede nellimA
piego di due sistemi di composizione tipograca, TEX e LTEX, sviluppati da Don Knuth e Les
Lamport. Uno stile aperto di composizione, che produce libri di mole maggiore, ma di pi
A
agevole lettura, favorito in particolare da LTEX. Gli sforzi dei loro ideatori meritano il nostro
apprezzamento.

Prerequisiti
Per sfruttare al meglio il libro lo studente dovrebbe aver seguito un corso di matematica discreta
e aver acquisito nozioni sui gra, gli alberi, la logica formale e le tecniche di dimostrazione.
Presumiamo inoltre che abbia seguito un corso di programmazione e che conosca le strutture dati
pi comuni, la ricorsione e il ruolo dei componenti pi importanti di un sistema di elaborazione,
tra cui i compilatori. Di solito queste nozioni di base si acquisiscono nei primi due anni di un
corso universitario di informatica.

Esercizi
Il libro contiene numerosi esercizi, distribuiti in quasi tutti i paragra. Gli esercizi, o parti di
esercizi, pi difcili sono indicati da un punto esclamativo o, per i pi ardui, da un doppio punto
esclamativo.
Altri esercizi sono segnalati da un asterisco: le loro soluzioni sono disponibili nella pagina
web del libro e possono servire per valutare il proprio livello di preparazione. In alcuni casi un
esercizio B chiede di modicare o adattare la soluzione di un altro esercizio A. Se alcune parti di
A ammettono soluzione, ci si pu aspettare che lo stesso valga anche per le corrispondenti parti
di B.

Supporto in rete
La home page del libro

http://www-db.stanford.edu/~ullman/ialc.html
Vi si trovano le soluzioni degli esercizi segnalati da un asterisco, gli errata corrige e altro materiale utile. A mano a mano che le lezioni procedono intendiamo pubblicare le dispense del nostro
corso, inclusi esercizi e testi desame.

i
i

i
hopcroft 2009/1/11 22:35 page xix #19

Prefazione xix

Ringraziamenti
La stesura di parte del primo capitolo stata inuenzata da una dispensa di Craig Silverstein
su come scrivere le dimostrazioni. Commenti e segnalazioni di errori sulle bozze della seconda
edizione del libro (2000) sono giunti da Zoe Abrams, George Candea, Haowen Chen, Byong-Gun
Chun, Jeffrey Shallit, Bret Taylor, Jason Townsend ed Erik Uzureau. Abbiamo anche ricevuto
diverse e-mail che segnalavano errori nella seconda edizione di questo libro. Ringraziamo tutti
coloro che ci hanno fatto queste segnalazioni. I loro nomi sono indicati negli errata corrige
pubblicati on-line. Un particolare ringraziamento per le numerose e signicative segnalazioni a
Zeki Bayram, Sebastian Hick, Kang-Rae Lee, Christian Lemburg, Nezam Mahdavi-Amiri, Dave
Maier, A. P. Marathe, Mark Meuleman, Mustafa Sait-Ametov, Alexey Sarytchev, Jukka Suomela,
Rod Topor, Po-Lian Tsai, Tom Whaley, Aaron Windsor, e Jacinth H.T. Wu.
Riconosciamo volentieri il loro contributo. Gli errori che restano sono, ovviamente, da
imputare a noi.

John E. Hopcroft
Rajeev Motwani
Jeffrey D. Ullman
Ithaca NY e Stanford CA, febbraio 2006

i
i