cse 105 theory of computability
play

CSE 105Theory of Computability Fall, 2006 Lecture 20November 30 - PDF document

CSE 105Theory of Computability Fall, 2006 Lecture 20November 30 Recursion Theorem Instructor: Neil Rhodes Recursion Theorem Informal idea: a Turing Machine can obtain its own description and compute with it Formally: Given a TM T


  1. CSE 105—Theory of Computability Fall, 2006 Lecture 20—November 30 Recursion Theorem Instructor: Neil Rhodes Recursion Theorem Informal idea: a Turing Machine can obtain its own description and compute with it Formally: � Given a TM T that computes a function t:(<M>,w), we can construct a TM R such that r(w) = t(<R>,w) Usage: � If T computes t(<M>,w)=<M>, then r(w)=<R>. In other words, R ignores its input and prints out a copy of itself (a Quine ). � Computer viruses need to propagate by copying their program. � Any TM you write can include: – M = “… Obtain, via the recursion theorem, own description <M>. …” 2

  2. Using the Recursion Theorem A TM is undecidable � Assume there exists machine A that decides A TM . � M = “On input w: 1. Obtain, via the recursion theorem, own description <M>. 2. Simulate A on input <M, w>. 3. Output the opposite of what A says.” � M on input w halts accepts iff it doesn’t accept. 3 Fixed-Point Theorem Given any computable function: t(a) = b There is some Turing machine F with: � t(<F>) = <G> where L(G) = L(F) For example, there are two Turing machines, M and N with <M> = 2*<N> and L(M) = L(N) Proof: � F = “On input w: 1. Obtain, via the recursion theorem, own description <F>. 2. Compute t(<F>) = <G> (Description of TM G) 3. Simulate G on w.” 4

  3. Creating a Quine Want to build a TM SELF that outputs its own description <SELF> � First, define (computable function) q(w) = <P w >: Pw is a machine that prints out w and halts. � A: prints out <B> (A = P <B> ) – We’ll figure out what <B> is once we write B! � B: 1. Computes q(<B>) = <P <B> > = <A> (How does it know <B>?) 2. Combines <A> and <B> into new machine 3. Writes the description of the machine to the tape and halts. 5 Creating a Quine in Ruby Useful commands: � puts(string) prints out string without quotes � string1 % string2 returns string1, but replacing %s with string2 � “abc%sdef” % “012” ==> “abc%012” � string.inspect returns string with quotes around it (and escaping any necessary embedded characters). http://agorf.void.gr/blog/archive/2006/08/07/a- self-reproducing-program-quine-in-ruby/ 6

  4. Creating a Quine in C http://www.nyx.net/~gthompso/quine.htm 7

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend