Turing Machines Part Three

Similar documents
Decidability and Undecidability

Turing Machines Part III

Turing Machines Part Two

Turing Machines Part Three

CS 301. Lecture 18 Decidable languages. Stephen Checkoway. April 2, 2018

CSCI3390-Lecture 6: An Undecidable Problem

A Note on Turing Machine Design

Turing Machines Part II

Reductions in Computability Theory

Theory of Computation

Introduction to Turing Machines. Reading: Chapters 8 & 9

Lecture Notes: The Halting Problem; Reductions

CSE 105 THEORY OF COMPUTATION

Further discussion of Turing machines

1 Acceptance, Rejection, and I/O for Turing Machines

Turing Machines Part II

CSE 105 Theory of Computation

Turing Machine Recap

Most General computer?

A non-turing-recognizable language

The Unsolvability of the Halting Problem. Chapter 19

CS5371 Theory of Computation. Lecture 10: Computability Theory I (Turing Machine)

CPSC 421: Tutorial #1

CSCI3390-Assignment 2 Solutions

Complexity Theory Part I

CS 361 Meeting 26 11/10/17

CS5371 Theory of Computation. Lecture 10: Computability Theory I (Turing Machine)

Decision Problems with TM s. Lecture 31: Halting Problem. Universe of discourse. Semi-decidable. Look at following sets: CSCI 81 Spring, 2012

Turing Machines Part One

CSE 105 THEORY OF COMPUTATION

1 Showing Recognizability

Announcements. Problem Set 6 due next Monday, February 25, at 12:50PM. Midterm graded, will be returned at end of lecture.

V Honors Theory of Computation

CSE 105 Theory of Computation

Computability Crib Sheet

Harvard CS 121 and CSCI E-121 Lecture 14: Turing Machines and the Church Turing Thesis

Turing Machines. Lecture 8

CSE 105 Theory of Computation

Turing Machines, diagonalization, the halting problem, reducibility

CS154, Lecture 10: Rice s Theorem, Oracle Machines

Finite Automata Part Two

CS481F01 Solutions 8

CS 125 Section #10 (Un)decidability and Probability November 1, 2016

Time-bounded computations

Reading Assignment: Sipser Chapter 3.1, 4.2

Introduction to Languages and Computation

Turing Machines. Reading Assignment: Sipser Chapter 3.1, 4.2

Turing Machines Part Three

Decidable Languages - relationship with other classes.

Automata Theory CS S-FR2 Final Review

Decidability: Church-Turing Thesis

CSE 105 THEORY OF COMPUTATION

Midterm Exam 2 CS 341: Foundations of Computer Science II Fall 2018, face-to-face day section Prof. Marvin K. Nakayama

Decidable and undecidable languages

CSCE 551: Chin-Tser Huang. University of South Carolina

More Turing Machines. CS154 Chris Pollett Mar 15, 2006.

Lecture 12: Mapping Reductions

Exam Computability and Complexity

} Some languages are Turing-decidable A Turing Machine will halt on all inputs (either accepting or rejecting). No infinite loops.

SD & Turing Enumerable. Lecture 33: Reductions and Undecidability. Lexicographically Enumerable. SD & Turing Enumerable

CSE 105 THEORY OF COMPUTATION

The Turing machine model of computation

Turing Machines (TM) The Turing machine is the ultimate model of computation.

CSE 105 THEORY OF COMPUTATION

CpSc 421 Final Exam December 6, 2008

6.045: Automata, Computability, and Complexity Or, Great Ideas in Theoretical Computer Science Spring, Class 10 Nancy Lynch

CpSc 421 Homework 9 Solution

Week 2: Defining Computation

Congratulations you're done with CS103 problem sets! Please evaluate this course on Axess!

Reducability. Sipser, pages

Undecidable Problems and Reducibility

Midterm Exam 2 CS 341: Foundations of Computer Science II Fall 2016, face-to-face day section Prof. Marvin K. Nakayama

4.2 The Halting Problem

Decidability (What, stuff is unsolvable?)

Complexity Theory Part I

Automata & languages. A primer on the Theory of Computation. Laurent Vanbever. ETH Zürich (D-ITET) October,

TURING MAHINES

TAKE-HOME: OUT 02/21 NOON, DUE 02/25 NOON

CSCE 551 Final Exam, April 28, 2016 Answer Key

MA/CSSE 474 Theory of Computation

Finite Automata Part One

Finite Automata Part One

Complexity Theory Part II

Mapping Reductions. Mapping Reductions. Introduction to Computability. Theory. Mapping Reductions. Lecture13: Mapping. Reductions

CSE 105 THEORY OF COMPUTATION

6.045: Automata, Computability, and Complexity Or, Great Ideas in Theoretical Computer Science Spring, Class 8 Nancy Lynch

FORMAL LANGUAGES, AUTOMATA AND COMPUTATION

CS5371 Theory of Computation. Lecture 12: Computability III (Decidable Languages relating to DFA, NFA, and CFG)

Turing Machines. Chapter 17

CSE 105 THEORY OF COMPUTATION

CSCE 551 Final Exam, Spring 2004 Answer Key

ECS 120 Lesson 18 Decidable Problems, the Halting Problem

Announcements. Final exam review session tomorrow in Gates 104 from 2:15PM 4:15PM Final Friday Four Square of the quarter!

CS154, Lecture 17: conp, Oracles again, Space Complexity

CSE 555 Homework Three Sample Solutions

Decidability: Reduction Proofs

Nondeterministic finite automata

Finite Automata Part One

Testing Emptiness of a CFL. Testing Finiteness of a CFL. Testing Membership in a CFL. CYK Algorithm

6.045J/18.400J: Automata, Computability and Complexity. Quiz 2. March 30, Please write your name in the upper corner of each page.

Transcription:

Turing Machines Part Three

What problems can we solve with a computer? What kind of computer?

Very Important Terminology Let M be a Turing machine. M accepts a string w if it enters an accept state when run on w. M rejects a string w if it enters a reject state when run on w. M loops infinitely (or just loops) on a string w if when run on w it enters neither an accept nor a reject state. M does not accept w if it either rejects w or loops infinitely on w. M does not reject w w if it either accepts w or loops on w. M halts on w if it accepts w or rejects w. does not reject does not accept Accept Loop Reject halts

Recognizable Languages (RE) The language of a Turing machine M, denoted L( M), is the set of all strings that M accepts: L(M) = { w Σ* M accepts w } For any w L( M), M accepts w. For any w L( M), M does not accept w. M might reject, or it might loop forever. A language is called recognizable if it is the language of some TM. A TM M where L( M) = L is called a recognizer for L. Notation: the class RE is the set of all recognizable languages. L RE L is recognizable

Decidable Languages (R) Is it possible to write a TM that is guaranteed never to loop regardless of input? Yes, such TMs do exist. They re called deciders. A language L is called decidable if there exists a decider M such that L( M) = L. Equivalently, a language L is decidable if there is a TM M such that If w L, then M accepts w. If w L, then M rejects w. The class R is the set of all decidable languages. L R L is decidable

R and RE Languages Every decider is a Turing machine, but not every Turing machine is a decider. This means that R RE. But is it a strict subset? That is, if you can just confirm yes answers to a problem, can you necessarily solve that problem?

Which Picture is Correct? R Regular Languages CFLs RE All Languages

Which Picture is Correct? Regular Languages CFLs R RE All Languages

To answer the question is R a strict subset of RE, I need to quickly convince you of three little things.

1. We can give a machine all kinds of inputs as a string, including groups of inputs and machines themselves!

1. We can give a machine all kinds of inputs as a string, including groups of inputs and machines themselves! 2. There is a TM that can take TMs as input and run them to see what they do. ( Universality property) 3. That TM, or any TM that takes other TMs as input, could take itself as input. ( Self-Reference property)

A Model for Solving Problems (accept) Yes input Turing Machine No How How do do we we represent represent our our inputs? inputs? (reject)

On your computer, everything is numbers! Images (gif, jpg, png): binary numbers Integers (int): binary numbers Non-integer real numbers (double): binary numbers Letters and words (ASCII, Unicode): binary numbers Music (mp3): binary numbers Movies (streaming) : binary numbers Doge pictures : binary numbers Email messages: binary numbers

Object Encodings If Obj is some mathematical object that is discrete and finite, then we ll use the notation Obj to refer to some way of encoding that object as a string. Think of Obj like a file on disk it encodes some highlevel object as a series of characters. Key idea: If you want to have a TM compute something about Obj, you can provide the string Obj as input to that Turing machine. = A few remarks about encodings: 11011100101110111100010011 110 We don't care how we encode the object, just that we can. The particular choice of alphabet isn't important. Given any alphabet, we can always find a way of encoding things. We'll assume we can perform reasonable operations on encoded objects.

Object Encodings For the purposes of what we re going to be doing, we aren t going to worry about exactly how objects are encoded. For example, we could say G0n1n to mean some encoding of a Context-Free Grammar for the language 0 n 1 n without worrying about exactly how a grammar is encoded. Intuition check: could I type up any grammar and save it as a file on my computer? Yes? Ok then, we know we can put a grammar into a string. As long as we re convinced a thing could be saved in a file, we don t spend time specifying the exact file format in our proof (some proofs do in certain circumstances where it might be questioned where it s possible, but in this class we won t).

Encoding Groups of Objects Given a group of objects Obj₁, Obj₂,, Objₙ, we can create a single string encoding all these objects. Think of it like a.zip file, but without the compression. We'll denote the encoding of all of these objects as a single string by Obj₁,, Objₙ. This lets us feed a group of inputs into our computational device as a single input.

2. There is a TM that can take TMs as input and run them to see what they do.

An Observation When we've been discussing Turing machines, we've talked about designing specific TMs to solve specific problems. Does this match your real-world experiences? Do you have one computing device for each task you need to perform?

Computers and Programs Most real computers solve a variety of problems. To solve new problems, we get new apps, not a new computer. Question: Can we do something like this for Turing machines?

Can there be a program that simulates Sure. what another program does? These programs go by many names: An interpreter, like the Java Virtual Machine or most implementations of Python. A virtual machine, like VMWare or VirtualBox, that simulates an entire computer.

Can there be a TM that simulates Sure. what another TM does? You could imagine a TM taking a TM table like this as input, and then seeing how it would perform on various sample inputs by simulating its behavior by referring to the table at each step. q₀ q₁ q₂ q₃ 0 q₁ R 1 q r R q a R q₁ 0 R q₁ 1 R q₂ L q r 0 R q₃ L q r R q₃ 0 L q₃ 1 L q₀ R

A TM Simulator It is possible to program a TM simulator on an unboundedmemory computer. In fact, we did this! It's on the CS103 website. We could imagine it as a method boolean simulatetm(tm M, string w) with the following behavior: If M accepts w, then simulatetm(m, w) returns true. If M rejects w, then simulatetm(m, w) returns false. If M loops on w, then simulatetm(m, w) loops infinitely. M true! (loop) w...input... simulatetm false!

The Universal Turing Machine Theorem (Turing, 1936): There is a Turing machine UT TM called the universal Turing machine that, when run on an input of the form M, w, where M is a Turing machine and w is a string, simulates M running on w and does whatever M does on w (accepts, rejects, or loops). The observable behavior of U TM is the following: If M accepts w, then U TM accepts M, w. If M rejects w, then U TM rejects M, w. If M loops on w, then U TM loops on M, w. UTM accepts M, w if and only if M accepts w. M accept! (loop) w...input... Universal TM reject!

A Universal Machine U TM

A Universal Machine U TM p r o g r a m

A Universal Machine U TM p r o g r a m i n p u t

A Universal Machine U TM p r o g r a m i n p u t The The program program is is an an encoding encoding of of some some Turing Turing machine machine M that we want to run.

A Universal Machine U TM p r o g r a m i n p u t The input to that program is The input to that program is some string

A Universal Machine U TM p r o g r a m i n p u t The input has the form M, w, where M is some TM and w is some string.

A Universal Machine U TM p r o g r a m i n p u t M, w

q acc, R a, R start q 0 q 1 Let Let M be be the the TM TM shown shown here. here. a, R How How many many of of the the following following statements statements are are true? true? q rej, R M accepts accepts aa aa U TM accepts TM accepts M, M, aa aa U TM accepts TM accepts U U TM, TM, M, M, aa aa U TM accepts TM accepts U U TM, TM, U U TM, TM, M, M, aa aa Answer at PollEv.com/cs103 or Answer at PollEv.com/cs103 or text CS103 to 22333 once to join, then a number. text CS103 to 22333 once to join, then a number.

An Intuition for U TM You can think of U TM as a general-purpose, programmable computer. Rather than purchasing one TM for each language, just purchase U TM and program in the software corresponding to the TM you actually want. U TM is a powerful machine: it can perform any computation that could be performed by any feasible computing device!

Since U TM is a TM, it has a language. What is the language of the universal Turing machine?

The Language of U TM Recall: For any TM M, the language of M, denoted L ( M), is the set L (M) = { w Σ* M accepts w } What is the language of U TM? U TM accepts M, w iff M is a TM that accepts w. Therefore: L (U TM ) = { M, w M is a TM and M accepts w } For simplicity, define A TM = L (U TM ). This is an important language and we'll see it many times.

A TM = { M, w M is a TM and M accepts w } A TM = { M, w M is a TM and w L(M) } Let Let M be be a a TM TM where where L ( M) ( M) = { a n b n n n n N } } How How many many of of the the following following statements statements are are true? true? M, M, ε ε A TM TM M, M, a a A TM TM M, M, b b A TM TM M, M, ab ab A TM TM Answer at PollEv.com/cs103 or Answer at PollEv.com/cs103 or text CS103 to 22333 once to join, then a number. text CS103 to 22333 once to join, then a number.

A TM Regular Languages CFLs RE All Languages

3. That TM, or any TM that takes other TMs as input, could take itself as input. ( Self-Reference property)

Getting more specific about equivalence of TMs and programs Every TM receives some input, does some work, then (optionally) accepts or rejects. We can model a TM as a computer program where the input is provided by a special method getinput() that returns the input to the program, the program's logic is written in a normal programming language, and the program (optionally) calls the special method accept() to immediately accept the input and reject() to immediately reject the input.

Equivalence of TMs and Programs Here's a sample program we might use to model a Turing machine for { w {a, b}* w has the same number of a's and b's }: int main() { string input = getinput(); int difference = 0; for (char ch: input) { if (ch == 'a') difference++; else if (ch == 'b') difference--; else reject(); } } if (difference == 0) accept(); else reject();

Equivalence of TMs and Programs Now, a new fact: it s possible to build a method mysource() into a program, which returns the source code of the program. For example, here's a narcissistic program: int main() { string me = mysource(); string input = getinput(); } if (input == me) accept(); else reject();

Equivalence of TMs and Programs Sometimes, TMs use other TMs as subroutines. We can think of a decider for a language as a method that takes in some number of arguments and returns a boolean. For example, a decider for { a nb n n N } might be represented in software as a method with this signature: bool isanbn(string w); Similarly, a decider for { m, n m, n N and m is a multiple of n } might be represented in software as a method with this signature: bool ismultipleof(int m, int n);

Side note: what does equivalence of TMs and programs mean for YOU? In this class (starting Problem Set Nine, and unless directed otherwise) you can write proofs about TMs by just writing normal code (e.g., Java or C++), and never have to painstakingly draw an actual TM ever again! :: rejoicing ::

Self-Referential :Danger: So, I hope we ve convinced you that there s nothing magic, impossible, or scary about a program getting a string version of its own code. But, there are some dragons in the land of self-referential things.

True or false: "This string is 34 characters long." 123456789012345678901234567890123 4

True or false: "This string is 34 characters long." 1234567890123456789012345678901234

True or false: "This sentence is written in blue."

Happy Story Time In a certain isolated town, every house has a lawn and the city requires them all to be mowed. The town has only one gardener, who is also a resident of the town, and this gardener mows the lawns of every resident who does not mow their own lawn. True or false: The gardener mows their own lawn.

Happy Story Time In a certain isolated town, every house has a lawn and the city requires them all to be mowed. The town has only one gardener, who is also a resident of the town, and this gardener mows the lawns of every resident who does not mow their own lawn. True or false: The gardener mows their own lawn. Answer at PollEv.com/cs103 or text CS103 to 22333 once to join, then your response.

True or false: "This sentence is false."