Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aa:lab:03 [2020/10/18 21:15]
mmihai
aa:lab:03 [2020/10/23 14:43] (current)
pdmatei
Line 9: Line 9:
 ==== 1. Accepting and deciding a decision problem ==== ==== 1. Accepting and deciding a decision problem ====
  
-**1.1** Can the problem $math[f(w) = 0] (for all w in Sigma*) be accepted by a Turing Machine?+**1.1** Can the problem $math[f(w) = 0] (for all w in $math[\Sigma^*]) be accepted by a Turing Machine?
  
 **1.2** Can a problem be accepted by two different Turing Machines? **1.2** Can a problem be accepted by two different Turing Machines?
Line 15: Line 15:
 **1.3** Can a Turing Machine accept two different problems? **1.3** Can a Turing Machine accept two different problems?
  
-**1.4** Write a Turing Machine which accepts the problem $math[f(x) = 1] iff x (as binary) is odd, but does **NOT** decide it.+**1.4** Write a Turing Machine which accepts the problem $math[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. **1.5** ​ Which of the following problems you think can be accepted and which can be decided? Use pseudocode instead of writing a TM.
-    ​V Undecidable example 1 + 
-    * V Hilbert undecidable +**Diophantine equations (Hilbert'​s Tenth Problem)** 
-    * V Wang Tile +  * A //​diophantine//​ equation is a polynomial equation where only **integer solutions** are sought. 
-    * k-color +  * Examples: ​ 
-    * Linear Integer Programming+    * $math[x^2+y^2=1] 
 +    * $math[x^4+y^4+z^4=w^4] 
 +    * $math[3x^2-2xy-y^2z-7=0] 
 +  * The decision problem we are interested in is: //Given a diophantine equation, does it have at least one solution//?​ 
 + 
 +**Linear Integer Programming** 
 +  * You are given a set of arithmetic **constraints** over integers, and try to find if a solution to the constraints exists. 
 +  * Example: 
 +    * $math[y-x\leq 1] 
 +    * $math[3x+2y\leq 12] 
 +    * $math[2x+3y\leq 12] 
 + 
 +**Wang Tiles** 
 +  * Wang tiles are squares where each **side** has a specific color. An example is given below. 
 +{{ :​aa:​lab:​wang_11_tiles.svg.png?​200 |}} 
 +  * Wang tiles can be used to tile surfaces, but each tile must be placed such that adjacent tiles have the **same color side**. 
 +  * The wang tiling decision problem is: //Is it possible to tile the plane (an infinite surface) with a given set of tiles//? 
 + 
 +**k-color** 
 +  * You are given a undirected graph and a number of ''​k''​ colors. Is it possible to assign a color to each node such that **no adjacent** (connected by an edge) nodes have the same color? 
  
 ==== 2. Complement ==== ==== 2. Complement ====
  
-**2.1** What is the complement of the previous ​problem?+**2.1** What is the complement of the problem ​from Exercise 1.1 ?
  
 **2.2** What is the complement of k Vertex Cover? **2.2** What is the complement of k Vertex Cover?
Line 32: Line 52:
 **2.3** If a problem is decided by some TM, can its complement be decided? **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 decided?+**2.4** If a problem is accepted by some TM, can its complement be accepted?
  
 ==== 3. Turing Machine pseudocode ==== ==== 3. Turing Machine pseudocode ====
Line 42: Line 62:
 Suppose M is encoded on binary words, and also working on binary words, for simplicity. Suppose M is encoded on binary words, and also working on binary words, for simplicity.
  
 +/* Solution:
 <​code>​ <​code>​
 Pseudocode(M):​ <- input Pseudocode(M):​ <- input
Line 55: Line 76:
 </​code>​ </​code>​
  
 +*/
 +
 +**3.2** Which of the following pseudocode is a proper Turing Machine? Explain why.
 +
 +<​code>​
 +Algoritm(M,​w){
 +   if size(w) > 10
 +     then if M accepts w in k steps
 +          accept.
 +}
 +</​code>​
 +
 +<​code>​
 +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
 +}
 +</​code>​
 +
 +<​code>​
 +Algorithm(M,​A) {
 +   // A is a finite set of words
 +   for each w in A
 +       if M(w) accepts ​
 +          then accept  ​
 +}
 +</​code>​
 +
 +<​code>​
 +Algorithm(M) {
 +   if M accepts all words w in Sigma*
 +        accept
 +}
 +</​code>​
 +
 +<​code>​
 +Algorithm(M1,​M2) {
 +    if M1 always accepts then
 +       if M2 always accepts then 
 +          accept
 +}
 +</​code>​
 +
 +**3.4** Write a TM pseudocode which:
 +    * takes two TMs as input
 +    * accepts if there exists a word which is accepted by both TMs
 +
 +**3.5** Write a TM pseudocode which:
 +    * takes a word as input
 +    * accepts if there exists a TM which accepts the word
 +
 +**3.6** Write a TM pseudocode which:
 +    * takes a Turing Machine M, and a finite set of words A
 +    * checks if all words in A are accepted by M
  
 +**3.7** Write a TM pseudocode which:
 +    * takes a Turing Machine M, and a finite set of words A
 +    * checks if some words in A are accepted by M