This is an old revision of the document!
Soluții Mai multe reduceri Turing
1. Pentru fiecare dintre problemele următoare, determinați dacă sunt decidabile sau nu (demonstrația nedecidablității poate fi realizată printr-o reducere Turing, cea a decidabilității prin schițarea unui algoritm):
- $ f_{1010}(M) = {\rm TRUE} \iff M[1010] \text{ nu mută niciodată capul de citire la stânga}$
M_1010[enc(M)]: k = 0 n = nr_stari(M) m = nr_simboluri_banda(M) while k < n * m + 5: simuleaza un pas din M[w] k = k + 1 if tranzitia a fost la stanga: tranzitie la N tranzitie la Y
- $ f_{s}(M) = {\rm TRUE} \iff \forall w, M[w] \text{ nu mută niciodată capul de citire la stânga}$
- $ f_{50a}(M) = {\rm TRUE} \iff M[1010] \text{ nu trece prin mai mult de 50 de tranziții}$
- $ f_{50b}(M) = {\rm TRUE} \iff \forall w, M[w] \text{ nu trece prin mai mult de 50 de tranziții}$
2. Determinați exact unde se află următoarele probleme ($ {\rm R}$, $ {\rm RE} \setminus {\rm R}$, $ \mathbb{D} \setminus {\rm RE}$):
- $ f_{or}(M_1, M_2) = {\rm TRUE} \iff M_1[111] \rightarrow {\rm TRUE} \lor M_2[111] \rightarrow {\rm TRUE}$
M_or[enc((M1, M2))]: while (M1 nu s-a terminat) sau (M2 nu s-a terminat): simulează un pas din M1[111] simulează un pas din M2[111] if (M1 a facut tranziție la Y) sau (M2 a facut tranziție la Y): tranziție la Y tranziție la N
Demonstrăm că problema nu este decidabilă prin urmatoarea reducere $ \mathtt{HALT} \leq_m f_{or}$:
$ t(M, w) = (M_1, M_2) $ a.î $ \mathtt{HALT}(M, w) = {\rm TRUE} \iff f_{or}(M_1, M_2) = {\rm TRUE} $
M1[u]: simulează M[w] tranziție la Y M2[u]: tranziție la N
$ (\Rightarrow) $ $$ \mathtt{HALT}(M, w) = {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \\ \Rightarrow M_1[111] \to {\rm TRUE} \vee M_2[111] \to {\rm TRUE} \Rightarrow f_{or}(M_1, M_2) = {\rm TRUE} $$ $ (\Leftarrow) $ $$ f_{or}(M_1, M_2) = {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \vee M_2[111] \to {\rm TRUE} \\ \forall v, M_2[v] \to {\rm FALSE} \Rightarrow M_2[111] \nrightarrow {\rm TRUE} \\ \Rightarrow M_1[111] \to {\rm TRUE} \Rightarrow \mathtt{HALT}(M, w) = {\rm TRUE} \\ (\text{deoarece } \mathtt{HALT}(M, w) = {\rm FALSE} \Rightarrow M_1[111] \to \bot) $$
- $ f_{and}(M_1, M_2) = {\rm TRUE} \iff M_1[111] \rightarrow {\rm TRUE} \land M_2[111] \rightarrow {\rm TRUE}$
M_and[enc((M1, M2))]: while (M1 nu s-a terminat) sau (M2 nu s-a terminat): simulează un pas din M1[111] simulează un pas din M2[111] if (M1 a facut tranziție la N) sau (M2 a facut tranziție la N): tranziție la N tranziție la Y
Iar pentru a demonstra că problema nu este decidabilă, folosim următoarea reducere $ \mathtt{HALT} \leq_m f_{and}$:
$ t(M, w) = (M_1, M_2) $ a.î $ \mathtt{HALT}(M, w) = {\rm TRUE} \iff f_{and}(M_1, M_2) = {\rm TRUE} $
M1[u]: simulează M[w] tranziție la Y M2[u]: tranziție la Y
$ (\Rightarrow) $ $$ \mathtt{HALT}(M, w) = {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \\ M_2[111] \to {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \land M_2[111] \to {\rm TRUE} \Rightarrow f_{and}(M_1, M_2) = {\rm TRUE} $$ $ (\Leftarrow) $ $$ f_{and}(M_1, M_2) = {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \land M_2[111] \to {\rm TRUE} \\ \Rightarrow M_1[111] \to {\rm TRUE} \Rightarrow \mathtt{HALT}(M, w) = {\rm TRUE} \\ (\text{deoarece } \mathtt{HALT}(M, w) = {\rm FALSE} \Rightarrow M_1[111] \to \bot) $$
- $ f_{diff}(M_1, M_2) = {\rm TRUE} \iff M_1[111] \rightarrow {\rm TRUE} \land M_2[111] \not\rightarrow {\rm TRUE}$
M1[u]: tranziție la Y M2[u]: simulează M[w] tranziție la Y
$ (\Rightarrow) $ $$ \mathtt{coHALT}(M, w) = {\rm TRUE} \Rightarrow M[w] \to \bot \Rightarrow M_2[111] \to \bot \\ M_1[111] \to {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \land M_2[111] \nrightarrow {\rm TRUE} \Rightarrow f_{diff}(M_1, M_2) = {\rm TRUE} $$ $ (\Leftarrow) $ $$ f_{diff}(M_1, M_2) = {\rm TRUE} \Rightarrow M_1[111] \to {\rm TRUE} \land M_2[111] \nrightarrow {\rm TRUE} \\ \Rightarrow M_2[111] \nrightarrow {\rm TRUE} \Rightarrow M[w] \to \bot\ (\text{deoarece } M[w] \nrightarrow \bot \Rightarrow M_2[111] \to {\rm TRUE} \text{ din construcția mașinii}) \\ \Rightarrow \mathtt{coHALT}(M, w) = {\rm TRUE} $$
3. Dați exemplu de o Mașină Turing pentru care putem determina algoritmic, pentru orice input, dacă se termină sau nu.
4. Dați exemplu de o Mașină Turing pentru care nu putem determina algoritmic dacă se termină sau nu.