Chapter1 Introduction to the Theory of Computation 1.1 Mathematical Preliminaries and Notation Sets Functions and Relations Graphs and Trees Proof Techniques 1.2 Three Basic Concepts Languages Grammars Automata 1.3 Some Applications Chapter2 Finite Automata 2.1 Deterministic Finite Accepters Deterministic Accepters and Transition Graphs Languages and Dfas Regular Languages 2.2 Nondeterministic Finite Accepters Definition of a Nondeterministic Accepter Why Nondeterminism? 2.3 Equivalence of Deterministic and Nondeterministic Finite Accepters 2.4 Reduction of the Number of States in Finite Automata Chapter3 Regular Languages and Regular Grammars 3.1 Regular Expressions Formal Definition of a Regular Expression Languages Associated with Regular Expressions 3.2 Connection Between Regular Expressions and Regular Languages Regular Expressions Denote RegularLanguages Regular Expressions for Regular Languages Regular Expressions for Describing Simple Patterns 3.3 Regular Grammars Right-and Left-Linear Grammars Right-Linear Grammars Generate Regular Languages Right-Linear Grammars for Regular Languages Equivalence Between Regular Languages and Regular Grammars Chapter4 Properties of Regular Languages 4.1 Closure Properties of Regular Languages Closure under Simple Set Operations Closure under Other Operations 4.2 Elementary Questions about Regular Languages 4.3 Identifying Nonregular Languages Using the pigeonhole Principle A Pumping Lemma Chapter5 Context-Free Languages 5.1 Context-Free Grammars Examples of Context-Free Languages Leftmost and Rightmost Derivations Derivation Trees Relation Between Sentential Forms and Derivation Trees 5.2 Parsing and Ambiguity Parsing ang Membership Ambiguity in Grammars and Languages 5.3 Context-Free Grammars and Programming Languages Chapter6 Simplification lf Context-Free Grammars 6.1 Methods for Transforming Grammars A Useful Substitution Rule Removing Useless Productions Removing Removing Unit-Productions 6.2 Two Important Normal Forms Chomsky Normal Form Greibach Normal Form 6.3 A Membership Algorithm for Context-free Grammars Chapter7 Pushdown Automata 7.1 Nondeterministic Pushown Automata Definition of a Pushdown Automata A Language Accepted by a Pushdown Automaton 7.2 Pushdown Automata and Context-Free Languages Pushdown Automata for Context-Free Languages Context-Free Grammars for Pushdown Automata 7.3 Deterministic Pushdown Automata and Deterministic Context-Free Languages 7.4 Grammars for Deterministic Context-Free Languages Chapter8 Properties Context-Free Languages 8.1 Two Pumping Lemmas A Pumping Lemma for Context-Free Languages A Pumping Lemma for Linear Languages 8.2 Closure Properties and Decision Algorithms for Context-Free Languages Closure of Context-Free Languages Some Decidable Properties of Context-Free Languages Chapter9 Turing Machines 9.1 The Standard Turing Machine Definition of a Turing Machine Turing Machines as Language Accepters Turing Machines asTransducers 9.2 Combining Turing Machines for Complicated Tasds 9.3 Turing’s Thesis Chapter10 Other ModeIs of Turing Machines 10.1 Minor Variations on the Turing Machine Theme Equivalence of Classes of Automata Turing Machines with a Stay-Option Turing Machines with Semi-Infinite Tape The Off-Line Tuing Machines 10.2 Turing Machines with More Complex Storage Multitape Turing Machines Multidimensional Turing Machines 10.3 Nondeterministic Turing Machines 10.4 A Universal Turing Machine 10.5 Linear Bounded Automata Chapter11 A Hierardhy of Formal Languages and Automata 11.1 Recursive and Recursively Enumerable Languages Languages That Are Not Recursively Enumerable A Language That Is Not Recursively Enumerable A Language That Is Recursively Enumerable But Not Recursive 11.2 Unrestricted Grammars 11.3 Context-Sensitive Grammars and Languages Context-Sensitive Languages and Linear Bounded Automata Relation Between Recursive and Context-Sensitive Languages 11.4 The Chomsky Hierarchy Chapter12 Limits of Algorithmic Computation 12.1 SomeProblems That Cannot Be Solved By Turing Machines The Turing Machine Halting Problem Reducing One Undecidable Problem to Another 12.2 Undecidable Prolems for Recursively Enumerable Languages 12.3 The Post Correspondence Problem 12.4 Undecidable Problems for Context-free Languages Chapter13 Other Models Computation 13.1 Recursive Functions Primitive Recursive Functions Ackermann’s Function 13.2 Post Systems 13.3 Rewriting Systems Markov Alglrithms L-Systems Chapter14 An Introduction to Computational complexity 14.1 Effciency of Computation 14.2 Turing Machines and Complexity Classes 14.3 Language Families and Complexity Classes 14.4 The Complexity Classes P and NP Answers to Selected Exercises References Index