Table of Contents

Lab 03 - Turing Machines

Key concepts

  1. acceptance vs decision
  2. complement of a problem

1. Accepting and deciding a decision problem

1.1 Can the problem $ f(w) = 0$ (for all w in $ \Sigma^*$ ) be accepted by a Turing Machine?

1.2 Can a problem be accepted by two different Turing Machines?

1.3 Can a Turing Machine accept two different problems?

1.4 Write a Turing Machine which accepts the problem $ f(x) = 1$ iff x (encoded as binary word) is odd, but does NOT decide it.

1.5 Which of the following problems you think can be accepted and which can be decided? Use pseudocode instead of writing a TM.

Diophantine equations (Hilbert's Tenth Problem)

Linear Integer Programming

Wang Tiles

k-color

2. Complement

2.1 What is the complement of the problem from Exercise 1.1 ?

2.2 What is the complement of k Vertex Cover?

2.3 If a problem is decided by some TM, can its complement be decided?

2.4 If a problem is accepted by some TM, can its complement be accepted?

3. Turing Machine pseudocode

3.1 Write a TM pseudocode which:

Suppose M is encoded on binary words, and also working on binary words, for simplicity.

3.2 Which of the following pseudocode is a proper Turing Machine? Explain why.

Algoritm(M,w){
   if size(w) > 10
     then if M accepts w in k steps
          accept.
}
Algoritm(M1,M2,w){
   k = 0
   while true
       if M1 accepts w <=(iff)=> M2 accepts w , in k steps
          then accept
       else k = k + 1
}
Algorithm(M,A) {
   // A is a finite set of words
   for each w in A
       if M(w) accepts 
          then accept  
}
Algorithm(M) {
   if M accepts all words w in Sigma*
        accept
}
Algorithm(M1,M2) {
    if M1 always accepts then
       if M2 always accepts then 
          accept
}

3.4 Write a TM pseudocode which:

3.5 Write a TM pseudocode which:

3.6 Write a TM pseudocode which:

3.7 Write a TM pseudocode which: