turing s legacy what is computation what is an algorithm
play

Turings Legacy What is computation ? What is an algorithm ? How can - PowerPoint PPT Presentation

15-251: Great Theoretical Ideas in Computer Science Lecture 5 Turings Legacy What is computation ? What is an algorithm ? How can we mathematically define them? Quick Recap Mathematical definition of a (computational) problem: Input /


  1. 15-251: Great Theoretical Ideas in Computer Science Lecture 5 Turing’s Legacy

  2. What is computation ? What is an algorithm ? How can we mathematically define them?

  3. Quick Recap Mathematical definition of a (computational) problem: Input / output function: Language: A simple mathematical model for algorithms: DFAs 0 0 1 q 0 q 1 1

  4. All Languages Decidable Languages (Solvable with “algorithms”) ??? P RIMALITY Regular Languages 0 n 1 n (Solvable with DFAs) 0 n 1 m HALF(AWESOME)

  5. Solving 0 n 1 n with Python # Determines if string S is of form 0^n 1^n def Solution( S ): i = 0 j = len(S)-1 while j >= i: if S[i] != '0' or S[j] != '1': return False i = i + 1 j = j - 1 return True

  6. Solving 0 n 1 n with C /* Determines if string S is of form 0^n 1^n */ int Solution(char S[]) { int i = 0, j; while (S[j] != NULL) /* NULL is end-of-string char */ j++; j--; while (j >= i) { if (S[i] != '0' || S[j] != '1') return 0; /* Reject */ i++; j--; } return 1; /* Accept */ }

  7. All Languages Decidable Languages (Solvable with “algorithms”) P RIMALITY Regular Languages 0 n 1 n (Solvable with DFAs) 0 n 1 m HALF(AWESOME)

  8. All Languages Decidable Languages (Solvable with Python) P RIMALITY Regular Languages 0 n 1 n (Solvable with DFAs) 0 n 1 m HALF(AWESOME)

  9. Question: Should we just define “algorithm” to mean a function written in Python? (allowed access to unlimited memory) Answer: Actually, we’ll see that this would be OK!

  10. Downsides as a formal definition: • Why choose Python? Why not C, or Java, or SML, or…? • Extremely complicated to rigorously define. E.g., official 2011 ISO definition of C requires a 701-page PDF file! • A “philosophical” justification would be nice…

  11. Downsides as a formal definition: • Why choose Python? Why not C, or Java, or SML, or…? • Extremely complicated to rigorously define. E.g., official 2011 ISO definition of C requires a 701-page PDF file! • A “philosophical” justification would be nice…

  12. Claim: Solvable with Python = Solvable with C P RIMALITY 0 n 1 n …

  13. Claim: Solvable with Python = Solvable with C Proof intuition: Our shared experience with programming. “Proof:” Proof: 1. Solvable with Python Solvable with C. The standard Python interpreter is written in C. 2. Solvable with C Solvable with Python. It’s pretty clear one can write a C interpreter in Python.

  14. Interpreters A Python function is (representable by) a string. A Python interpreter is an algorithm M that takes two inputs: P , a Python function; x , a string; and step-by-step simulates P(x) . In particular, M(P,x) accepts if and only if P(x) accepts.

  15. Interpreters You can write a Python interpreter in C. You can write a C interpreter in Python. You can write a Python interpreter in Java. You can write a Java interpreter in Python. You can write a Python interpreter in SML. You can write an SML interpreter in Python. You can write a Python interpreter in Python!! The last one is called a “Universal Python Program”

  16. Solvable with Python What we want to define = Solvable with C to be “computable”. = Solvable with Java = Solvable with SML P RIMALITY Regular Languages 0 n 1 n (Solvable with DFAs) 0 n 1 m HALF(AWESOME)

  17. Downsides as a formal definition: • Why choose Python? Why not C, or Java, or SML, or…? • Extremely complicated to rigorously define. E.g., official 2011 ISO definition of C requires a 701-page PDF file! • A “philosophical” justification would be nice…

  18. Downsides as a formal definition: • Why choose Python? Why not C, or Java, or SML, or…? • Extremely complicated to rigorously define. E.g., official 2011 ISO definition of C requires a 701-page PDF file! • A “philosophical” justification would be nice…

  19. It would be nice to have a totally minimal (“ TM ”) programming language such that: a) can simulate Python, C, Java, SML, etc.; b) is simple enough to reason about rigorously completely mathematically.

  20. ™ Turing Machine Inspired by

  21. Turing’s mathematical abstraction of a computer • A (human) computer writes symbols on paper • WLOG, the paper is a sequence of squares • No upper bound on the number of squares • At most finitely many kinds of symbols • Human observes one square at a time • Human has only finitely many mental states • Human can change symbols and change focus to a neighboring square, but only based on its state and the symbol it observes • Human acts deterministically

  22. the “finite control” read/write“head” (focus) 0 0 0 0 1 0 1 1 input tape (paper) Illustration of a TM trying to decide {0 n 1 n : n } We’ll explain the finite control later

  23. the “finite control” # 0 0 0 1 0 1 1 (blank) the “tape alphabet” in this example is {0,1,#, }

  24. the “finite control” # 0 0 0 1 0 1 1

  25. the “finite control” # 0 0 0 1 0 1 1

  26. the “finite control” # 0 0 0 1 0 1 1

  27. the “finite control” # 0 0 0 1 0 1 1

  28. the “finite control” # 0 0 0 1 0 1 1

  29. the “finite control” # 0 0 0 1 0 1 1

  30. the “finite control” # 0 0 0 1 0 1 1

  31. the “finite control” # 0 0 0 1 0 1 1

  32. the “finite control” # 0 0 0 1 0 1 #

  33. the “finite control” # 0 0 0 1 0 1 #

  34. the “finite control” # 0 0 0 1 0 1 #

  35. the “finite control” # 0 0 0 1 0 1 #

  36. the “finite control” # 0 0 0 1 0 1 #

  37. the “finite control” # 0 0 0 1 0 1 #

  38. the “finite control” # 0 0 0 1 0 1 #

  39. the “finite control” # 0 0 0 1 0 1 #

  40. the “finite control” # # 0 0 1 0 1 #

  41. the “finite control” # # 0 0 1 0 1 #

  42. the “finite control” # # 0 0 1 0 1 #

  43. the “finite control” # # 0 0 1 0 1 #

  44. the “finite control” # # 0 0 1 0 1 #

  45. the “finite control” # # 0 0 1 0 1 #

  46. the “finite control” # # 0 0 1 0 1 #

  47. the “finite control” # # 0 0 1 0 # #

  48. the “finite control” # # 0 0 1 0 # #

  49. the “finite control” # # 0 0 1 0 # #

  50. the “finite control” # # 0 0 1 0 # #

  51. the “finite control” # # 0 0 1 0 # #

  52. the “finite control” # # 0 0 1 0 # #

  53. the “finite control” # # # 0 1 0 # #

  54. the “finite control” # # # 0 1 0 # #

  55. the “finite control” # # # 0 1 0 # #

  56. the “finite control” # # # 0 1 0 # #

  57. REJECT the “finite control” # # # 0 1 0 # #

  58. the “finite control” read/write head 0 0 0 0 1 0 1 1 input tape (paper)

  59. Turing’s mathematical abstraction of a computer • A (human) computer writes symbols on paper • WLOG, the paper is a sequence of squares • No upper bound on the number of squares • At most finitely many kinds of symbols • Human observes one square at a time • Human has only finitely many mental states • Human can change its state, change symbols, and change focus to a neighboring square, but only based on its state and the symbol it observes • Human acts deterministically

  60. The finite control (aka transition rules) q 0 q accept q reject 0,1 R q left q right # 0,1 L ,# L q done? q end

  61. Formal definition of Turing Machines A Turing Machine is a 7-tuple M = (Q, q 0 , q accept , q reject , Σ, Γ, δ): Q is a finite set of states , q 0 Q is the start state , q accept Q is the accept state , q reject Q is the reject state , q reject ≠ q accept . Σ is a finite input alphabet (with Σ), Γ is a finite tape alphabet (with Γ, Σ Γ), δ : Q’×Γ → Q×Γ×{L,R} is the transition function (here Q’ = Q \ {q accept , q reject })

  62. Input alphabet: Σ = { 0 , 1 } Tape alphabet: Σ = { 0 , 1 ,#, } q 0 q accept q reject 0,1 R q left q right # 0,1 L ,# L q done? q end

  63. Formal definition of Turing Machines Rules of computation: Tape starts with input x Σ * , followed by infinite ’s. Control starts in state q 0 , head starts in leftmost square. If the current state is q and head is reading symbol s Γ, the machine transitions according to δ(q,s), which gives: the next state, what tape symbol to overwrite the current square with, and whether the head moves Left or Right. Technicality: moving left from the leftmost square ≡ staying put. Continues until either the accept state or reject state reached. When accept/reject state is reached, M halts . M might also never halt, in which case we say it loops .

  64. Decidable languages Definition: A language L Σ * is decidable if there is a Turing Machine M which: 1. Halts on every input x Σ * . 2. Accepts inputs x L and rejects inputs x L. Such a Turing Machine is called a decider . It ‘decides’ the language L. We like deciders. We don’t like TM’s that sometimes loop.

Recommend


More recommend