CS计算机代考程序代写 test2_takehome

test2_takehome

Problem 1 (TM with Undo, 15 points). A TM with undo is the same as a basic single-tape
TM, except in one computational step it is also allowed to perform the following “undo” action:

Return the head to where it was before the most recent transition, and replace the symbol under

the head with whatever was there previously. The state of the TM’s finite control should remain

the same.

For example, suppose a TM with undo starts in configuration 8675p409. If its transition function
specifies �(p, 4) = (q, 3, R), then the next configuration will be 86753q09. If its transition function
then specifies �(q, 0) = U (where U stands for “undo”), then the next configuration will be 8675q409.

Things get more interesting when the TM with undo is asked to do multiple undos in succession,

or interleave them with normal transitions. In these cases, the machine must be able to undo all

of the normal transitions in the correct order – from most recent to least recent. If there is no

instruction left to undo, the machine will stay in the same configuration.

For example, suppose the transition function of a TM with undo specifies �(p, 0) = (p, 1, R),
�(p, 1) = (q, 0, R), �(q, 0) = U, �(q, 1) = (r, 0, R), and �(r, 0) = �(r, 1) = U. Then if the TM’s starting
configuration is p010, the next few configurations the TM with undo enters are

p010

1. (read 0, write 1, move right)

1p10

2. (read 1, write 0, move right)

10q0

3. (undo instruction 2)

1q10

4. (read 1, write 0, move right)

10r0

5. (undo instruction 4)

1r10

6. (undo instruction 1)

r010

7. (undo…but there is no instruction left to undo)

r010

Give a simulation argument, using an implementation-level description, to show that every
language recognizable by a TM with undo is also Turing-recognizable.

Hint: It may be useful to maintain an explicit record of past actions in a stack. Every time the

TM with undo performs a normal read/write/move transition, push a record of this action to the

stack. And every time it performs an undo, pop the most recent action from the stack. How would

you implement this behavior on, say, a multi-tape TM?

2

Problem 2 (Countability and Diagonalization, 18 points).

(a) An undirected graph is a finite set of vertices V ✓ N together with a finite set of edges
E = {{u, v} | u, v 2 V }. Show that the set G of all undirected graphs is countable. (8 points)

(b) Let M be the set of all encodings of Turing machines. A TM property is a function f :
M ! {0, 1}. Use a diagonalization argument to show that the set of all TM properties,
P = {f | f is a TM property}, is uncountable. (10 points)

Problem 3 (Loopy TM, 17 points). Consider the following computational problem. Given a TM
M , does M loop forever on every input w?

(a) Formulate this problem as a language LTM. (3 points)

(b) Use a reduction to prove that LTM is undecidable. Make sure to explain (briefly) why the
TM computing your reduction is correct. (14 points)

Problem 4 (Bonus Problem). A function f : N ! N is non-increasing if f(i) � f(i+ 1) for every
i 2 N. So f(1) = 8, f(2) = 3, f(3) = 2, f(4) = 2, . . . are the first few values of (what looks like)
a non-increasing function f . But the function g where g(1) = 5, g(2) = 6, g(3) = 4, . . . is not
non-increasing.

Is the set NI of non-increasing functions countable or uncountable? Prove your answer.

3