Computability
Summarized notes from Introduction to Theory of Computation, Chapters 4-5
Church-Turing Thesis
Function on the natural numbers can be calculated by an effective method if and only if it is computable by a Turing machine.
Rice's Theorem
Determining any non-trivial semantic property of the languages recognized by Turing machines is undecidable.
Computable functions
A function
Decidability
-
reasons why decidability matters:
- undecidable problem must be simplified or altered before it can be solved
- it is important to have this perspective on computation in general
-
some decidable problems for regular languages:
- acceptance problem: whether FA accepts a given string
- emptiness testing: whether or not FA accepts any string
- determining if two DFAs accept the same language
-
some decidable problems from context-free languages:
- acceptance problem: determining if CFG generates a specific string
- emptiness testing: whether CFG generates any string at all
- every context-free language is decidable by TM
-
some undecidable problems:
- whether a TM accepts an input string
- determining whether TM recognizes a regular language
- halting problem: TM halts on given input
- determining if CFG generates all possible strings
- port correspondence problem
Reducibility
Reduction is a way of converting one problem to another problem such that a solution to the second problem can be used to solve the first one.
Reducing problems to others often helps to prove some problem is undecidable.
Computation history method
-
technique for proving that TM is reducible to certain language
-
often useful when proving undecidability involves testing for existence of something
-
for TM, computation history is the sequence of configurations the machine goes through
- accepting computation history, for
on , is a sequence of configurations, where is the start configuration for on , each follows from according to the rules of , and is accepting configuration - rejecting computation history is defined similarly except
is a rejecting configuration
- accepting computation history, for
-
computation histories are finite sequences => if
does not halt, neither accepting or rejecting history exists -
deterministic machines have at most 1 computation history on any given input, nondeterministic can have multiple
Mapping reducibility
Also called many-one reducibility,
Language A is mapping reducible to language B, written
The function
- mapping reduction of A to B provides a way to convert questions about membership testing in A
to membership testing in B, e.g.
- if
and B is decidable, then A is decidable - if
and B is Turing-recognizable, then A is Turing-recognizable - if
and A is undecidable, then B is undecidable - if
and A is not Turing-recognizable, then B is not Turing-recognizable
- if
- if one problem is mapping reducible to another previously solved problem, the original problem can be solved
Turing reducibility
A generalization of mapping reducibility:
Language A is turing reducible to language B,