Download presentation
Presentation is loading. Please wait.
Published byEvelyn Hampton Modified over 5 years ago
1
Turing Machines The Chinese University of Hong Kong Fall 2010
CSCI 3130: Automata theory and formal languages Turing Machines Andrej Bogdanov
2
What is a computer? computer
program output input A computer is a machine that manipulates data according to a list of instructions.
3
? What is a computer? deep blue Hello, world world E2-E4 computer
void hello( String name) { print( “Hello, “, name); } ? Hello, world world deep blue E2-E4 computer
4
Turing Machines Can both read from and write to the tape
control head … a b ☐ input blanks Can both read from and write to the tape Head can move both left and right Tape is infinite Has two special states accept and reject
5
Example Strategy: L1 = {w#w: w ∈{a, b}*} abbaa#abbaa
Read and remember the first symbol xbbaa#abbaa Cross it off (x) xbbaa#abbaa Read the first symbol past # If they don’t match, reject xbbaa#xbbaa If they do, cross it off
6
Example Strategy: L1 = {w#w: w ∈{a, b}*}
Look for the first uncrossed symbol xbbaa#xbbaa Cross it off (x) xxbaa#xbbaa Read the first uncrossed symbol past # xxbaa#xbbaa If they match, cross it off, else reject xxbaa#xxbaa At the end, there should be only xs and #s xxxxx#xxxxx If not, reject; otherwise, accept.
7
How Turing Machines operate
current state a/bL q1 q2 … a b a ☐ Replace a with b, and move head left new state a/bL q1 q2 … a b b ☐
8
Formal Definition A Turing Machine is (Q, , , , q0, qacc, qrej):
Q is a finite set of states; is the input alphabet not containing the blank symbol ☐ is the tape alphabet ( ) including ☐ q0 in Q is the start state; qacc, qrej in Q are the accepting and rejecting state is the transition function d: (Q – {qacc, qrej}) → Q G {L, R} Turing Machines are deterministic
9
Configurations A configuration consists of the current state, the head position, and tape contents configuration … a b ☐ q1 abq1a q1 qacc a/bR … a b ☐ qacc abbqacc
10
Configurations We say configuration C yields C’ if the TM can go from C to C’ in a single step The start configuration of the TM on input w is q0w An accepting configuration is one that contains qacc; A rejecting configuration is one that contains qrej abq1a yields abbqacc
11
The language of a Turing Machine
We say M accepts x if there exists a sequence of configurations C0, C1, ..., Ck where C0 is starting Ci yields Ci+1 Ck is accepting The language recognized by M is the set of all strings that M accepts
12
This machine never halts
Looping Something strange can happen in a Turing Machine: Inputs can be divided into three types = {0, 1} ☐/☐R qacc 0/0R input: e This machine never halts q0 1/1R qrej qacc qrej accept reject loop
13
Halting We say M halts on x if there exists a sequence of configurations C0, C1, ..., Ck where Ck is accepting or rejecting Ci yields Ci+1 C0 is starting A TM M is a decider if it halts on every input Language L is decidable if it is recognized by a TM that halts on every input
14
Programming Turing Machines
Description of Turing Machine: L1 = {w#w: w ∈{a, b}*} Until you reach # 1 xbbaa#xbbaa Read and remember entry 2 xxbaa#xbbaa Write x 3 xxbaa#xbbaa Move right past # and past all xs 4 If this entry is different, reject 5 Otherwise Write x xxbaa#xxbaa 6 Move left past # and to right of first x xxbaa#xxbaa 7 If you see only xs followed by ☐, accept 8
15
Programming Turing Machines
L1 = {w#w: w ∈{a, b}*} a/aR b/bR x/xR #/#R a/aL qa1 qa2 b/bL a/aL 4 a/xL 3 b/bL x/xR x/xL 2 a/xR 5 6 #/#R ☐/☐R #/#L q0 q1 qacc q2 q3 qrej 1 8 b/xR 7 6 5 b/xL 2 everything else 3 qb1 4 qb2 #/#R a/aR x/xR b/bR x/xR
16
Programming Turing Machines
input: aab#aab a/aR b/bR x/xR configurations: #/#R a/aL qa1 qa2 q0aab#aab b/bL a/aL 4 a/xL 3 b/bL xqa1ab#aab x/xR x/xL 2 a/xR 5 6 xaqa1b#aab #/#R ☐/☐R #/#L q0 q1 qacc q2 q3 1 xabqa1#aab 8 b/xR 7 6 5 xab#qa2aab b/xL 2 3 xabq2#xab qb1 4 qb2 #/#R xaq3b#xab a/aR x/xR xq3ab#xab b/bR q3xab#xab xq0ab#xab x/xR
17
Programming Turing Machines
L2 = {aibjck: i × j = k and i, j, k > 0 } aabbcccc High-level description of TM: For every a: aabbcccc Cross off the same number of bs and cs aabbcccc Restore the crossed of bs (but not the cs) aabbcccc Cross off this a aabbcccc If all as and cs are crossed off, accept. aabbcccc aabbcccc S = {a, b, c} G = {a, b, c, a, b, c, ☐} aabbcccc
18
Programming Turing Machines
L2 = {aibjck: i × j = k and i, j, k > 0 } Low-level description of TM: Scan input from left to right to check it looks like aa*bb*cc* Move the head to the first symbol of the tape For every a: Cross off the same number of bs and cs Restore the crossed of bs (but not the cs) Cross off this a If all as and cs are crossed off, accept. how do we know? how to do this?
19
Programming Turing Machines
aabbcccc Implementation details: Move the head to the first symbol of the tape aabbcccc Put a special marker on top of first a Cross off the same number of bs and cs: aaqbbcccc aabqbcccc Replace b by b Move right until you see a c Move left just past the last b If any bs are left, repeat Replace c by c aabbqcccc aabqbcccc aabbqcccc aabbcqccc aabbqcccc S = {a, b, c} G = {a, b, c, a, b, c, a, a, ☐}
20
Programming Turing Machines
L3 = {#x1#x2...#xl : xi ∈ {0, 1}* and xi ≠ xj for each i ≠ j} High-level description of TM: #01#0011#1 On input w, For every pair of blocks xi and xj in w, Compare the blocks xi and xj If they are the same, reject. Otherwise, accept.
21
Programming Turing Machines
L3 = {#x1#x2...#xl : xi ∈ {0, 1}* and xi ≠ xj for each i ≠ j} Low-level description: #01#0011#1 0. If input is e, or has exactly one #, accept. Place a mark on the leftmost # (i.e. replace # by #) and move right 1. #01#0011#1 Place another mark on next unmarked # (If there are no more #, accept) 2. #01#0011#1
22
Programming Turing Machines
L3 = {#x1#x2...#xl : xi ∈ {0, 1}* and xi ≠ xj for each i ≠ j} current state: #01#0011#1 Compare the two strings to the right of marked #. If there are same, reject 3. #01#0011#1 4. Move the right # to the right If not possible, move the left # to the next # and put the right # on the next If not possible, accept #01#0011#1 Repeat Step 3 5. #01#0011#1
23
Programming Turing Machines
L3 = {#x1#x2...#xl : xi ∈ {0, 1}* and xi ≠ xj for each i ≠ j} 3. Compare the two strings to the right of marked #. If there are same, reject #01#0011#1 #01#0011#1 4. Move the right # to the right If not possible, move the left # to the next # and put the right # on the next If not possible, accept accept
24
How to describe Turing Machines?
Unlike for DFAs, NFAs, PDAs, we rarely give complete state diagrams of Turing Machines Usually we give a high-level description: A recipe about the workings of the Turing Machine Just like in cooking, practice makes perfect!
25
Programming Turing Machines
L4 = {〈G〉: G is a connected undirected graph} Q: How do we feed a graph into a Turing Machine? A: We represent it by a string, e.g. (1,2,3,4)((1,4),(2,3),(3,4)(4,2)) 1 2 Convention for describing graphs: (nodes)(edges) 3 4 no node must repeat edges are pairs (node1,node2)
26
Programming Turing Machines
L4 = {〈G〉: G is a connected undirected graph} On input 〈G〉, 0. Verify that 〈G〉 is the description of a graph (no vertex repeats; edges only go between nodes) 1. Mark the first node of G x x 1 2 2. Repeat until no new nodes are marked: For each node, mark it if it is attached to an already marked node x x 3 4 3. If all nodes are marked accept, otherwise reject.
27
Programming Turing Machines
L4 = {〈G〉: G is a connected undirected graph} (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) 1 2 (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) 3 4 (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) (1,2,3,4)((1,4)(2,3)(3,4)(4,2)) etc. (1,2,3,4)((1,4)(2,3)(3,4)(4,2))
28
What’s so great about Turing Machines?
29
Hilbert’s list of 23 problems
Leading mathematician in the 1900s At the 1900 International Congress of Mathematicians, proposed a list of 23 problems for the 20th century Hilbert’s 10th problem: David Hilbert ( ) Find a method to tell if an equation like xyz – 3xy + 6xz + 2 = 0 has integer solutions
30
A brief history of computing devices
Z3 (Germany, 1941) ENIAC (Pennsylvania, 1945) PC (1980) MacBook Air (2008)
31
Computation is universal
In principle, all these have the same problem-solving ability
32
The Church-Turing Thesis
Turing Machine If an algorithm can be implemented on any realistic computer, then it can be implemented on a Turing Machine.
33
The Church-Turing Thesis
Turing Machine quantum computing cosmic computing DNA computing
34
Alan Turing Invented the Turing Test to tell humans and computers apart Broke German encryption machines in World War II The Turing Award is the “Nobel prize of Computer Science” Alan Turing ( ) Turing’s motivation: By studying Turing Machines, we can understand the limitations of real computers.
35
There is no such Turing Machine!
Undecidability What Hilbert meant to ask was: Building on work of Gödel, Church, Turing, Davis, Putnam, Robinson, in 1970 Matijasievič showed: Find a Turing Machine to tell if an equation like xyz – 3xy + 6xz + 2 = 0 has integer solutions There is no such Turing Machine!
36
Computer program analysis
public static void main(String args[]) { System.out.println("Hello World!"); } What does this program do? public static void main(String args[]) { int i = 0; for (j = 1; j < 10; j++) { i += j; if (i == 28) { System.out.println("Hello World!"); } How about this one?
37
Computers cannot analyze programs!
No Turing Machine can do this: input: The code of a java program P Accept if P prints “hello, world” Reject if not Significance: It is impossible for computer to predict what a computer program will do!
38
How do you argue things like that?
To argue what computers cannot do, we need to have a precise definition of what a computer is. Turing’s answer: A computer is just a Turing Machine. 1936: “On Computable Numbers, with an Application to the Entscheidungsproblem” Section 1. Computing Machines
39
The Church-Turing Thesis
All arguments [for the CT Thesis] which can be given are bound to be, fundamentally, appeals to intuition, and for this reason rather unsatisfactory mathematically. The arguments which I shall use are of three kinds: 1. A direct appeal to intuition A proof of the equivalence of two definitions (In case the new definition has greater intuitive appeal) Giving examples of large classes of numbers which are computable. 1936: “On Computable Numbers, with an Application to the Entscheidungsproblem” Section 9. The extent of the computable numbers
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.