* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Turing Machines
Mechanical calculator wikipedia , lookup
Positional notation wikipedia , lookup
Large numbers wikipedia , lookup
Infinitesimal wikipedia , lookup
Georg Cantor's first set theory article wikipedia , lookup
Hyperreal number wikipedia , lookup
Non-standard calculus wikipedia , lookup
Fundamental theorem of algebra wikipedia , lookup
Proofs of Fermat's little theorem wikipedia , lookup
Real number wikipedia , lookup
Halting problem wikipedia , lookup
Elementary mathematics wikipedia , lookup
Turing machine wikipedia , lookup
Register machine wikipedia , lookup
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!