+ All Categories
Home > Documents > Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that...

Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that...

Date post: 04-Oct-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
64
Turing Machines Part Two
Transcript
Page 1: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Turing MachinesPart Two

Page 2: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Recap from Last Time

Page 3: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Our First Turing Machine

q0

qacc

qrej

q1

start

a → , R☐

a → , R☐

→ ☐ ☐, R

→ ☐ ☐, R

qacc

qrej

This part of the Turing machine is called the finite-state

control. It issues commands that drive the machine.

This part of the Turing machine is called the finite-state

control. It issues commands that drive the machine.

Page 4: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Our First Turing Machine

q0

qacc

qrej

q1

start

a → , R☐

a → , R☐

→ ☐ ☐, R

→ ☐ ☐, R

qacc

qrej

… …

This is the TM's infinite tape. Each tape cell holds a single tape symbol. Initially, all the

tape symbols are blank.

This is the TM's infinite tape. Each tape cell holds a single tape symbol. Initially, all the

tape symbols are blank.

Page 5: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Our First Turing Machine

q0

qacc

qrej

q1

start

a → , R☐

a → , R☐

→ ☐ ☐, R

→ ☐ ☐, R

qacc

qrej

a a a a… …

The machine is started up with the input string written somewhere on

the tape. The tape head initially points to the first symbol in the input.

The machine is started up with the input string written somewhere on

the tape. The tape head initially points to the first symbol in the input.

Page 6: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Our First Turing Machine

q0

qacc

qrej

q1

start

a → , R☐

a → , R☐

→ ☐ ☐, R

→ ☐ ☐, R

qacc

qrej

a a a a… …

q0

Like DFAs and NFAs, the TM begins in its start state and starts reading transitions.

Like DFAs and NFAs, the TM begins in its start state and starts reading transitions.

Page 7: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

a a a… …

Our First Turing Machine

q0

qacc

qrej

q1

start

a → , R☐

a → , R☐

→ ☐ ☐, R

→ ☐ ☐, R

qacc

qrej

a

q0

At each point in time, the TM only cares about the symbol directly under its

tape head.

At each point in time, the TM only cares about the symbol directly under its

tape head.

Page 8: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

start

a a a… …

Our First Turing Machineq

acc

qrej

q1

a → , R☐ → ☐ ☐, R

qacc

qrej

a

q0

→ ☐ ☐, R

q0

a → , R☐

Each transition has the form

read → write, DIR

and means “if the current symbol is read, replace it with write and move in direction DIR (either R or L). The ◻ symbol represents a blank cell.

Each transition has the form

read → write, DIR

and means “if the current symbol is read, replace it with write and move in direction DIR (either R or L). The ◻ symbol represents a blank cell.

Page 9: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

q0q

0q

1q

1

→ ☐ ☐, R

→ ☐ ☐, R

start

Our First Turing Machineq

acc

qrej

qacc

qrej

a → , R☐

a → , R☐

qacc

This special state is an accepting state. When a TM enters an accepting

state, it immediately stops running and accepts the input that was provided.

This special state is an accepting state. When a TM enters an accepting

state, it immediately stops running and accepts the input that was provided.

Page 10: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

q1

q0

q1

q0

→ ☐ ☐, R

→ ☐ ☐, R

start

Our First Turing Machineq

acc

qrej

qacc

qrej

a → , R☐

a → , R☐

qrej

This special state is a rejecting state. When a TM

enters a rejecting state, it immediately stops running and rejects the input that

was provided.

This special state is a rejecting state. When a TM

enters a rejecting state, it immediately stops running and rejects the input that

was provided.

Page 11: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

q0q

0q

1q

1

→ ☐ ☐, R

→ ☐ ☐, R

start

Our First Turing Machineq

acc

qrej

qacc

qrej

a → , R☐

a → , R☐

… …

If the TM is started with the empty string

as input, the entire tape is blank and the tape head points to some arbitrary position.

If the TM is started with the empty string

as input, the entire tape is blank and the tape head points to some arbitrary position.

Page 12: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Clear a1

Clear a1

Go toend

Checkfor 0

Go toend

Checkfor 0

Go tostartGo tostart

start

0 → , R☐ 0 → 0, R 1 → 1, R

→ ☐ ☐, L

1 → , L☐0 → 0, L 1 → 1, L

→ ☐ ☐, R

qacc

qacc

→ ☐ ☐, R

qacc

qrej

1 → , R☐

→ ☐ ☐, R0 → 0, R

Page 13: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Checkm≟0

Checkm≟0

Unmark

Next0

Unmark

Next0

BackhomeBackhome

Crossoff 1

To End

Crossoff 1

To End

BackhomeBackhome

→ ◻ ◻, R

0 → 0, R 1 → 1, L

0 → 0, L

→ ☐ ☐, R 0 → ×, R

× → ×, R0 → 0, R1 → 1, R

→ ◻ ◻, L

1 → , L☐× → ×, L 0 → 0, L 1 → 1, L

× → ×, R → ☐ ☐, L

1 → 1, L

× → 0, L → ☐ ☐, R

Accept!

→ ◻ ◻, R

EdgeCase

0 → 0, R

start

→ ☐ ☐, R

Page 14: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

New Stuff!

Page 15: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Main Question for Today:Just how powerful are Turing machines?

Page 16: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Another TM Design

● Last time, we designed a TM for this language over Σ = {0, 1}:

L = { w ∈ Σ* | w has the same number of 0s and 1s }

● Let's do a quick review of how it worked.

Page 17: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

The Solution

× 0 0 × 1 1 0… …1

Page 18: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

A Different Idea

Page 19: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

0 0 0 1 1 1 0… …1

A Different Strategy

Last time, we built a machine that checks whether a string has the form 0n1n.

That machine almost solves this problem, but requires that the characters have to be

in order.

What if we sorted the input?

Last time, we built a machine that checks whether a string has the form 0n1n.

That machine almost solves this problem, but requires that the characters have to be

in order.

What if we sorted the input?

Page 20: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

…0 0 0 1 1 1… 01

A Different Strategy

Observation 1: A string of 0s and 1s is sorted if it matches the regex

0*1*.

Observation 1: A string of 0s and 1s is sorted if it matches the regex

0*1*.

Page 21: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

…0 0 0 1 1 1… 01

A Different Strategy

Observation 2: A string of 0s and 1s is not

sorted if it contains 10 as a substring.

Observation 2: A string of 0s and 1s is not

sorted if it contains 10 as a substring.

Page 22: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

0 0 0 1 1 1 1… …0

A Different Strategy

Idea: Repeatedly find a copy of 10 and replace

it with 01.

Idea: Repeatedly find a copy of 10 and replace

it with 01.

Page 23: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Let's Build It!

Page 24: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

0*1*0* 0*1*0*

GoHome

Fix01

GoHome

Fix01

1 → 1, R

start

0 → 0, R 1 → 1, R

0 → 1, L

1 → 0, L0 → 0, L 1 → 1, L

→ ◻ ◻, R

ToStart

→ ◻ ◻, L

0 → 0, L 1 → 1, L

Start0n1n

→ ◻ ◻, R

This is just a placeholder. Imagine snapping in the entire TM for 0n1n into this diagram, putting the start state in the dashed

area.

This is just a placeholder. Imagine snapping in the entire TM for 0n1n into this diagram, putting the start state in the dashed

area.

Page 25: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

0* 0*1*

Fix01

GoHome

ToStart

Start0n1n

start

1 → 1, R 1 → 1, R0 → 0, R

0 → 1, L

1 → 0, L0 → 0, L 1 → 1, L

→ ◻ ◻, R

→ ◻ ◻, L → ◻ ◻, L

0 → 0, L 1 → 1, L

→ ◻ ◻, R

This TM will sort any sequence of 0s and 1s, but it might take a while.

Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

This TM will sort any sequence of 0s and 1s, but it might take a while.

Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Page 26: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

TM Subroutines

● A TM subroutine is a Turing machine that, instead of accepting or rejecting an input, does some sort of processing job.

● TM subroutines let us compose larger TMs out of smaller TMs, just as you'd write a larger program using lots of smaller helper functions.

● Here, we saw a TM subroutine that sorts a sequence of 0s and 1s into ascending order.

Page 27: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

TM Subroutines

● Typically, when a subroutine is done running, you have it enter a state marked “done” with a dashed line around it.

● When we're composing multiple subroutines together – which we'll do in a bit – the idea is that we'll snap in some real state for the “done” state.

Page 28: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

What other subroutines can we make?

Page 29: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

TM Arithmetic

● Let's design a TM that, given a tape that looks like this:

ends up having the tape look like this:

● In other words, we want to build a TM

that can add two numbers.

… 1 3 7 4 2 …

… 1 7 9 0 0 …

Page 30: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

TM Arithmetic

● There are many ways we could in principle design this TM.

● We're going to take the following approach:– First, we'll build a TM that increments a number.– Next, we'll build a TM that decrements a number.– Then, we'll combine them together, repeatedly

decrementing the second number and adding one to the first number.

Page 31: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Incrementing Numbers

● Let's begin by building a TM that increments a number.

● We'll assume that– the tape head points at the start of a number,

– there is are at least two blanks to the left of the number, and

– that there's at least one blank at the start of the number.

● The tape head will end at the start of the number after incrementing it.

… 9 9 8

Page 32: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Incrementing Numbers

go to the end of the number; while (the current digit is 9) { set the current digit to 0; back up one digit; } increment the current digit; go to the start of the number;

go to the end of the number; while (the current digit is 9) { set the current digit to 0; back up one digit; } increment the current digit; go to the start of the number;

Page 33: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

BackHome

WrapNines

BackHome

ToEnd

WrapNines

ToEnd

done!

0 → 0, L 1 → 1, L

… 9 → 9, L

start 0 → 0, R 1 → 1, R

… 9 → 9, R

→ ◻ ◻, L 9 → 0, L

0 → 1, L 1 → 2, L 2 → 3, L

… 8 → 9, L → ◻ 1, L

→ ◻ ◻, R

Page 34: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Decrementing Numbers

● Now, let's build a TM that decrements a number.● We'll assume that

– the tape head points at the start of a number,

– there is at least one blank on each side of the number.

● The tape head will end at the start of the number after decrementing it.

● If the number is 0, then the subroutine should somehow signal this rather than making the number negative.

1 0 2

Page 35: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Decrementing Numbers

go to the end of the number; if (every digit was 0) { signal that we're done; } while (the current digit is 0) { set the current digit to 9; back up one digit; } decrement the current digit; go to the start of the number;

go to the end of the number; if (every digit was 0) { signal that we're done; } while (the current digit is 0) { set the current digit to 9; back up one digit; } decrement the current digit; go to the start of the number;

Page 36: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Non-zero?Non-zero?

BackHome

done!

WrapZeros

BackHome

ToEnd

WrapZeros

ToEnd

start

0 → 0, R

1 → 1, R 2 → 2, R

… 9 → 9, R

0 → 0, R 1 → 1, R

… 9 → 9, R

→ ◻ ◻, L 0 → 9, L

1 → 0, L 2 → 1, L 3 → 2, L

… 9 → 8, L

0 → 0, L 1 → 1, L

… 9 → 9, L

→ ◻ ◻, Rn = 0

→ ◻ ◻, L

Page 37: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

TM Subroutines

● Sometimes, a subroutine needs to report back some information about what happened.

● Just as a function can return multiple different values, we'll allow subroutines to have different “done” states.

● Each state can then be wired to a different state, so a TM using the subroutine can control what happens next.

Page 38: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Putting it All Together

● Our goal is to build a TM that, given two numbers, adds those numbers together.

● Before:

● After:

1 3 7 4 2 ……

1 7 9 0 0 ……

Page 39: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Using Our Subroutines

● We'll build our new machine using our existing increment and decrement subroutines:

1 3 7 4 2 ……

Page 40: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

decr done!To 2nd

numdecrTo 2nd

num

incrGo

homeincr

To 1st

num

Gohome

To 1st

num

start 0 → 0, R 1 → 1, R

... 9 → 9, R

→ ◻ ◻, R

done

→ ◻ ◻, L

0 → 0, L 1 → 1, L

... 9 → 9, L

0 → 0, L 1 → 1, L

... 9 → 9, L

→ ◻ ◻, R

done

n = 0

Page 41: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Using Subroutines

● Once you've built a subroutine, you can wire it into another TM with something that, schematically, looks like this:

● Intuitively, this corresponds to transitioning to the start state of the subroutine, then replacing the “done” state of the subroutine with the state at the end of the transition.

subX → Y, D done

Page 42: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Time-Out for Announcements!

Page 43: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Problem Set Logistics

● Problem Set 7 was due at the start of class today.● Using late days, can extend that deadline up to Monday,

November 21st.

● Problem Set 8 goes out today. It's due on the Friday we get back (December 2).● Explore context-free grammars and languages!● Play around with Turing machines!

● Some of the problems on that problem set require content from Monday's lecture. Those parts are clearly marked (and, IMHO, the easier parts of the problem set).

Page 44: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Your Questions

Page 45: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

“Tell us about the T shirt that you're wearing today-what's the story behind the organization? When did you hear about it

and have you showed support in other ways?”

It's the South African National Rugby Team shirt. It's a longish sort of

story.

It's the South African National Rugby Team shirt. It's a longish sort of

story.

Page 46: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

“Tell us something interesting that has nothing to do with CS103.”

With Thanksgiving coming up, let's talk about fruits and vegetables that are

native to the Americas!

With Thanksgiving coming up, let's talk about fruits and vegetables that are

native to the Americas!

Page 47: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Back to CS103!

Page 48: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Main Question for Today:Just how powerful are Turing machines?

Page 49: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

How Powerful are TMs?

● Regular languages, intuitively, are as powerful as computers with finite memory.

● TMs by themselves seem like they can do a fair number of tasks, but it's unclear specifically what they can do.

● Let's explore their expressive power.

Page 50: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Real and “Ideal” Computers

● A real computer has memory limitations: you have a finite amount of RAM, a finite amount of disk space, etc.

● However, as computers get more and more powerful, the amount of memory available keeps increasing.

● An idealized computer is like a regular computer, but with unlimited RAM and disk space. It functions just like a regular computer, but never runs out of memory.

Page 51: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Claim 1: Idealized computers can simulate Turing machines.

“Anything that can be done with a TMcan also be done with an unbounded-

memory computer.”

Page 52: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Clear a1q₂

Go toend

Checkfor 0 q₁q₀

Go tostartq₃

start

0 → , R☐ 0 → 0, R 1 → 1, R

→ ☐ ☐, L

1 → , L☐0 → 0, L 1 → 1, L

→ ☐ ☐, R

qaccq

a

→ ☐ ☐, R

qaccq

r

1 → , R☐

→ ☐ ☐, R0 → 0, R

q₀

q₁

q₂

q₃

0q₁ ◻ R

1qr ◻ R

◻qa ◻ R

q₁ 0 R q₁ 1 R q₂ ◻ Lqr 0 R q₃ ◻ L q

r ◻ R

q₃ 0 L q₃ 1 L q₀ ◻ R

The TM's finite-state control can be encoded as a table,

making it easy for a computer to look up transitions

information.

The TM's finite-state control can be encoded as a table,

making it easy for a computer to look up transitions

information.

Page 53: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Simulating a TM

● To simulate a TM, the computer would need to be able to keep track of● the finite-state control,● the current state,● the position of the tape head, and● the tape contents.

● The tape contents are infinite, but that's because there are infinitely many blanks on both sides.

● We only need to store the “interesting” part of the tape (the parts that have been read from or written to so far.)

…… 1 7 9 0 0

Page 54: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Claim 2: Turing machines can simulate idealized computers.

“Anything that can be done with an unbounded-memory computer can be done

with a TM.”

Page 55: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

What We've Seen

● TMs can● implement loops (basically, every TM we've seen).● make function calls (subroutines).● keep track of natural numbers (written in unary or

in decimal on the tape).● perform elementary arithmetic (equality testing,

multiplication, addition, increment, decrement, etc.).

● perform if/else tests (different transitions based on different cases).

Page 56: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

What Else Can TMs Do?

● Maintain variables.● Have a dedicated part of the tape where the

variables are stored.● We've seen this before: take a look at our machine

for composite numbers, or for increment/decrement.

● Maintain arrays and linked structures.● Divide the tape into different regions corresponding

to memory locations.● Represent arrays and linked structures by keeping

track of the ID of one of those regions.

Page 57: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

A CS107 Perspective

● Internally, computers execute by using basic operations like● simple arithmetic,● memory reads and writes,● branches and jumps,● register operations,● etc.

● Each of these are simple enough that they could be simulated by a Turing machine.

Page 58: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

A Leap of Faith

● It may require a leap of faith, but anything you can do a computer (excluding randomness and user input) can be performed by a Turing machine.

● The resulting TM might be colossal, or really slow, or both, but it would still faithfully simulate the computer.

● We're going to take this as an article of faith in CS103. If you curious for more details, come talk to me after class.

Page 59: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Just how powerful are Turing machines?

Page 60: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

Effective Computation

● An effective method of computation is a form of computation with the following properties:● The computation consists of a set of steps.● There are fixed rules governing how one step leads to

the next.● Any computation that yields an answer does so in

finitely many steps.● Any computation that yields an answer always yields

the correct answer.

● This is not a formal definition. Rather, it's a set of properties we expect out of a computational system.

Page 61: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

The Church-Turing Thesis claims that

every effective method of computation is either equivalent to or weaker than a Turing machine.

“This is not a theorem – it is afalsifiable scientific hypothesis.And it has been thoroughlytested!”

- Ryan Williams

Page 62: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

RegularLanguages CFLs

All Languages

Problems Solvable by

Any Feasible Computing

Machine

Page 63: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

RegularLanguages CFLs

All Languages

Problems solvable by

Turing Machines

Page 64: Turing Machinesweb.stanford.edu/class/archive/cs/cs103/cs103.1172/...Fun problem: design a TM that sorts a string of 0s and 1s, but does so while taking way fewer steps than this machine.

TMs ≈ Computers

● Because Turing machines have the same computational powers as regular computers, we can (essentially) reason about Turing machines by reasoning about actual computer programs.

● Going forward, we're going to switch back and forth between TMs and computer programs based on whatever is most appropriate.

● In fact, our eventual proofs about the existence of impossible problems will involve a good amount of pseudocode. Stay tuned for details!


Recommended