130 Views

Download Presentation
##### Foundations of Software Design Fall 2002 Marti Hearst

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Foundations of Software DesignFall 2002Marti Hearst**Lecture 29: Computability, Turing Machines, Can Computers Think?**Computability**• Is there anything a computer cannot compute? • Linked to the notion of what is an algorithm.**Alan Turing**• An amazing scientist • Helped solved the Enigma Machine (WWII) • Advances in Probability Theory • Invented the theory behind computers • Turing Machine • Turing Test**Turing Machines**• Anything that can be computed by a finite set of rules can be computed by a Turing machine. • Turing Equivalence • We saw that finite automata are less powerful than TMs • Can’t compute • Thus not Turing-equivalent • Modern computers and programming languages are all Turing-equivalent**Languages accepted by**Turing Machines Context-Free Languages Regular Languages Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**A Turing Machine**Tape ...... ...... Read-Write head Control Unit Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**The Tape**No boundaries -- infinite length ...... ...... Read-Write head The head moves Left or Right Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**......**...... Read-Write head The head at each time step: 1. Reads a symbol 2. Writes a symbol 3. Moves Left or Right Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Example:**Time 0 ...... ...... Time 1 ...... ...... 1. Reads 2. Writes 3. Moves Left Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**The Input String**Input string Blank symbol ...... ...... head Head starts at the leftmost position of the input string Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**States & Transitions**Write Read Move Left Move Right Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Example:**Time 1 ...... ...... current state Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Time 1**...... ...... Time 2 ...... ...... Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Determinism**Turing Machines are deterministic Not Allowed Allowed Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Halting**The machine haltsif there are no possible transitions to follow Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Example:**...... ...... No possible transition HALT!!! Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Final States**Allowed Not Allowed • Final states have no outgoing transitions • In a final state the machine halts Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Acceptance**If machine halts in a final state Accept Input If machine halts in a non-final state or If machine enters an infinite loop Reject Input Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Infinite Loop Example**A Turing machine for language Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Time 0**Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Time 1**Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Time 2**Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Time 2**Time 3 Time 4 Time 5 ... Infinite Loop Adapted from slide by Costas Busch, http://www.cs.rpi.edu/courses/fall01/modcomp/**Church-Turing Thesis**The Church-Turing thesis says that Turing machine algorithms are the same as our intuitive notion of algorithms. • Most people think the Church Turing thesis is correct. • It means, among other things that • You can simulate any computer program that runs on any hardware in any language with any other program on any other hardware using any other language. • Tasks that humans agree is an algorithm can always be executed on a computer. Adapted from slides by Lee Wee Sun, http://www.comp.nus.edu.sg/~cs1305/2000/**The Halting Problem**• An example of something that is not computable. • Created by Turing in 1936 to define a problem which no algorithmic procedure can solve. • Can we write a program that will take in a user's program and inputs and decide whether • it will eventually stop, or • it will run infinitely in some infinite loop ? Adapted from slides by Lee Wee Sun, http://www.comp.nus.edu.sg/~cs1305/2000/**Proof (by contradiction)**• Assume that it is possible to write a program to solve the Halting Problem. • Denote this program by HaltAnswerer(prog,inputs). • HaltAnswerer(prog,inputs) will • return yes if prog will halt on inputs and • no otherwise. • A program is just a string of characters • E.g. your Java program is just a long string of characters • An input can also be considered as just a string of characters • So HaltAnswerer is effectively just working on two strings Adapted from slides by Lee Wee Sun, http://www.comp.nus.edu.sg/~cs1305/2000/**Proof (cont.)**• We can now write another program Loopy(prog) that uses HaltAnswerer • The program Loopy(prog) does the following: [1] If HaltAnswerer(prog,prog) returns yes, Loopy will go into an infinite loop. [2] If HaltAnswerer(prog,prog) returns no, Loopy will halt. Adapted from slides by Lee Wee Sun, http://www.comp.nus.edu.sg/~cs1305/2000/**Proof (cont.)**[1] If HaltAnswerer(prog,prog) returns yes, Loopy will go into an infinite loop. [2] If HaltAnswerer(prog,prog) returns no, Loopy will halt. • Consider what happens when we run Loopy(Loopy). • If Loopyloops infinitely, • HaltAnswerer(Loopy,Loopy) return no which by [2] above means Loopy will halt. • If Loopyhalts, • HaltAnswerer(Loopy,Loopy) will return yes which by [1] above means Loopy will loop infinitely. • Conclusion: Our assumption that it is possible to write a program to solve the Halting Problem has resulted in a contradiction. Adapted from slides by Lee Wee Sun, http://www.comp.nus.edu.sg/~cs1305/2000/**Diagonalization**• Not Diagon Alley • A proof by contradiction technique • Uses the notion of Infinity • The name comes from a proof that shows you can’t ever list all numbers. • Assume you list all possible binary numbers • Diagonalization shows you can always construct a new number that is not yet in the list • Have to assume numbers can have infinite length • Construct the new number by choosing the opposite of the number on the diagonal.**Diagonalization**B1 0 0 0 0 0 … B2 0 0 1 0 1 … B3 1 0 1 1 0 … B4 0 1 1 1 1 … B5 1 1 0 0 0 … … D 1 1 0 0 1 …**The Universal Turing Machine**• There are an infinite number of Turing Machines • There are an infinite number of calculations that can be done with a finite set of rules. • However, we can define a Universal Turing Machine which can simulate all possible TMs • Comes from the definition of TMs • You convert the description of the TM and its input into two tapes, and use these as the input to the UTM**The Halting Problem**• Halting Problem: • There is no procedure for telling whether an arbitrary TM will halt on a given input. • Use Diagonalization to show this. • Again, proof by contradiction • Assume there is a rule for deciding if a TM will halt. • Construct a table as follows: • List all Turing machines down the side • List the possible inputs across the top • In position (j,i) put the result of executing Turing machine j on input i • If it halts, output H • If it doesn’t halt, output ?**Diagonalization**1 2 3 4 5 … T1 H H ? H H … T2 ? ? H H H … T3 H H H H H … T4 H H H ? H … T5 H H H H H … … D ? H ? H ? …**Diagonalization on the Halting Problem**• Now define a new TM called D that will halt for all inputs. It outputs • H if TMi(i) does not halt • ? if TMi(i) does halt • We already said that the assumption is that we can always decide if a TM halts. • Also, we said this table lists all possible TMs. • So D must be in the table. • But this means that we are saying that D outputs halt if it doesn’t halt! • To see this, give D as input to itself. • This is a contradiction. Hence the premise does not hold: We cannot determine if an arbitrary program will halt.**“Going Meta”**• This proof based in part on Gödel’s Theorem • If you are interested in these kinds of questions (and other things related to “going meta” like compiler compilers), see • Gödel, Escher, Bach: An Eternal Golden Braid, by Douglas Hofstadter.**The Turing Test**• An observer • Interacts with a keyboard and monitor • Has to distinguish which of two respondents is a computer and which is human. • There is a contest with a $100,000 prize! • For the first computer whose responses are indistinguishable from a human's. • The Loebner Prize http://www.loebner.net/Prizef/loebner-prize.html • It’s actually pretty easy to fool people over the short term. • Chat room ’bots work quite well.**What is Intelligence?**• Do androids dream … ? • What would it take for a computer’s thoughts to be indistinguishable from a human’s? • THIS is the deepest question of CS.