<<

SCIENCE Universality and SEDGEWICK/WAYNE

Fundamental questions • What is a general-purpose computer? • Are there limits on the power of digital ? • Are there limits on the power of we can build?

Computer Science

Pioneering work at Princeton in the 1930s. Computer 18. Turing Machines Science An Interdisciplinary Approach

R O B E T S E D G E W I C K KEVIN WAYNE Kurt Gödel Alsonzo Church Section 7.4 18621943 19061978 19031995 19121954

http://introcs.cs.princeton.edu Asked the questions Solved the math Solved the decision Provided THE answers problem problem

2

Context: and SEDGEWICK/WAYNE

Principia Mathematics Mathematics. Any formal system powerful enough to express arithmetic. Peano arithmetic Zermelo-Fraenkel set theory . . . Complete. Can prove truth or falsity of any arithmetic statement. Consistent. Cannot prove contradictions like 2 + 2 = 5. Decidable. An exists to determine truth of every statement. 18. Turing Machines

•A simple model of Q. (Hilbert, 1900) Is mathematics complete and consistent? •Universality A. (Gödel's Incompleteness Theorem, 1931) NO (!!!) •Computability •Implications Q. (Hilbert's ) Is mathematics decidable? A. (Church 1936, Turing 1936) NO (!!)

3 CS.18.A.Turing. Starting point Previous lecture: DFAs

Goals A DFA is an that solves a pattern matching problem. • Develop a that encompasses all known computational processes. • A string is specified on an input tape (no limit on its length). • Make the model as simple as possible. • The DFA reads each character on input tape once, moving left to right. • The DFA lights "YES" if it recognizes the string, "NO" otherwise. Each DFA defines a set of strings (all the strings that it recognizes). Example: A familiar computational process.

NO

1 0 1 0

3 1 4 2 Characteristics 7 1 8 2 YES • Discrete. 1 0 3 2 4 • Local. b b a a b b a b b • States.

5 6

This lecture: Turing machines Previous lecture: DFA details and example

A (TM) is an abstract model of computation. A DFA is an abstract machine with a finite of states, each labelled Y or N and • A string is specified on a tape (no limit on its length). transitions between states, each labelled with a symbol. One state is the start state. • The TM reads and writes characters on the tape, moving left or right. • Begin in the start state. • The TM lights "YES" if it recognizes the string, "NO" otherwise. • Read an input symbol and move to the indicated state. • The TM may halt, leaving the result of the computation on the tape. • Repeat until the last input symbol has been read. • Turn on the "YES" or "NO" light according to the label on the current state.

NO NO

HALT a a a Does this DFA recognize Y b N b N this string? YES b YES

...... b b a a b b a b b

7 8 This lecture: Turing Machine details and example DFAs vs TMs

A Turing Machine is an abstract machine with a finite number of states, each labelled Y, N, Similarities H, , or R and transitions between states, each labelled with a read/write pair of symbols. • Simple model of computation. • Begin in the designated start state. • Input on tape is a finite string with symbols from a finite alphabet. • Read an input symbol, move to the indicated state and write the indicated output. • Finite number of states. • Move tape head left if new state is labelled L, right if it is labelled R. • State transitions determined by current state and input symbol. • Repeat until entering a state labelled Y, N, or H ( and turn on associated light). Differences

NO 1:0 #:1 DFAs TMs R #:# L H HALT • Can read input symbols from the tape. • Can read from or write onto the tape. 0:1 • Can only move tape head to the right. • Can move tape head either direction. YES • Tape is finite (a string). • Tape does not end (either direction). • One state transition per input symbol. • No limit on number of transitions. # # # 1 0 1 1 0 0 1 1 1 # # # • Can recognize (turn on "YES" or "NO"). • Can also compute (with output on tape).

9 10

TM example 1: Binary decrementer TM example 1: Binary decrementer

Q. What happens when we try to decrement 0?

NO NO 0:1 0:1 #:# R #:# L 1:0 H HALT R #:# L 1:0 H HALT

YES YES

# # # 01 0 1 0 1 0 0 0 0 # # # # # # 1# # # # # 0 0 0 0 # # #

A. Doesn't halt! TMs can have bugs, too. Input 1 0 1 0 1 0 0 0 0

Output 1 0 1 0 0 1 1 1 1 Fix to avoid infinite loop. Check for #.

11 12 TM example 2: Binary incrementer TM example 3: Binary (method)

Note: This adds a 1 at the left as the To compute x + y last step when incrementing 111...1

NO • Move right to right end of y. ... # # 1 0 1 1 + 1 0 1 0 # # ... 1:0 #:1 R #:# L H HALT • Decrement y. ... # # 1 0 1 1 + 1 0 0 1 # # ... 0:1 YES • Move left to right end of x (left of +) . ... # # 1 0 1 1 + 1 0 0 1 # # ...

• Increment x. ... # # 1 1 0 0 + 1 0 0 1 # # ... # # # 10 0 1 0 0 1 1 1 1 # # #

• Continue until y = 0 is decremented. ... # 1 0 1 0 1 + 1 1 1 1 # # ... Found + when seeking 1? Just decremented 0.

Input 1 0 1 0 0 1 1 1 1 • Clean up by erasing + and 1s. ... # 1 0 1 0 1 # # # # # # # ... Clean up Output 1 0 1 0 1 0 0 0 0

13 14

TM example 3: Binary adder Simulating an infinite tape with two stacks

# 1 0 1 1 + 1 0 1 0 # NO Q. How can we simulate a tape that is infinite on both ends? 0:1 Find + A. Use two stacks, one for each end.

# 1 0 1 1 + 1 0 0 1 # Decrement y L 1:0 L HALT private Stack left; +:# private Stack right; Halt +:+ # 1 0 1 1 + 1 0 0 1 # 1:# YES private char read() # # # 1 0 1 1 + 1 0 1 0 # # # { R #:# H if (right.isEmpty()) return '#'; return right.pop(); "tape head" is top of right stack # 1 1 0 0 + 1 0 0 1 # Clean Up } assumes #:# write just 1 0:1 private char write(char c) after each { right.push(c); } read 1 move 1 ... Increment x Find right end R L right private void moveRight() + + #:1 { 1 1 1 0 1 0 1 + 1 1 1 1 # 1:0 char c = '#'; move 0 1 0 if (!right.isEmpty()) c = right.pop(); left left.push(c); 0 0 0 1 } 1 0 1 0 1 # # # # # # 1 1 1 0 private void moveLeft() # # # 1 0 1 1 + 1 0 1 0 # # # { # # # # char c = '#'; empty? assume # is there if (!left.isEmpty()) c = left.pop(); right.push(c); } 15 16 Simulating the operation of a Turing machine COMPUTER SCIENCE SEDGEWICK/WAYNE

public class TM fixes bug { 0:1 #:# private int state; R #:# L 1:0 H private int start; 0 1 2 private String[] action; private ST[] next; private ST[] out; action[] next[] out[] /* Stack code from previous slide */ 0 1 # 0 1 # public TM(In in) { /* Fill in data structures */ } 0 R 0 0 0 1 0 0 1 # public String simulate(String input) 1 L 1 1 2 2 1 1 0 # { 18. Turing Machines state = start; 2 H 2 2 2 2 2 0 1 # for (int i = input.length()-1; i >= 0; i--) entries in gray are implicit in graphical representation right.push(input.charAt(i); while (action(state).equals("L") || •A simple model of computation action(state).equals("R")) % more dec.txt { 3 01# 0 char c = read(); •Universality R 0 0 1 0 1 # state = next[state].get(c); L 1 2 2 1 0 # write(out[state].get(c)); •Computability if (action[state].equals("R") moveRight(); H 2 2 2 0 1 # if (action[state].equals("L") moveLeft(); % java TM dec.txt } 000111 •Implications return action[state]; 000110 } 010000 public static void main(String[] args) 001111 { /* Similar to DFA's main() */ } 000000 } 111111

17 CS.18.B.Turing.Universality

Representing a Turing machine (UTM)

NO Turing's key insight. A TM is nothing more than a finite sequence of symbols. Universal Turing machine. A TM that takes as input HALT any TM and input for that TM on a TM tape. UTM dec.txt YES decrementer TM 0:1 #:# 3 01# 0 . . . # # # 1 1 0 0 0 3 0 1 # 0 R 0 0 1 0 1 $ L 1 2 1 1 0 $ H 2 2 2 0 1 $ / R 0 0 1 0 1 # R #:# L 1:0 H L 1 2 2 1 0 # 0 1 2 H 2 2 2 0 1 # input to decrementer TM decrementer TM

Result. Whatever would happen if that TM were to NO Implication. Can put a TM and its input on a TM tape. run with that input (could loop or end in Y, N or H). UTM HALT YES

. . . # # # 1 0 1 1 1 # # # 1 1 0 0 0 3 0 1 # 0 R 0 0 1 0 1 # L 1 2 1 1 0 # H 2 2 2 0 1 #

result that decrementer TM would produce

Turing. Simulating a TM is a simple computational task, so there exists a TM to do it: A UTM. Profound implication. We can use a TM to simulate the operation of any TM. Easier for us to think about. Implement Java simulator as a TM.

19 20 Implementing a universal Turing machine Universality

Note: This booksite UTM uses a Java simulator gives a roadmap transition-based TM representation UTM: A simple and universal model of computation. that is easier to simulate than the • No need for constructor because everything state-based one used in this lecture. is already on the tape. Definition. A task is computable if a Turing machine exists that computes it. A 24-state UTM • Simulating the infinite tape is a bit easier because TM has an infinite tape. NO Theorem (Turing, 1936). It is possible to invent a single UTM HALT • Critical part of the calculation is to update machine which can be used to do any computable task. YES state as indicated......

Profound implications • Any machine that can simulate a TM can simulate a UTM. Want to see the details or build your own TM? • Any machine that can simulate a TM can do any computable task. Use the booksite's TM development environment.

Warning. TM development may be addictive. Amazed that it's only 24 states? The record is 4 states, 6 symbols. 21 22

A profound connection to the real world Evidence in favor of the Church-Turing thesis

Church-Turing thesis. Turing machines can do anything that can be described by any Evidence. Many, many models of computation have turned out to be equivalent (universal). physically harnessable process of this universe: All computational devices are equivalent. model of computation description enhanced Turing machines multiple heads, multiple tapes, 2D tape, nondeterminism Remarks New model of computation or new physical process? untyped method to define and manipulate functions A thesis, not a theorem. Use to prove equivalence. • • recursive functions functions dealing with computation on integers • Not subject to proof. • Example: TOY simulator in Java. unrestricted grammars iterative string replacement rules used by linguists • Is subject to falsification. • Example: Java compiler in TOY. extended Lindenmayer systems parallel string replacement rules that model plant growth programming languages Java, C, C++, Perl, Python, PHP, Lisp, PostScript, Excel random access machines registers plus main memory, e.g., TOY, Pentium = cellular automata cells which change state based on local interactions Implications quantum computer compute using superposition of quantum states • No need to seek more powerful machines or languages. NO DNA computer compute using biological operations on DNA

• Enables rigorous study of computation (in this universe). HALT PCP systems string matching puzzles (stay tuned) = YES

...... 8 decades without a counterexample, and counting. 23 24 Example of a universal model: Extended Lindenmayer systems for synthetic plants COMPUTER SCIENCE SEDGEWICK/WAYNE

18. Turing Machines

•A simple model of computation •Universality •Computability •Implications

http://astronomy.swin.edu.au/~pbourke/modelling/plants 25 CS.18.C.Turing.Computability

Post's correspondence problem (PCP) Post's correspondence problem (PCP)

PCP. A family of puzzles, each based on a set of cards. PCP. A family of puzzles, each based on a set of cards. • N types of cards. • N types of cards. • No limit on the number of cards of each type. • No limit on the number of cards of each type. • Each card has a top string and bottom string. • Each card has a top string and bottom string. Does there exist an arrangement of cards with matching top and bottom strings? Does there exist an arrangement of cards with matching top and bottom strings?

BAB A AB BA BAB A AB BA Example 1 (N = 4). Example 2 (N = 4). A ABA B B A BAB B A

0 1 2 3 0 1 2 3

A BA BAB AB A Solution 1 (easy): YES. Solution 2 (easy): NO. No way to match even the first character! ABA B A B ABA

1 3 0 2 1 27 28 Post's correspondence problem (PCP) Post's correspondence problem (PCP)

PCP. A family of puzzles, each based on a set of cards. PCP. A family of puzzles, each based on a set of cards. • N types of cards. • N types of cards. • No limit on the number of cards of each type. • No limit on the number of cards of each type. • Each card has a top string and bottom string. • Each card has a top string and bottom string. Does there exist an arrangement of cards with matching top and bottom strings? Does there exist an arrangement of cards with matching top and bottom strings?

Example 3 (created by Andrew Appel). . . . S[ X BAB 11A 1 [A ] [ B1 B] [1A]E

S[11111X][ 1X A A1 1 [B ] [ 1B A] E 0 1 2 3 4 N 0 1 2 3 4 5 6 7 8 9 10 A reasonable idea. Write a program to take N card types as input and solve PCP.

Challenge for the bored: Find a solution that starts with a card of type 0. A surprising fact. It is not possible to write such a program.

29 30

Another impossible problem Undecidability of the

Halting problem. Write a Java program that reads in code for Java static method f() Definition. A yes-no problem is undecidable if no Turing machine exists to solve it. and an input x, and decides whether or not f(x) results in an infinite loop. (A problem is computable if there does exist a Turing machine that solves it.)

Example 1 (easy). Example 2 (difficulty unknown).

public void f(int x) public void f(int x) Theorem (Turing, 1936). The halting problem is undecidable. { { while (x != 1) while (x != 1) { { Involves Collatz conjecture (see Recursion lecture) if (x % 2 == 0) x = x / 2; if (x % 2 == 0) x = x / 2; else x = 2*x + 1; else x = 3*x + 1; } } } } Profound implications f(7): 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 • There exists a problem that no Turing machine can solve. Halts only if x is a positive power of 2 f(-17): -17 -50 -25 -74 -37 -110 -55 -164 -82 -41 -122 ... -17 ... • There exists a problem that no computer can solve. • There exist many problems that no computer can solve (stay tuned). Next. A proof that it is not possible to write such a program.

31 32 Warmup: self-referential statements

Liar paradox (dates back to ancient Greek philosophers). • Divide all statements into two categories: true and false. • Consider the statement "This statement is false." • Is it true? If so, then it is false, a contradiction. • Is it false? If so, then it is true, a contradiction. Logical conclusion. Cannot label all statements as true or false.

Source of the difficulty: Self-reference.

33 34

Proof of the undecidability of the halting problem

Theorem (Turing, 1936). The halting problem is undecidable.

Proof outline. • Assume the existence of a halt(f, x) that solves the problem.

public boolean halt(String f, String x) { By universality, may as well use Java. if ( /* something terribly clever */ ) return true; else return false; (If this exists, we could simulate it on a TM.) }

• Arguments: A function f and input x, encoded as strings. • Return value: true if f(x) halts and false if f(x) does not halt. • Always halts. • Proof idea: Reductio ad absurdum: if any logical argument based on an assumption leads to an absurd statement, then the assumption is false.

35 36 Proof of the undecidability of the halting problem COMPUTER SCIENCE SEDGEWICK/WAYNE

Theorem (Turing, 1936). The halting problem is undecidable.

Proof. Solution to the problem • Assume the existence of a function halt(f, x) public boolean halt(String f, String x) { that solves the problem. if ( /* f(x) halts */ ) return true; else return false; • Create a function strange(f) that goes into an } 18. Turing Machines infinite loop if f(f) halts and halts otherwise. • Call strange() with itself as argument. A client •A simple model of computation If strange(strange) halts, then public void strange(String f) • { •Universality strange(strange) goes into an infinite loop. if (halt(f, f)) while (true) { } // infinite loop •Computability • If strange(strange) does not halt, then } •Implications strange(strange) halts. Reductio ad absurdum. A contradiction • halts? strange(strange) • halt(f,x) cannot exist. does not halt?

37 CS.18.D.Turing.Implications

Implications of undecidability Implications for programming systems

Primary implication. If you know that a problem is undecidable... Q. Why is debugging difficult? A. All of the following are undecidable. ...don't try to solve it! Hey, Alice. We came up with a great idea at our hackathon. We' going for startup funding. Halting problem. Give a function f, does it halt on a given input x? What's the idea? Totality problem. Give a function f, does it halt on every input x? No-input halting problem. Give a function f with no input, does it halt? An app that you can use to make sure that any app you Program equivalence. Do two functions f() and g() always return same value? download won't hang your phone! Uninitialized variables. Is the variable x initialized before it's used? Dead-code elimination. Does this statement ever get executed? Ummm. I think UNDECIDABLE that's undecidable. Prove each by to the halting problem: A solution would solve the halting problem. ?

Will your app work on itself ? Q. Why are program development environments complicated? ??? A. They are programs that manipulate programs.

39 40 Another Another undecidable problem

The Entscheidungsproblem (Hilbert, 1928) "Decision problem" • Given a first-order logic with a finite number of additional axioms. • Is the statement provable from the axioms using the rules of logic?

UNDECIDABLE David Hilbert 18621943

Lambda calculus • Formulated by Church in the 1930s to address the Entscheidungsproblem. UNDECIDABLE • Also the basis of modern functional languages.

Alsonso Church 19031995

Theorem (Church and Turing, 1936). The Entscheidungsproblem is undecidable. Theorem (Post, 1946). Post's correspondence problem is undecidable.

41 42

Examples of undecidable problems from computational mathematics Examples of undecidable problems from computer science

Hilbert's 10th problem Ex. 1 (, , )= + Optimal data compression • Given a multivariate polynomial f (x, y, z, ...). YES (, , )= • Find the shortest program to produce a given string. • Does f have integral roots ? (Do there exist integers x, y, z, such that f (x, y, z, ...) = 0 ? ) Ex. 2 (, )= + NO • Find the shortest program to produce a given picture.

UNDECIDABLE UNDECIDABLE produced by a 34-line Java program

Private Sub AutoOpen() Definite integration On Error Resume Next cos() cos() If System.PrivateProfileString("", CURRENT_USER\Software Ex. 1 YES = Virus identification \Microsoft\Office\9.0\Word\Security", • Given a rational function f (x ) composed of "Level") <> "" Then + + CommandBars("Macro").Controls("Security...").Enabled = False polynomial and trigonometric functions. . . . • Is this code equivalent to this known virus? For oo = 1 To AddyBook.AddressEntries.Count Peep = AddyBook.AddressEntries(x) BreakUmOffASlice.Recipients.Add Peep x = x + 1 If x > 50 Then oo = AddyBook.AddressEntries.Count Does exist? cos() Next oo • () • Does this code contain a virus? . . . Ex. 2 NO BreakUmOffASlice.Subject = "Important Message From " & Application.UserName UNDECIDABLE BreakUmOffASlice.Body = "Here is that document you asked for ... don't show anyone else ;-)" . . . UNDECIDABLE 43 Melissa virus (1999) 44 Turing's key ideas Alan Turing: the father of computer science

Turing's paper in the Proceedings of the London Mathematical Society "On Computable , With an Application to the Entscheidungsproblem" It was not only a matter of abstract mathematics, not only a play of symbols, was one of the most impactful scientific papers of the 20th century. for it involved thinking about what people did in the physical world…. It was a play of imagination like that of Einstein or von Neumann, doubting the axioms rather than measuring efects…. What he had done was to combine such a Alan Turing The Turing machine. A formal model of computation. 19121954 naïve mechanistic picture of the mind with the precise logic of pure mathematics. His machines – soon to be called Turing machines – ofered Equivalence of programs and data. Encode both as strings and compute with both. a bridge, a connection, between abstract symbols and the physical world.

Universality. Concept of general-purpose programmable computers. — John Hodges, in Alan Turing, the Enigma

Church-Turing thesis. If it is computable at all, it is computable with a Turing machine.

Computability. There exist inherent limits to computation. NO UTM HALT = YES

Turing's paper was published in 1936, ten years before Eckert and Mauchly worked on ENIAC (!) ...... A Universal Turing Machine Suggestion: Now go back and read the beginning read the paper... of the lecture on von Neumann machines A Google data center 45 46

COMPUTER SCIENCE SEDGEWICK/WAYNE

Computer Science

Computer 18. Turing Machines Science An Interdisciplinary Approach

R O B E R T S E D G E W I C K KEVIN WAYNE Section 7.4

http://introcs.cs.princeton.edu