Turing Machines
Download
Report
Transcript Turing Machines
Comparing Sets Size without
Counting
2 sets A and B have the same size if there is a
function f: A B such that:
• For every x A there is one and only y B
such that f(x) = y
• Every y B has one x A such that f(x) = y
In such situations f is said to be a
bijective
Example:
A
B
1
2
3
4
5
6
a
b
c
d
e
f
Example (2)
E = {n : n is an even natural number}
N = {n : n is a natural number}
Does E and N have the same size?
Yes:
f(x) = x/2 is a bijective from E to N
N = {f(2), f(4), f(6) ,…}
Example (3)
R1 = {r : r is a real positive number greater than 1}
(0,1] = {r : r is a real number between 0 and 1}
Does R1 and (0,1] have the same size?
Yes:
f(x) = 1/x is a bijective from R1 to (0,1]
1
same
size!
1
Example (4)
How about:
R+ = {r : r is a real non-negative number}
N = {n : n is a natural number}
Every attempt fails:
f(x) = x
(leaves numbers like 0.5 out)
f(x) = floor(x)
(assigns the same value for
numbers like 1.2 and 1.3)
How can we know for sure that there is no bijective function
from R+ to N?
Enumerability
•We know that there is an enumeration for all the natural
numbers: 1, 2, 3, 4, …, 101000, …
The point is that for any natural, say 101000, it will
eventually be listed!
•There is no such enumeration of all the real numbers between 0
and 1 (i.e., 0, 0.01, 0.1003, 3/)
•Thus there can’t be any bijective function f: N [0,1],
otherwise: {f(0), f(1), f(2), …} would be an enumeration for
[0,1]
•Surprisingly there is a enumeration for the rational numbers
(the irrational numbers the ones that are non enumerable!)
Enumerability (2)
• The set of all rational numbers:
{p/q : p, q are natural numbers} is
enumerable:
1 2 3 4 5 … q …
1/1 1/2 1/3 1/4 1/5 … 1/q …
2/1 2/2 2/3 2/4 2/5 … 2/q …
3/1 …
4/1 …
5/1 …
5/q …
1
2
3
4
5
…
p p/1 …
…
p/q …
Note: you
could easily
write a
program in
C++ that
outputs this
enumeration
(and runs
forever)
Enumeration: 1/1, 1/2, 2/1, 1/3, 2/2, 3/1, 1/4, …, p/q, …
[0,1) Is Not Enumerable
By contradiction: suppose that there is an enumeration for all
the real numbers between 0 and 1:
# 1:
# 2:
# 3:
…
#23:
…
0.012304565 ...
0.10002344345 ...
0.865732546789 …
0.434555…6…
[0,1) Is Not Enumerable (II)
We construct a number as follows: for each number n in the
enumeration, we look at the n-th digit in n:
#1: 0.012304565 ...
#2: 0.10002344345 ...
#3: 0.865732546789 …
…
#23: 0.434555…6…
…
The 23-rd digit
= 0.005…6…
Obviously is a real number between 0 and 1
[0,1) Is Not Enumerable(III)
We construct a number as follows: we change each digit in
for a different digit:
= 0.005…6…
= 0.120…7…
Obviously is a real number between 0 and 1
Question: is = #1? or = #2? or … or = #23? or …
#1: 0.012304565 ...
#2: 0.10002344345 ...
#3: 0.865732546789 …
…
#23: 0.434555…6…
…
…
…
Thus, it is not possible
to enumerate all the
real numbers between
0 and 1!
Consequences
•This means that even though the natural and the real
numbers are both infinite, the size of the set of the real
numbers is “bigger” than the size of the set of the natural
numbers.
This has been known for mathematicians for quite a long
time
Astonishingly, this result is relevant for Turing
Machines!
Enumerability and Turing Machines
Definition: A language L is Turing-enumerable is there is a
Turing machine that enumerates all words in L in its tape
(may run forever):
w1 w2 w3…
Theorem 1. If a language is decidable then the language is
Turing-enumerable
Theorem 2. A language is semi-decidable if and only if the
language is Turing-enumerable
Optional Homework (Wednesday)
• Explain why C++ programs can be simulated with Turing
machines
• Enumerate the ways to proof that a language is:
decidable
semi-decidable
Enumerable
• 4.20 c)
• 4.24 a)
* is Turing-Enumerable
• As an example consider = {a, b}
• We can define a < b and then induce a
lexicographical order:
abbbabbb > abbabbb
• We can can list all elements: e, a, b, aa, ab, bb, aaa, …
• We can construct a 3-Tape Turing machine with a counter i = 0,
1, 2, … on the second tape, and in each loop construct all
combinations of words of length i in tape 3. Once done, copy
those words to the end (i.e., ) of the first tape (cumbersome
but doable!)
• A similar construction can be made for any (finite)
Decidable Implies Enumerable
•Let L be a language over the alphabet
•If L is decidable there is a Turing Machine that decides M
•Let M* be the Turing machine that enumerates *
•Construct a 3-tape Turing machine that enumerates L as follows:
M* will output words on the 2nd tape
Every time M* outputs a word w, it is copied in the 3rd tape,
where M checks if w is in L
If w is in L it is appended to the end of the 1st tape
Enumerable Implies Semi-decidable
•Let L be a Turing-enumerable language
•Thus, there is a Turing machine M that enumerates words in L
•We can construct a Turing machine ML that semi-decides if a
word w is in L as follows:
Run M and wait to see if w is put on the tape. If w is
printed on the tape, ML halts. If not, it continues
waiting to see if w is printed on the tape.
Backup Slides Please Ignore
* is Enumerable
Theorem. If is finite then * is enumerable
If = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, * = {0, 1, …, 12, 13, …, 654, …}
If = {a, b, c, d, e, f, g, h, i, j} * = {a, b, …, bc, cd, …, gfe, …}
If consist of 500 symbols, we map them to the first 500 numbers
*
The Turing machine that enumerates all
strings in
Decidable Implies Enumerable
Suppose that L is decidable. By definition, it means that there
is a Turing machine ML that decides L
*
ML
If word is in L it copies
into the second tape and
adds an space
For example if L = {anbn: n = 0, 1, 2, …} and
= {a, b, c } then * = {a, b, c, aa, ab, ac, ba, bb, …}
Tape2: abaabb…
An enumeration of L!