Differences
This shows you the differences between two versions of the page.
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 | ||