Homework solutions:
Several people have asked me about solutions for the assignment. I will
not be posting the solutions. But you are welcome to come to office
hours, or use the newsgroup and email if you have any questions about
solving the problems.
What do I expect you to know for the test?
What is the format of the test?
It will be a series of 5 problems similar to those on the homework, except
(hopefully) much easier. Unlike the homework, I will not expect you to
come up with new and novel ideas. You will be able to apply the ideas
required for the homework to solve the test questions.
How long is the test?
It will be between 60 and 90 minutes long. Time should be sufficient if
you have kept up with the homework.
How do I apply diagonalization?
As an example, let us consider how we defined DIAG. Since sigma* is
recursively enumerable, we can write each string in a big list (like how
we can write each natural number in a list). Let us consider only the
strings which describe Turing machines and list them. We will list
whether that machine accepts each string in our table (Y means the the
machine on the left accepts the string on the top):
TM | Accepts string ...? | |||||
---|---|---|---|---|---|---|
<M1> | <M2> | <M3> | ... | <MDIAG> | ... | |
M1 | Y | N | Y | Y | ||
M2 | N | Y | Y | N | ||
M3 | Y | N | N | Y | ||
... | ||||||
MDIAG | N | N | Y | ? | ||
... |
To do a proof by diagonalization, list all the machines and languages (or whatever is applicable), and pick a suitable diagonal set (for example, a language which is different than each language in the list). It should be easy to then prove that language is undecidable, since we constructed it to have that property.
Copyright ©
Richard Krueger
All rights reserved. |