100 likes | 288 Views
Jerry Grochowski – CS 4800. Turing Machines from “On Computable Numbers”. Specification. Implement the Turing Machines (TM) from Alan Turing's “On Computable Numbers with an Application to the Entscheidungsproblem” Run Turing's first two simple programs
E N D
Jerry Grochowski – CS 4800 Turing Machines from “On Computable Numbers”
Specification • Implement the Turing Machines (TM) from Alan Turing's “On Computable Numbers with an Application to the Entscheidungsproblem” • Run Turing's first two simple programs • Create Turing's Universal Turing Machine (UTM) • Implement as a Java Console Application
Goals • See what a bare bones computing machine does • Modern computers are complex but Turing Machines (TM) are simple yet powerful • Learn from the Source • Turing was a genius – What's actually in his paper “On Computable Numbers”? • See how Turing Machines relate to class • Understand the potential and limitations of TMs
What will it do? • Program 1: 010101010101010.... • Program 2: 0010110111011110.... • Universal Turing Machine (UTM): Repeat Program 1 and 2, but from tape • Input: • Program 1 and 2 input as text files of quintuples • UTM input as text files of function tables (see later slides) • Output: steps of the tape to console and file
Design Flow • Normal Turing Machine • A quintuple: • ;,q1,S0,S1,R,q2, = In state q1, if blank (Symbol 0), print 0 (Symbol 1), move Right, and go to state q2
Univeral Turing Machine (Design Flow) Parser or Table?
Problems • The UTM would require a lot of quintuples • Could parse tables to produce quintuples • Could use tables as input, like functions (which they are) • Bugs in Turing's tables • Discussed in Copeland's “The Essential Turing”
Conclusion • The initial Turing Machines are doable • The Universal Turing Machine is harder but more interesting • “On Computable Numbers” is worth reading