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 [2025/10/27 21:14] (current)
lfa
Line 1: Line 1:
-====== ​Mai multe reduceri Turing ​======+====== ​Inducție structurală ​======
  
-===== Exerciții ===== +Demonstrați următoarele proprietăți folosind inducție structurală:​
-/* <note important>​ +
-**Solutii**+
  
-https://​drive.google.com/​file/​d/​1REQ1A2SjEUDwodPDqXkptWyqIbPB62e5/​view?​usp=sharing +1$ \forall l \in Listreverse(reverse(l)) ​l$
-</​note>​ */+
  
-1Pentru fiecare dintre problemele următoaredeterminaț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):+2$ \forall r \in Ringsize(move(r)) = size(r)$
  
-  * f_{1010}(M) = TRUE \iff  M[1010] ​\textnu mută niciodată capul de citire la stânga}$     +3. $ \forall i \in \mathbb{N}, \forall ​r \in Ringelement(i,move(r)) = element(i+1,r)$
-/*  +
-<​hidden>​ +
-Această problemă este **decidabilă**. Observăm că dacă mașina nu mută capul de citire la stângaavâ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ă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 simbolurilemaș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: +
-<​code>​ +
-M_1010[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  +
-</​code>​ +
-</​hidden>​  +
-*/ +
-  * $ f_{s}(M) = TRUE \iff  \forall wM[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_{or}(M_1, M_2)  = TRUE \iff M_1[111] \rightarrow TRUE \lor M_2[111] \rightarrow 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. +
- +
-4. Dați exemplu de o Mașină Turing pentru care nu putem determina algoritmic dacă se termină sau nu.+