Preface |
|
v | |
Abbreviations |
|
xv | |
|
1 Automata, Formal Languages, and Computability |
|
|
1 | (16) |
|
|
2 | (8) |
|
1.1.1 Phrase Structure Grammars |
|
|
3 | (6) |
|
|
9 | (1) |
|
1.2 Chomsky Classification of Grammars |
|
|
10 | (3) |
|
1.2.1 Classifying the Type of Grammar |
|
|
11 | (2) |
|
|
13 | (4) |
|
|
13 | (4) |
|
2 Mathematical Preliminaries |
|
|
17 | (37) |
|
|
17 | (8) |
|
2.1.1 Cardinality of a Set |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (2) |
|
|
22 | (1) |
|
2.1.10 Properties Related to Set Operations |
|
|
23 | (2) |
|
|
25 | (4) |
|
|
26 | (3) |
|
|
29 | (1) |
|
|
29 | (2) |
|
|
30 | (1) |
|
2.3.2 Composition of Functions |
|
|
31 | (1) |
|
|
31 | (4) |
|
|
31 | (2) |
|
|
33 | (2) |
|
2.4.3 Pigeonhole Principle |
|
|
35 | (1) |
|
|
35 | (5) |
|
2.5.1 Propositions and Logic Operations |
|
|
35 | (2) |
|
2.5.2 Conditional Statements |
|
|
37 | (1) |
|
2.5.3 Properties of Logical Operations |
|
|
38 | (2) |
|
|
40 | (14) |
|
|
41 | (1) |
|
|
41 | (1) |
|
2.6.3 Mathematical Induction |
|
|
42 | (2) |
|
|
44 | (10) |
|
|
54 | (46) |
|
|
55 | (3) |
|
3.1.1 String Processing by Finite Automaton |
|
|
56 | (1) |
|
3.1.2 Language of Finite Automaton |
|
|
57 | (1) |
|
3.2 Extended Transition Function and its Properties |
|
|
58 | (3) |
|
3.3 Deterministic and Nondeterministic Finite Automata |
|
|
61 | (1) |
|
3.3.1 Acceptance of String by NFA |
|
|
62 | (1) |
|
3.4 Equivalence of NFA and DFA |
|
|
62 | (7) |
|
3.4.1 Converting NFA to its Equivalent DFA |
|
|
63 | (4) |
|
3.4.2 Equivalence of DFAs |
|
|
67 | (2) |
|
3.5 Level Equivalence and Reduction in Finite Automata |
|
|
69 | (4) |
|
3.6 Finite Automata with Outputs |
|
|
73 | (3) |
|
3.6.1 Moore and Mealy Machines |
|
|
74 | (1) |
|
3.6.2 Conversion of Moore Machine to Equivalent Mealy Machine |
|
|
74 | (1) |
|
3.6.3 Conversion of Mealy Machine to Equivalent Moore Machine |
|
|
75 | (1) |
|
3.7 Finite Automata with Null Moves |
|
|
76 | (7) |
|
3.7.1 Removal of Null Moves |
|
|
78 | (5) |
|
3.8 Finite Automata and Sequential Circuits |
|
|
83 | (3) |
|
3.8.1 Shift Register as Moore Machine |
|
|
83 | (1) |
|
3.8.2 Shift Register as Mealy Machine |
|
|
84 | (1) |
|
3.8.3 Design Considerations in Moore and Mealy Machines |
|
|
85 | (1) |
|
3.9 Using Finite Automata in Software Design |
|
|
86 | (14) |
|
|
87 | (13) |
|
4 Regular Grammar and Regular Sets |
|
|
100 | (43) |
|
|
100 | (1) |
|
4.2 Correspondence between Regular Expression and Regular Set |
|
|
101 | (3) |
|
4.3 Identities Related to Regular Expressions |
|
|
104 | (1) |
|
4.4 Relation between Regular Languages and Finite Automata |
|
|
105 | (13) |
|
4.4.1 Finite Automaton Corresponding to Regular Expression |
|
|
106 | (6) |
|
4.4.2 Regular Expression Corresponding to Finite Automata |
|
|
112 | (6) |
|
4.5 Closure Properties of Regular Sets |
|
|
118 | (2) |
|
4.6 Automata for Union, Intersection, and Difference of Languages |
|
|
120 | (5) |
|
4.7 Pumping Lemma for Regular Languages |
|
|
125 | (2) |
|
4.7.1 Applications of Pumping Lemma |
|
|
126 | (1) |
|
4.7.2 Suitability of Pumping Lemma |
|
|
127 | (1) |
|
4.8 Production System Associated with Regular Grammar |
|
|
127 | (1) |
|
4.9 Myhill Nerode Theorem (Equivalent Classes and Regular Languages) |
|
|
128 | (2) |
|
4.10 Some Decision Problems Related to Finite Automata and Regular Languages |
|
|
130 | (2) |
|
4.11 Regular Languages and Current Programming Language Scenario |
|
|
132 | (11) |
|
|
133 | (10) |
|
5 Context-free Grammars and Languages |
|
|
143 | (50) |
|
5.1 Some Examples of Recursive Grammars |
|
|
143 | (3) |
|
5.2 Context-free Grammars |
|
|
146 | (17) |
|
5.2.1 Leftmost and Rightmost Derivation of Strings |
|
|
148 | (1) |
|
5.2.2 Some Examples of Context-free Languages and Grammars |
|
|
148 | (2) |
|
5.2.3 Ambiguity in Context-free Grammar and Parse Tree |
|
|
150 | (3) |
|
5.2.4 Possible Defects in CFGs and their Removal |
|
|
153 | (10) |
|
5.3 Context-free Languages as Superset of Regular Languages |
|
|
163 | (3) |
|
5.4 Closure Properties of Context-free Languages |
|
|
166 | (5) |
|
5.4.1 Nonclosure Properties |
|
|
169 | (2) |
|
5.5 Normal Forms for Context-free Grammar |
|
|
171 | (7) |
|
5.5.1 Chomsky Normal Form |
|
|
171 | (3) |
|
5.5.2 Greibach Normal Form |
|
|
174 | (4) |
|
5.6 Pumping Lemma for Context-free Grammars |
|
|
178 | (3) |
|
5.6.1 Applications of Pumping Lemma |
|
|
179 | (1) |
|
|
180 | (1) |
|
5.7 Applications of Context-free Grammars |
|
|
181 | (12) |
|
5.7.1 Programming Language Constructs |
|
|
181 | (2) |
|
5.7.2 Natural Language Constructs |
|
|
183 | (1) |
|
|
184 | (2) |
|
|
186 | (7) |
|
|
193 | (32) |
|
6.1 Basic Structure of Pushdown Automata |
|
|
194 | (9) |
|
6.2 Two Types of Acceptance by PDA |
|
|
203 | (1) |
|
6.3 Correspondence between PDA and CFL |
|
|
204 | (5) |
|
6.3.1 PDA Corresponding to Given CFG |
|
|
204 | (2) |
|
6.3.2 CFG Corresponding to Given PDA |
|
|
206 | (3) |
|
6.3.3 Deterministic PDA and Deterministic CFL |
|
|
209 | (1) |
|
|
209 | (16) |
|
6.4.1 Removal of Left Factoring |
|
|
212 | (1) |
|
6.4.2 Removal of Left Recursion |
|
|
213 | (1) |
|
|
213 | (9) |
|
|
222 | (3) |
|
|
225 | (54) |
|
7.1 Basic Structure and Working of Turing Machine |
|
|
225 | (16) |
|
7.2 Instantaneous Description of Turing Machine |
|
|
241 | (1) |
|
7.3 Language of Turing Machine |
|
|
241 | (1) |
|
7.4 Turing Machine as Computer for Positive Integers |
|
|
242 | (5) |
|
7.5 Universal Turing Machine |
|
|
247 | (2) |
|
7.6 Enhancements in Turing Machine |
|
|
249 | (9) |
|
7.6.1 Multitrack Turing Machine |
|
|
249 | (7) |
|
7.6.2 Multitape Turing Machine |
|
|
256 | (2) |
|
7.7 Turing Machine as Enumerator |
|
|
258 | (1) |
|
7.8 Nondeterministic and Deterministic Turing Machine |
|
|
259 | (1) |
|
7.9 Alternative Representation of Turing Machines |
|
|
260 | (4) |
|
7.9.1 Turing Machine with One-way Infinite Tape |
|
|
260 | (2) |
|
|
262 | (2) |
|
7.10 Time and Space Complexity of Turing Machine |
|
|
264 | (3) |
|
|
267 | (12) |
|
7.11.1 Linear-bound Automata |
|
|
267 | (1) |
|
|
267 | (4) |
|
|
271 | (8) |
|
8 The Pitfall of Algorithmic Computing: Undecidability |
|
|
279 | (21) |
|
8.1 Recursive and Non-recursive Languages |
|
|
280 | (5) |
|
8.1.1 Recognition and Acceptance |
|
|
281 | (4) |
|
8.2 Language of Turing Machines |
|
|
285 | (15) |
|
8.2.1 Decision Problems Relating to Turing Machines |
|
|
288 | (1) |
|
|
289 | (2) |
|
8.2.3 Decision Problems Relating to Context-free Grammar |
|
|
291 | (2) |
|
8.2.4 Post Correspondence Problem |
|
|
293 | (1) |
|
8.2.5 Constructing CFG using PCP |
|
|
294 | (2) |
|
|
296 | (4) |
|
|
300 | (17) |
|
9.1 Primitive Recursive Functions |
|
|
300 | (11) |
|
9.1.1 Composition of Functions |
|
|
301 | (1) |
|
|
301 | (1) |
|
9.1.3 Defining Functions by Primitive Recursion |
|
|
302 | (4) |
|
9.1.4 Turing Machine for Constant Functions |
|
|
306 | (1) |
|
9.1.5 Turing Machine for Successor Functions |
|
|
307 | (1) |
|
9.1.6 Turing Machine for Projection Functions |
|
|
307 | (4) |
|
9.2 μ-Recursive Functions |
|
|
311 | (6) |
|
9.2.1 Computability and μ-Recursive Functions |
|
|
312 | (1) |
|
|
312 | (5) |
|
10 Computational Complexity: Tractable and Possibly Intractable Problems |
|
|
317 | (20) |
|
10.1 Growth Rates of Functions |
|
|
318 | (2) |
|
|
319 | (1) |
|
|
320 | (1) |
|
|
320 | (1) |
|
10.2 Languages and Complexity Classes |
|
|
320 | (2) |
|
10.2.1 Complexity Classes |
|
|
321 | (1) |
|
10.3 Decision and Optimization Problems |
|
|
322 | (1) |
|
|
322 | (3) |
|
10.4.1 CNF Satisfiability Problem |
|
|
323 | (1) |
|
10.4.2 Hamiltonian Cycle Problem |
|
|
324 | (1) |
|
10.5 Polynomial Time Reduction |
|
|
325 | (1) |
|
10.5.1 Algorithm for Polynomial Time Reduction |
|
|
326 | (1) |
|
10.5.2 Reduction and Tractability/Intractibility |
|
|
326 | (1) |
|
10.6 NP-complete Problems |
|
|
326 | (7) |
|
10.6.1 k-Colourability Problem |
|
|
333 | (1) |
|
10.6.2 Vertex Cover Problem |
|
|
333 | (1) |
|
10.7 Significance of Discovering NP-complete Problems |
|
|
333 | (1) |
|
10.8 Some Misconceptions about NP-complete Problems |
|
|
334 | (3) |
|
|
334 | (3) |
Appendix A Church-Turing Thesis |
|
337 | (2) |
Appendix B Godel Numbering |
|
339 | (2) |
Appendix C Homage to Key Scientists |
|
341 | (3) |
Appendix D Chronology of Some Important Events |
|
344 | (1) |
Index |
|
345 | |