{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Week 8: Turing Machines" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from tock import *\n", "from IPython.display import IFrame, HTML" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tuesday\n", "\n", "We have been climbing up the [Chomsky hierarchy](https://en.wikipedia.org/wiki/Chomsky_hierarchy) of language classes (cf. Figure 4.10):\n", "\n", "| Unit | Language class | Automaton | Grammar |\n", "|------|:------------------------------|:--------------------------|:-----------------------------|\n", "| III | Turing-recognizable languages | Turing machines | *Unrestricted grammars* |\n", "| | *Context-sensitive languages* | *Linear bounded automata* | *Context-sensitive grammars* |\n", "| II | Context-free languages | Pushdown automata | Context-free grammars |\n", "| I | Regular languages | Finite automata | Regular expressions |\n", "\n", "(Cells in italics are not core topics in this course, though we will mention them at some point.)\n", "\n", "Now we begin Unit III of the course and finally introduce Turing machines (TMs), which sit at the top of the hierarchy, because, as we will discuss at the end of today's lecture, we think Turing machines define what it is possible to compute." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Definition of Turing machines\n", "\n", "
\n", "

Read both the informal and formal definitions of TMs (165–170). For now, you can skim or skip over the definition of configuration (page 168 at \"As a Turing machine computes\" through the end of page 169), though we will certainly need it later.

\n", "

Watch W8E1: Turing Machines.

\n", "
\n", "\n", "There are many variations out there in the definition of TMs. Be careful if you refer to other sources." ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "The parts of a TM:\n", "\n", "![image.png](attachment:image.png)" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "The start configuration:\n", "\n", "![image.png](attachment:image.png)" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "A transition:\n", "![image.png](attachment:image.png)\n", "\n", "The formal definition of TM implies that it is deterministic: For any state $q$ and symbol $a$, there must be exactly one transition from $q$ on symbol $a$.\n", "\n", "If the machine:\n", "\n", "- is in state $q$\n", "- the current symbol is $a$\n", "\n", "then the machine will:\n", "\n", "- write symbol $b$\n", "- move left (L)\n", "- go to state $r$. \n", "\n", "More about moves:\n", "\n", "- If the head is already on the leftmost cell and a transition says to move left, the head remains on the leftmost cell.\n", "- The move can be L for \"move left\" or R for \"move right\". We also allow S for \"stay\". (My notes may also have N for \"no move\", which means exactly the same thing.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are three possible outcomes of a TM run:\n", "\n", "- If the machine enters the accept state, it halts and accepts the string.\n", "- If the machine enters the reject state, it halts and rejects the string.\n", "- If the machine runs forever, we say that it *loops*.\n", "\n", "Looping is something we've never had to worry about before. Deterministic FAs and PDAs can't loop; nondeterministic FAs and PDAs can loop (because of cycles of $\\varepsilon$-transitions), but it's always possible to change such machines into an equivalent ones that do not loop. But with Turing machines, the possibility of looping is real and *very* important.\n", "\n", "Consequently, there is an important distinction between:\n", "\n", "- A language is *Turing-recognizable* (more commonly called \"recursively enumerable\" or \"computably enumerable\") if there is a TM that accepts all strings in the language and *rejects or loops on* all strings not in the language.\n", "- A language is (Turing-)decidable (also called \"recursive\" or \"computable\") if there is a TM that accepts all strings in the language and *rejects* all strings not in the language." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "People have built various [physical](http://aturingmachine.com) [Turing](https://www.youtube.com/watch?v=ivPv_kaYuwk) [machines](https://www.youtube.com/watch?v=40DkJ9vt5CI&t=14s), including TMs made out of [Lego Mindstorms](https://vimeo.com/channels/staffpicks/44202270), [Lego and air tubes](https://videotheque.cnrs.fr/doc=3001), [wood](https://www.youtube.com/watch?v=vo8izCKHiF0), and [Redstone](https://www.youtube.com/watch?v=pJO__eTIqb0)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IFrame(width=560, height=315, src=\"https://www.youtube.com/embed/E3keLeMwfHY\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IFrame(width=560, height=315, src=\"https://www.youtube.com/embed/vo8izCKHiF0\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IFrame(width=560, height=315, src=\"https://www.youtube.com/embed/KrNTmOSVW-U\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples: formal descriptions\n", "\n", "
\n", "

Read the book's examples of TMs (170–175).

\n", "

Watch W8E2: Turing Machine Examples.

\n", "
\n", "\n", "Here are the book's two examples of formal descriptions. (Note that if you are Tock to *write* Turing machines, Tock's notation is different from Sipser's; see the Tock documentation.)\n", "\n", "Machine $M_2$ recognizes the language $\\{\\texttt{0}^{2^n} \\mid n \\geq 0\\}$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "q1\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "q2\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → ␣,R\n", "\n", "\n", "\n", "\n", "\n", "reject\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "␣ → ␣,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "accept\n", "\n", "\n", "\n", "\n", "\n", "q5\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → 0,L\n", "x → x,L\n", "\n", "\n", "\n", "\n", "\n", "\n", "␣ → ␣,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "␣ → ␣,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "\n", "\n", "\n", "q3\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "␣ → ␣,L\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "\n", "\n", "\n", "q4\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → 0,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "␣ → ␣,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m2 = read_csv(\"tm-m2.csv\")\n", "to_graph(m2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example run; try a few different input strings to see how the run changes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
q1[0] 0
q2␣ [0]
q3␣ x [␣]
q5␣ [x] ␣
q5[␣] x ␣
q2␣ [x] ␣
q2␣ x [␣]
accept␣ x ␣ [␣]
\n", "

accept" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "run(m2, \"0 0\").only_path()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Machine $M_1$ recognizes the language $\\{w\\#w \\mid w \\in \\{\\texttt{0}, \\texttt{1}\\}^\\ast\\}$." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "q1\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "accept\n", "\n", "\n", "\n", "\n", "\n", "q2\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → 0,R\n", "1 → 1,R\n", "\n", "\n", "\n", "\n", "\n", "q4\n", "\n", "\n", "\n", "\n", "\n", "\n", "# → #,R\n", "\n", "\n", "\n", "\n", "\n", "q3\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → 0,R\n", "1 → 1,R\n", "\n", "\n", "\n", "\n", "\n", "q5\n", "\n", "\n", "\n", "\n", "\n", "\n", "# → #,R\n", "\n", "\n", "\n", "\n", "\n", "q8\n", "\n", "\n", "\n", "\n", "\n", "\n", "␣ → ␣,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "\n", "\n", "\n", "q6\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → x,L\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "1 → x,L\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → 0,L\n", "1 → 1,L\n", "x → x,L\n", "\n", "\n", "\n", "\n", "\n", "q7\n", "\n", "\n", "\n", "\n", "\n", "\n", "# → #,L\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → 0,L\n", "1 → 1,L\n", "\n", "\n", "\n", "\n", "\n", "\n", "x → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "0 → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "1 → x,R\n", "\n", "\n", "\n", "\n", "\n", "\n", "# → #,R\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m1 = read_csv(\"tm-m1.csv\")\n", "m1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As explained at the bottom of page 173, the reject state is implicit in this example. You can do this when you write formal descriptions of TMs also." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
q1[0] 1 1 0 0 0 # 0 1 1 0 0 0
q2x [1] 1 0 0 0 # 0 1 1 0 0 0
q2x 1 [1] 0 0 0 # 0 1 1 0 0 0
q2x 1 1 [0] 0 0 # 0 1 1 0 0 0
q2x 1 1 0 [0] 0 # 0 1 1 0 0 0
q2x 1 1 0 0 [0] # 0 1 1 0 0 0
q2x 1 1 0 0 0 [#] 0 1 1 0 0 0
q4x 1 1 0 0 0 # [0] 1 1 0 0 0
q6x 1 1 0 0 0 [#] x 1 1 0 0 0
q7x 1 1 0 0 [0] # x 1 1 0 0 0
q7x 1 1 0 [0] 0 # x 1 1 0 0 0
q7x 1 1 [0] 0 0 # x 1 1 0 0 0
q7x 1 [1] 0 0 0 # x 1 1 0 0 0
q7x [1] 1 0 0 0 # x 1 1 0 0 0
q7[x] 1 1 0 0 0 # x 1 1 0 0 0
q1x [1] 1 0 0 0 # x 1 1 0 0 0
q3x x [1] 0 0 0 # x 1 1 0 0 0
q3x x 1 [0] 0 0 # x 1 1 0 0 0
q3x x 1 0 [0] 0 # x 1 1 0 0 0
q3x x 1 0 0 [0] # x 1 1 0 0 0
q3x x 1 0 0 0 [#] x 1 1 0 0 0
q5x x 1 0 0 0 # [x] 1 1 0 0 0
q5x x 1 0 0 0 # x [1] 1 0 0 0
q6x x 1 0 0 0 # [x] x 1 0 0 0
q6x x 1 0 0 0 [#] x x 1 0 0 0
q7x x 1 0 0 [0] # x x 1 0 0 0
q7x x 1 0 [0] 0 # x x 1 0 0 0
q7x x 1 [0] 0 0 # x x 1 0 0 0
q7x x [1] 0 0 0 # x x 1 0 0 0
q7x [x] 1 0 0 0 # x x 1 0 0 0
q1x x [1] 0 0 0 # x x 1 0 0 0
q3x x x [0] 0 0 # x x 1 0 0 0
q3x x x 0 [0] 0 # x x 1 0 0 0
q3x x x 0 0 [0] # x x 1 0 0 0
q3x x x 0 0 0 [#] x x 1 0 0 0
q5x x x 0 0 0 # [x] x 1 0 0 0
q5x x x 0 0 0 # x [x] 1 0 0 0
q5x x x 0 0 0 # x x [1] 0 0 0
q6x x x 0 0 0 # x [x] x 0 0 0
q6x x x 0 0 0 # [x] x x 0 0 0
q6x x x 0 0 0 [#] x x x 0 0 0
q7x x x 0 0 [0] # x x x 0 0 0
q7x x x 0 [0] 0 # x x x 0 0 0
q7x x x [0] 0 0 # x x x 0 0 0
q7x x [x] 0 0 0 # x x x 0 0 0
q1x x x [0] 0 0 # x x x 0 0 0
q2x x x x [0] 0 # x x x 0 0 0
q2x x x x 0 [0] # x x x 0 0 0
q2x x x x 0 0 [#] x x x 0 0 0
q4x x x x 0 0 # [x] x x 0 0 0
q4x x x x 0 0 # x [x] x 0 0 0
q4x x x x 0 0 # x x [x] 0 0 0
q4x x x x 0 0 # x x x [0] 0 0
q6x x x x 0 0 # x x [x] x 0 0
q6x x x x 0 0 # x [x] x x 0 0
q6x x x x 0 0 # [x] x x x 0 0
q6x x x x 0 0 [#] x x x x 0 0
q7x x x x 0 [0] # x x x x 0 0
q7x x x x [0] 0 # x x x x 0 0
q7x x x [x] 0 0 # x x x x 0 0
q1x x x x [0] 0 # x x x x 0 0
q2x x x x x [0] # x x x x 0 0
q2x x x x x 0 [#] x x x x 0 0
q4x x x x x 0 # [x] x x x 0 0
q4x x x x x 0 # x [x] x x 0 0
q4x x x x x 0 # x x [x] x 0 0
q4x x x x x 0 # x x x [x] 0 0
q4x x x x x 0 # x x x x [0] 0
q6x x x x x 0 # x x x [x] x 0
q6x x x x x 0 # x x [x] x x 0
q6x x x x x 0 # x [x] x x x 0
q6x x x x x 0 # [x] x x x x 0
q6x x x x x 0 [#] x x x x x 0
q7x x x x x [0] # x x x x x 0
q7x x x x [x] 0 # x x x x x 0
q1x x x x x [0] # x x x x x 0
q2x x x x x x [#] x x x x x 0
q4x x x x x x # [x] x x x x 0
q4x x x x x x # x [x] x x x 0
q4x x x x x x # x x [x] x x 0
q4x x x x x x # x x x [x] x 0
q4x x x x x x # x x x x [x] 0
q4x x x x x x # x x x x x [0]
q6x x x x x x # x x x x [x] x
q6x x x x x x # x x x [x] x x
q6x x x x x x # x x [x] x x x
q6x x x x x x # x [x] x x x x
q6x x x x x x # [x] x x x x x
q6x x x x x x [#] x x x x x x
q7x x x x x [x] # x x x x x x
q1x x x x x x [#] x x x x x x
q8x x x x x x # [x] x x x x x
q8x x x x x x # x [x] x x x x
q8x x x x x x # x x [x] x x x
q8x x x x x x # x x x [x] x x
q8x x x x x x # x x x x [x] x
q8x x x x x x # x x x x x [x]
q8x x x x x x # x x x x x x [␣]
acceptx x x x x x # x x x x x x ␣ [␣]
\n", "

accept" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "run(m1, \"0 1 1 0 0 0 # 0 1 1 0 0 0\").only_path()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Writing Turing machines\n", "\n", "

\n", "

Read the subsection \"Terminology for Describing Turing Machines\" (184–185).

\n", "
\n", "\n", "Writing Turing machines is extremely tedious -- much more so than assembly language. Although some authors introduce a mechanism for defining \"macros\", Sipser takes a totally different approach, proposing three ways of defining Turing machines.\n", "\n", "- You've seen formal descriptions. When you are asked for a formal description, either a table or a state diagram is fine.\n", "\n", "- You've also seen pseudocode-like descriptions of Turing machines; Sipser calls these _implementation-level descriptions_. These abstract away from states and transitions, but they still speak in terms of the head moving on the tape and reading and writing symbols on the tape. They shouldn't, for example, make use of variables or arithmetic. See the examples in the book to get an idea of what is allowed and what isn't.\n", "\n", "- _High-level descriptions_ will come later and abstract even away from the tape.\n", "\n", "When we ask you to write a TM, we'll always specify what kind of description we're looking for." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Thursday" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Church-Turing thesis\n", "\n", "
\n", "

Read the rest of Section 3.3 (182–184).

\n", "

Watch W8E3: The Church-Turing Thesis.

\n", "
\n", "\n", "The Church-Turing thesis (CTT) is also often simply called \"Church's thesis\" but the name \"Church-Turing thesis\" acknowledges Turing's key role in developing the thesis.\n", "\n", "Sipser's concise statement of the thesis is \"*Intuitive notion of algorithms* equals *Turing machine algorithms*.\" It is a thesis (or possibly, a definition), not a theorem. Rather than prove it, we can only give arguments in favor of it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first justification comes from Turing's original paper (1936), where proposed Turing machines as a model of what _humans_ do when they compute. He imagined a computing person in an idealized scenario:\n", "\n", "- He has an infinitely long paper tape, divided into squares.\n", "- He can write one symbol in each square, and the number of possible symbols is finite (e.g., `0` to `9`).\n", "- He can only look at a finite number of squares at a time. \n", "- He can only move a finite distance at a time.\n", "- He has only a finite number of “states of mind.”\n", "\n", "Basically this is an appeal to intuition that when people compute, this is what they do. Furthermore, he proved (quite briefly) that Turing machines can perform any such computation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition to Turing's original justification, another justification for the CTT, the one more commonly cited today, is that many other proposals have been made for models of computability, and for the most part they have all turned out to be equivalent to Turing machines. The end of Section 3.2 alludes to some of these. The most important ones are probably:\n", "\n", "- The [untyped lambda calculus](https://en.wikipedia.org/wiki/Lambda_calculus)\n", "- [Partial recursive functions](https://en.wikipedia.org/wiki/Μ-recursive_function)\n", "- [Unrestricted grammars](https://en.wikipedia.org/wiki/Unrestricted_grammar)\n", "\n", "[Accidentally Turing Complete](http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html) is a collection of other weird things that are equivalent to TMs.\n", "\n", "An important subcase of this argument is that no matter how we try to augment Turing machines to make them more powerful, it seems to always turn out to be equivalent to standard Turing machines. This is the topic of the next class." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.1" } }, "nbformat": 4, "nbformat_minor": 4 }