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:4 [2023/10/15 15:47]
stefan.sterea
aa:lab:4 [2024/11/07 13:32] (current)
dmihai
Line 2: Line 2:
  
 ===== Exerciții ===== ===== Exerciții =====
-/* <note important>​ 
-**Solutii** 
  
-https://​drive.google.com/​file/​d/​1REQ1A2SjEUDwodPDqXkptWyqIbPB62e5/​view?​usp=sharing 
-</​note>​ */ 
  
 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): 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) = TRUE \iff  M[1010] \text{ nu mută niciodată capul de citire la stânga}$ ​   ​ +  * $ f_{1010}(M) = {\rm TRUE\iff  M[1010] \text{ nu mută niciodată capul de citire la stânga}$ ​    
-/*  +  * $ f_{s}(M) = {\rm TRUE\iff  \forall w, M[w] \text{ nu mută niciodată capul de citire la stânga}$ ​    
-<​hidden>​ +  * $ f_{50a}(M) = {\rm TRUE\iff  M[1010] \text{ nu trece prin mai mult de 50 de tranziții}$ ​    
-Această problemă este **decidabilă**. Observăm că dacă mașina nu mută capul de citire la stânga, având un număr finit $ n = |K| $ de stări si un număr finit $ m = |\Gamma| $ de simboluri de bandă, mașina fie se oprește după un număr finit de tranziții, fie ciclează prin a ajunge într-un șir de tranziții de forma $ (q,\ a) \to (q',\ a',\ -) \to (q'',​\ a'',​\ -) \to \dots \to (q,\ a,\ -) $ (cel mult $ n\cdot m $ tranziții),​ fie parcurge tot conținutul benzii ajungând la capătul din dreapta pe un simbol blank, după care tranzițiile au forma $ (p,\ \square) \to (p',\ b',\ \rightarrow/​-) \to (p'',​\ b'',​\ \rightarrow/​-) \to \dots \to (p,\ \square,\ \rightarrow/​-) $ (cel mult $ n\cdot m $ tranziții) (exceptând cazul anterior în care mașina ciclează prin a face hold schimbând stările și/sau simbolurile,​ mașina ciclează prin a avansa la dreapta și a face hold între avansări, schimbând stările și/sau simbolurile). Așadar, sunt suficiente $ n\cdot m + 1 + {\rm len}(1010) $ = $ n\cdot m + 5 $ tranziții pentru a verifica dacă mașina mută capul de citire la stânga. Putem descrie masina care decide această problemă astfel: +  * $ f_{50b}(M) = {\rm TRUE\iff  \forall w, M[w] \text{ nu trece prin mai mult de 50 de tranziții}$ ​    
-<​code>​ +     
-M_1010[M]:​ +2. Determinați exact unde se află următoarele probleme ($ {\rm R}$, $ {\rm RE} \setminus {\rm R}$, $ \mathbb{D} \setminus {\rm RE}$):
-    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  +
-</​code>​ +
-</​hidden>​  +
-*/ +
-  * $ f_{s}(M) = TRUE \iff  \forall w, M[w] \text{ nu mută niciodată capul de citire la stânga}$ +
-  * $ f_{50a}(M) = TRUE \iff  M[1010] \text{ nu trece prin mai mult de 50 de tranziții}$ +
-  * $ f_{50b}(M) = 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 (R, RE \ R, $ ⅅ \setminus RE$): +  ​* $ f_{\rm or}(M_1, M_2) = {\rm TRUE\iff M_1[111] \rightarrow ​{\rm TRUE\lor M_2[111] \rightarrow ​{\rm TRUE}    
- +  * $ f_{\rm and}(M_1, M_2) = {\rm TRUE\iff M_1[111] \rightarrow ​{\rm TRUE\land M_2[111] \rightarrow ​{\rm TRUE}    
-  ​* $ f_{or}(M_1, M_2)  = TRUE \iff M_1[111] \rightarrow TRUE \lor M_2[111] \rightarrow TRUE$ +  * $ f_{\rm diff}(M_1, M_2) = {\rm TRUE\iff M_1[111] \rightarrow ​{\rm TRUE\land M_2[111] \not\rightarrow ​{\rm TRUE}$
-  * $ f_{and}(M_1,​ M_2) = TRUE \iff M_1[111] \rightarrow TRUE \land M_2[111] \rightarrow TRUE$ +
-  * $ f_{diff}(M_1,​ M_2) = TRUE \iff M_1[111] \rightarrow TRUE \land M_2[111] \not\rightarrow TRUE$+
    
 3. Dați exemplu de o Mașină Turing pentru care putem determina algoritmic, pentru orice input, dacă se termină sau nu. 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. 4. Dați exemplu de o Mașină Turing pentru care nu putem determina algoritmic dacă se termină sau nu.
 +
 +<​note>​
 +Soluțiile acestui laborator se găsesc [[https://​ocw.cs.pub.ro/​ppcarte/​doku.php?​id=aa:​lab:​sol:​4|aici]]
 +</​note>​