Languages and machines : an introduction to the theory of computer science
Provides readers with a mathematical presentation of the theory of computer science at a level suitable for junior and senior level computer science majors. The theoretical concepts and associated mathematics are made accessible by a "learn as you go" approach that develops an understanding of the concepts through examples and illustrations.
Print Book, English, ©2006 [i.e. 2005]
Pearson Addison Wesley, Boston, ©2006 [i.e. 2005]
XVII, 654 p. : illustrations ; 24 cm
9780321322210, 9780321315342, 0321322215, 0321315340
Introduction Part I: Foundations Chapter 1: Mathematical Preliminaries 1.1 Set Theory 1.2 Cartesian Product, Relations, and Functions 1.3 Equivalence Relations 1.4 Countable and Uncountable Sets 1.5 Diagonalization and Self-Reference 1.6 Recursive Definitions 1.7 Mathematical Induction 1.8 Directed Graphs Exercises Bibliographic Notes Chapter 2: Languages 2.1 Strings and Languages 2.2 Finite Specification of Languages 2.3 Regular Sets and Expressions 2.4 Regular Expressions and Text Searching Exercises Bibliographic Notes Part II: Grammars, Automata, and Languages Chapter 3: Context-Free Grammars 3.1 Context-Free Grammars and Languages 3.2 Examples of Grammars and Languages 3.3 Regular Grammars 3.4 Verifying Grammars3.5 Leftmost Derivations and Ambiguity 3.6 Context-Free Grammars and Programming Language Definition Exercises Bibliographic Notes Chapter 4: Normal Forms for Context-Free Grammars 4.1 Grammar Transformations 4.2 Elimination of Rules 4.3 Elimination of Chain Rules 4.4 Useless Symbols 4.5 Chomsky Normal Form 4.6 The CYK Algorithm 4.7 Removal of Direct Left Recursion 4.8 Greibach Normal Form Exercises Bibliographic Notes Chapter 5: Finite Automata 5.1 A Finite-State Machine 5.2 Deterministic Finite Automata 5.3 State Diagrams and Examples 5.4 Nondeterministic Finite Automata 5.5 Transitions 5.6 Removing Nondeterminism 5.7 DFA Minimization Exercises Bibliographic Notes Chapter 6: Properties of Regular Languages 6.1 Finite-State Acceptance of Regular Languages6.2 Expression Graphs 6.3 Regular Grammars and Finite Automata 6.4 Closure Properties of Regular Languages 6.5 A Nonregular Language 6.6 The Pumping Lemma for Regular Languages 6.7 The Myhill-Nerode Theorem Exercises Bibliographic Notes Chapter 7: Pushdown Automata and Context-Free Languages 7.1 Pushdown Automata 7.2 Variations on the PDA Theme 7.3 Acceptance of Context-Free Languages 7.4 The Pumping Lemma for Context-Free Languages 7.5 Closure Properties of Context-Free Languages Exercises Bibliographic Notes Part III: Computability Chapter 8: Turing Machines 8.1 The Standard Turing Machine 8.2 Turing Machines as Language Acceptors 8.3 Alternative Acceptance Criteria 8.4 Multitrack Machines 8.5 Two-Way Tape Machines 8.6 Multitape Machines 8.7 Nondeterministic Turing Machines 8.8 Turing Machines as Language Enumerators Exercises Bibliographic Notes Chapter 9: Turing Computable Functions 9.1 Computation of Functions 9.2 Numeric Computation 9.3 Sequential Operation of Turing Machines 9.4 Composition of Functions 9.5 Uncomputable Functions 9.6 Toward a Programming Language Exercises Bibliographic Notes Chapter 10: The Chomsky Hierarchy 10.1 Unrestricted Grammars 10.2 Context-Sensitive Grammars 10.3 Linear-Bounded Automata 10.4 The Chomsky Hierarchy Exercises Bibliographic Notes Chapter 11: Decision Problems and the Church-Turing Thesis 11.1 Representation of Decision Problems 11.2 Decision Problems and Recursive Languages 11.3 Problem Reduction 11.4 The Church-Turing Thesis 11.5 A Universal Turing Machine Exercises Bibliographic Notes Chapter 12: Undecidability 12.1 The Halting Problem for Turing Machines 12.2 Problem Reduction and Undecidability 12.3 Additional Halting Problem Reductions 12.4 Rice’s Theorem 12.5 An Unsolvable Word Problem 12.6 The Post Correspondence Problem 12.7 Undecidable Problems in Context-Free Grammars Exercises Bibliographic Notes Chapter 13: Mu-Recursive Functions 13.1 Primitive Recursive Functions 13.2 Some Primitive Recursive Functions 13.3 Bounded Operators 13.4 Division Functions 13.5 G¨odel Numbering and Course-of-Values Recursion 13.6 Computable Partial Functions 13.7 Turing Computability and Mu-Recursive Functions 13.8 The Church-Turing Thesis Revisited Exercises Bibliographic Notes Part IV: Computational Complexity Chapter 14: Time Complexity 14.1 Measurement of Complexity 14.2 Rates of Growth 14.3 Time Complexity of a Turing Machine 14.4 Complexity and Turing Machine Variations14.5 Linear Speedup 14.6 Properties of Time Complexity of Languages 14.7 Simulation of Computer Computations Exercises Bibliographic Notes Chapter 15: P, NP, and Cook's Theorem 15.1 Time Complexity of Nondeterministic Turing Machines15.2 The Classes P and NP 15.3 Problem Representation and Complexity15.4 Decision Problems and Complexity Classes 15.5 The Hamiltonian Circuit Problem 15.6 Polynomial-Time Reduction 15.7 P = NP? 15.8 The Satisfiability Problem 15.9 Complexity Class Relations Exercises Bibliographic Notes Chapter 16: NP-Complete Problems 16.1 Reduction and NP-Complete Problems 16.2 The 3-Satisfiability Problem 16.3 Reductions from 3-Satisfiability 16.4 Reduction and Subproblems 16.5 Optimization Problems 16.6 Approximation Algorithms 16.7 Approximation SchemesExercises Bibliographic Notes Chapter 17: Additional Complexity Classes 17.1 Derivative Complexity Classes 17.2 Space Complexity 17.3 Relations between Space and Time Complexity 17.3 P-Space, NP-Space, and Savitch’s Theorem 17.4 P-Space Completeness 17.5 An Intractable Problem Exercises Bibliographic Notes Part V: Deterministic Parsing Chapter 18: Parsing: An Introduction 18.1 The Graph of a Grammar 18.2 A Top-Down Parser 18.3 Reductions and Bottom-Up Parsing 18.4 A Bottom-Up Parser 18.5 Parsing and Compiling Exercises Bibliographic Notes Chapter 19: LL(k) Grammars 19.1 Lookahead in Context-Free Grammars 19.2 FIRST, FOLLOW, and Lookahead Sets 19.3 Strong LL(k) Grammars 19.4 Construction of FIRSTk Sets 19.5 Construction of FOLLOWk Sets 19.6 A Strong LL(l) Grammar 19.7 A Strong LL(k) Parser 19.8 LL(k) Grammars Exercises Bibliographic Notes Chapter 20: LR(k) Grammars 20.1 LR(0) Contexts 20.2 An LR(0) Parser 20.3 The LR(0) Machine 20.4 Acceptance by the LR(0) Machine 20.5 LR(1) Grammars Exercises Bibliographic Notes Appendix I Index of Notation Appendix II The Greek Alphabet Appendix III Table of ASCII Characters Appendix IV Backus-Naur Definition of Java Bibliography Subject Index
Oorspr. uitg.: cop. 1988