Introduction to the Theory of Computation
Michael Sipser
Now Available from
PWS Publishing Company.
Errata
CONTENTS OF THE FIRST AND SECOND EDITIONS
0. Introduction
- AUTOMATA, COMPUTABILITY, AND COMPLEXITY
Complexity theory -
Computability theory -
Automata theory
- MATHEMATICAL NOTIONS AND TERMINOLOGY
Sets -
Sequences and tuples -
Functions and relations -
Graphs -
Strings and languages -
Boolean logic -
Summary of mathematical terms
- DEFINITIONS, THEOREMS, AND PROOFS
Finding proofs
- TYPES OF PROOF
Proof by construction -
Proof by contradiction -
Proof by induction
PART ONE: AUTOMATA AND LANGUAGES
1. Regular Languages
- FINITE AUTOMATA
Formal definition of a finite automaton -
Examples of finite automata -
Formal definition of computation -
Designing finite automata -
The regular operations
- NONDETERMINISM
Equivalence of NFAs and DFAs -
Closure under the regular operations
- REGULAR EXPRESSIONS
Formal definition of a regular expression -
Equivalence with finite automata
- NONREGULAR LANGUAGES
The pumping lemma for regular languages
2. Context-Free Languages
- CONTEXT-FREE GRAMMARS
Formal definition of a context-free grammar -
Examples of context-free grammars -
Designing context-free grammars -
Ambiguity -
Chomsky normal form
- PUSHDOWN AUTOMATA
Formal definition of a pushdown automaton -
Examples of pushdown automata -
Equivalence with context-free grammars
- NON-CONTEXT-FREE LANGUAGES
The pumping lemma for context-free languages
PART TWO: COMPUTABILITY THEORY
3. The Church-Turing Thesis
- TURING MACHINES
Formal definition of a Turing machine -
Examples of Turing machines
- VARIANTS OF TURING MACHINES
Multitape Turing machines -
Nondeterministic Turing machines -
Enumerators -
Equivalence with other models
- THE DEFINITION OF ALGORITHM
Hilbert's problems -
Terminology for describing Turing machines
4. Decidability
- DECIDABLE LANGUAGES
- THE HALTING PROBLEM
The diagonalization method -
The halting problem is undecidable -
A Turing-unacceptable language
5. Reducibility
- UNDECIDABLE PROBLEMS FROM \\ LANGUAGE THEORY
Reductions via computation histories
- A SIMPLE UNDECIDABLE PROBLEM
- MAPPING REDUCIBILITY
Computable functions -
Formal definition of mapping reducibility
6. Advanced Topics in Computability Theory
- THE RECURSION THEOREM
Self-reference -
Terminology for the recursion theorem -
Applications
- DECIDABILITY OF LOGICAL THEORIES
A decidable theory -
An undecidable theory
- TURING REDUCIBILITY
- A DEFINITION OF INFORMATION
Minimal length descriptions -
Optimality of the definition -
Incompressible strings and randomness
PART THREE: COMPLEXITY THEORY
7. Time Complexity
- MEASURING COMPLEXITY
Big-O and small-o notation -
Analyzing algorithms -
Complexity relationships among models
- THE CLASS P
Polynomial time -
Examples of problems in P
- THE CLASS NP
Examples of problems in NP -
The P versus NP question
- NP-COMPLETENESS
Polynomial time reducibility -
Definition of NP-completeness -
The Cook-Levin Theorem
- EXAMPLES OF NP-COMPLETE PROBLEMS
The vertex cover problem -
The Hamiltonian path problem -
The subset sum problem
8. Space Complexity
- SAVITCH'S THEOREM
- THE CLASS PSPACE
- PSPACE-COMPLETENESS
The TQBF problem -
Winning strategies for games -
Generalized geography
- THE CLASSES L AND NL
- NL-COMPLETENESS
Searching in graphs
- NL EQUALS CONL
9. Intractability
- HIERARCHY THEOREMS
Exponential space completeness
- RELATIVIZATION
Limits of the diagonalization method
- CIRCUIT COMPLEXITY
10. Advanced Topics in Complexity Theory
- APPROXIMATION ALGORITHMS
- PROBABILISTIC ALGORITHMS
The class BPP -
Primality -
Read-once branching programs
- ALTERNATION
Alternating time and space -
The Polynomial time hierarchy
- INTERACTIVE PROOF SYSTEMS
Graph nonisomorphism -
Definition of the model -
IP = PSPACE
- PARALLEL COMPUTATION
Uniform Boolean circuits -
The class NC -
P-completeness
- CRYPTOGRAPHY
Secret keys -
Public-key cryptosystems -
One-way functions -
Trapdoor functions