Introduction to the Theory of Computation
Author:
Michael Sipser
Errata
CONTENTS OF THE PRELIMINARY EDITION
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 -
Summary of mathematical terms
- DEFINITIONS, THEOREMS, AND PROOFS
Finding proofs
- TYPES OF PROOF
Proof by construction -
Proof by contradiction -
Proof by induction
- EXERCISES AND PROBLEMS
PART I: 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
Formal definition of a nondeterministic finite automaton -
Equivalence of nfas and dfas
- REGULAR EXPRESSIONS
Formal definition of a regular expression -
Equivalence with finite automata
- NONREGULAR LANGUAGES
The pumping lemma for regular languages
- EXERCISES AND PROBLEMS
2. Context-free Languages
- CONTEXT-FREE GRAMMARS
Formal definition of a context-free grammar -
Examples of 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
- EXERCISES AND PROBLEMS
PART II: 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
- EXERCISES AND PROBLEMS
4. Decidability
- DECIDABLE LANGUAGES
Decidable problems concerning regular languages -
Decidable problems concerning context-free languages
- THE HALTING PROBLEM
The diagonalization method -
The halting problem is undecidable -
A nonenumerable language
- EXERCISES AND PROBLEMS
5. Reducibility
- UNDECIDABLE PROBLEMS FROM LANGUAGE THEORY
Reductions via computation histories
- A SIMPLE UNDECIDABLE PROBLEM
- MAPPING REDUCIBILITY
Computable functions -
Formal definition of mapping reducibility
- EXERCISES AND PROBLEMS
6. The Recursion Theorem
- SELF-REFERENCE
Terminology for the Recursion Theorem
- APPLICATIONS
- EXERCISES AND PROBLEMS
PART III: 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
- EXERCISES AND PROBLEMS
First Edition