Formal Language &
Automata Theory
CHAPTER 7
COMPUTABILITY & COMPUTAIONAL
COMPLEXITY
Complexity Theory
• Basic models of computation
– Circuits, decision trees
– DFAs, NFAs:
– Restricted notion of computation: no auxiliary memory, just one
pass over input.
– Yields restricted class of languages: regular languages.
• Computability
– Very general notion of computation.
– Machine models like Turing machines, or programs in general (idealized) programming
languages.
– Unlimited storage, multiple passes over input, compute arbitrarily long, possibly never halt.
– Yields large language classes: Turing-recognizable = enumerable, and Turing-decidable.
• Complexity theory
• – Examples of time complexity analysis (informal).
– Asymptotic function notation: O, o, Ω, Θ
– Time complexity classes
– P, polynomial time
– Languages not in P
– Hierarchy theorems
Computability theory
• Computability Theory
– In the first half of the 20th century, mathematicians such as
Kurt Gödel, Alan Turing, and Alonzo Church discovered that
certain basic problems cannot be solved by computers.
– e.g. determine whether a mathematical statement is true or
false
• Complexity Theory: classify problems as easy ones and
hard ones
• Computability Theory: classify problems are solvable
and not solvable
1. Big-O notaions
2. Class P vs class NP
3. Polynomial time reduction and NP-complete
problems
4. Cook’s Theorem
Big-O notaions