Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Computing ====== /* <note important> Solutii: https://drive.google.com/file/d/1Y6JV-pDyuvejx3g8KL6SpWzbp52VMWnY/view?usp=sharing </note> */ ===== Exerciții ===== 1. ^ ^ 0 ^ 1 ^ $\square$ ^ | $ q_1$ | $ q_1, 0, \rightarrow$ | $ q_1, 1, \rightarrow$ | $ q_2, \square, \leftarrow$ | | $ q_2$ | $ Y, 0, -$ | $ N, 1, -$ | $ N, \square, -$ | (ꞓ, q<sub>1</sub>, 100) ⊢ (1, q<sub>1</sub>, 00) ⊢ (10, q<sub>1</sub>, 0) ⊢ (100, q<sub>1</sub>, □) ⊢ (10, q<sub>2</sub>, 0) ⊢ (10, Y, 0) (ꞓ, q<sub>1</sub>, 1011) ⊢ (1, q<sub>1</sub>, 011) ⊢ (10, q<sub>1</sub>, 11) ⊢ (101, q<sub>1</sub>, 1) ⊢ (1011, q<sub>1</sub>, □) ⊢ (101, q<sub>2</sub>, 1) ⊢ (101, N, 1) ---- 2. ^ ^ 0 ^ 1 ^ $\square$ ^ | $ q_1$ | $ q_1, 1, \rightarrow$ | $ q_1, 0, \rightarrow$ | $ q_2, \square, \leftarrow$ | | $ q_2$ | $ q_2, 1, \rightarrow$ | $ q_2, 0, \rightarrow$ | $ q_1, \square, \rightarrow$ | (ꞓ, q<sub>1</sub>, 1011) ⊢ (0, q<sub>1</sub>, 011) ⊢ (01, q<sub>1</sub>, 11) ⊢ (010, q<sub>1</sub>, 1) ⊢ (0100, q<sub>1</sub>, □) ⊢ (010, q<sub>2</sub>, 0) ⊢ (0101, q<sub>2</sub>, □) ⊢ (0101□, q<sub>1</sub>, □) ⊢ (0101, q<sub>2</sub>, □) ⊢ (0101□, q<sub>1</sub>, □) ⊢ (0101, q<sub>2</sub>, □) ⊢ ...\\ \\ Se observă că mașina ciclează pentru acest input. ---- 3. Soluție: ^ ^ 0 ^ 1 ^ $\square$ ^ | $ q_1$ | $ q_1, 0, \rightarrow$ | $ q_1, 1, \rightarrow$ | $ q_2, 1, \leftarrow$ | | $ q_2$ | $ q_2, 0, \leftarrow$ | $ q_2, 1, \leftarrow$ | $ q_1, 1, \rightarrow$ | (ꞓ, q<sub>1</sub>, 01) ⊢ (0, q<sub>1</sub>, 1) ⊢ (01, q<sub>1</sub>, □) ⊢ (0, q<sub>2</sub>, 11) ⊢ (□, q<sub>2</sub>, 011) ⊢ (□, q<sub>2</sub>, □011) ⊢ (1, q<sub>1</sub>, 011) ⊢ (10, q<sub>1</sub>, 11) ⊢ (101, q<sub>1</sub>, 1) ⊢ (1011, q<sub>1</sub>, □) ⊢ (101, q<sub>2</sub>, 11) ⊢ (10, q<sub>2</sub>, 111) ⊢ (1, q<sub>2</sub>, 0111) ⊢ (□, q<sub>2</sub>, 10111) ⊢ (□, q<sub>2</sub>, □10111) ⊢ ...\\ \\ Se observă că mașina ciclează pentru acest input. Ea va continua să scrie 1 la stânga și la dreapta pe bandă. ---- 4. Acest exercițiu face referire la conceptul de Busy Beaver, mai precis cazurile cu 2 simboluri și 1,2 sau 3 stări. Aceasta este o problemă interesantă și deschisă din perspectiva teoriei calculabilității și a complexității algoritmice. Pentru a găsi numărul maxim de tranziții și funcția de tranziție $ \delta$, este nevoie de o abordare exploratorie și de un efort considerabil de analiză pentru fiecare configurație specifică a mașinii. \\ \\ <note> Mai multe informații găsiți aici: https://en.wikipedia.org/wiki/Busy_beaver </note> ---- 5. Fie $ M_f$ o Mașină Turing care "computează" $ f \Rightarrow \forall w, M_f[w] \rightarrow f(w)$ \\ \\ Similar, fie $ M_g$ o Mașină Turing care "computează" $ g \Rightarrow \forall w, M_g[w] \rightarrow g(w)$ \\ \\ Pentru a nu apărea probleme, este important ca $ M_f$ și $ M_g$ să nu aibă stări cu aceeași denumire. Construim $ M_{fg}$ care începe prin a rula tranzițiile din $ M_f$ pe inputul $ w \Rightarrow$ obținem pe bandă $ f(w)$. Folosind stări auxiliare, mutăm cursorul până la începutul rezultatului aflat pe bandă, lăsând mașina $ M_{fg}$ în configurația: $ (□, Stare-Inițială-M_g, f(w))$, care rulează apoi tranzițiile din $ M_g$ pe noul input, $ f(w)$. În final se obține $ g(f(w))$, adică $ (g \circ f)(w)$. ---- 6. Trebuie să demonstrăm că putem echivala orice tranziție a mașinii $ M$ cu o tranziție sau un set de tranziții în cadrul mașinii $ M'$.\\ \\ Dacă mașina $ M$ are o tranziție care mută capul de citire la stânga sau la dreapta, atunci acea tranziție va arăta identic pentru mașina $ M'$, pentru că, în acest caz, nu există nici un fel de restricție. Pentru $ \delta M(q,c) = (q',c',dir), dir \in \{\leftarrow, \rightarrow\}$, construim $ \delta M'(q,c) = (q',c',dir)$.\\ \\ Dacă mașina $ M$ are o tranziție care nu modifică poziția capului de citire, putem simula acest comportament în cadrul mașinii $ M'$, mutând capul de citire la dreapta după care înapoi la stânga, trecând printr-o stare auxiliară. Pentru $ \delta M(q,c) = (q',c',-)$ construim $ \delta M'(q,c) = (q_{aux},c',\rightarrow)$ și $ \delta M'(q_{aux},x) = (q',x,\leftarrow)$, $ \forall x \in \Gamma$. ---- 7. Soluția constă în a mapa fiecare tuplu $ t \in \Gamma ^k$ la un simbol din $ \Gamma'$. Pentru a putea face acest lucru, $ \vert \Gamma ' \vert = \vert \Gamma \vert ^k$. \\ \\ Fie a și b simbolurile din $ \Gamma '$ la care se mapează tuplurile: $ (t_1,t_2 ... t_k)$, respectiv $ (t_1', t_2' ... t_k')$ din $ \Gamma ^k$. \\ \\ Construim $ \delta M'$ în felul următor: Pentru $ \delta M'(q, (t_1,t_2 ... t_k)) = (q', (t_1', t_2' ... t_k'), dir) \Rightarrow \delta M(q, a) = (q', b, dir), dir \in (\leftarrow, -, \rightarrow)$. ---- 8. Vom simula comportamentul mașinii $ M$ utilizând un caracter unic, care nu exista în $ \Gamma _M$, spre exemplu: $ ' \vert '$. Așadar, fie $ M'$ construită în următorul fel: $ \delta M'(q,c) = \delta M(q,c), \forall q \in Q_M, c \in \Gamma _M$ $ \Gamma _{M'} = \Gamma _M \cup \{ ' \vert ' \} , \{ ' \vert ' \} \notin \Gamma _M$ $ Q_{M'} = Q_M \cup \{ q_1', q_{1aux}' \}$ \\ \\ Pentru fiecare stare, vom insera tranziția care nu ne va permite depașirea acestui caracter spre stânga. $ \delta M'(q, ' \vert ') = (q, ' \vert ', \rightarrow ), \forall q \in Q$ \\ \\ În plus, în $ M'$ trebuie să schimbăm starea inițială pentru a scrie $ ' \vert '$ în stânga inputului. $ \delta M'(q_1', c) = \delta M'(q_{1aux}', c, \leftarrow ), \forall c \in \Gamma _M$ $ \delta M'(q_{1aux}', □) = (q_1, ' \vert ', \rightarrow ), q_1 -$ starea inițială a mașinii $ M$ ---- 9. Construim $ \delta M$ în felul următor: \\ \\ Pentru o tranziție care nu modifică poziția capului de citire, nu se schimbă nimic. Pentru $ \delta M'(q,c) = (q',c',-)$ construim $ \delta M(q,c) = (q',c',-)$, $ q,q' \in Q_M \cup \{ Y, N, H \} , c,c' \in \Gamma _M$ \\ \\ Pentru orice stare în care se ajunge cu tranziție la dreapta, adăugăm $ (n-1)$ extra stări și $ (n-1)$ extra tranziții în $ M$. Pentru $ \delta M'(q,c) = (q',c', n \rightarrow)$, construim: \\ \\ $ \delta M(q,c) = (R_{n-1}q',c', \rightarrow)$ $ \delta M(R_{n-1}q',x) = (R_{n-2}q',x, \rightarrow), \forall x \in \Gamma _M$ $ \delta M(R_{n-2}q',x) = (R_{n-3}q',x, \rightarrow), \forall x \in \Gamma _M$ $ ...$ $ \delta M(R_1q',x) = (q',x, \rightarrow), \forall x \in \Gamma _M$ \\ \\ Pentru orice stare în care se ajunge cu tranziție la stânga, se procedează similar.