Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
aa:lab:2 [2023/10/09 02:21] vlad.juja |
aa:lab:2 [2024/10/23 23:32] (current) dmihai |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Computing ====== | ====== Computing ====== | ||
- | <note important> | + | ===== Mașina Turing ===== |
- | Solutii: https://drive.google.com/file/d/1Y6JV-pDyuvejx3g8KL6SpWzbp52VMWnY/view?usp=sharing | + | |
- | </note> | + | După definiția de la curs, o mașină Turing poate fi caracterizată printr-un 6-tuplu: $ (Q, \Sigma, \Gamma, B, q_1, \delta)$, unde: |
+ | * $ Q $ e mulțimea stărilor interne | ||
+ | * $ \Sigma $ e alfabetul de intrare (simboluri aflate pe bandă la începutul rulării) | ||
+ | * $ \Gamma $ e alfabetul benzii (simboluri pe care le putem folosi în timpul rulării mașinii) | ||
+ | * $ B $ e starea default a unei celule nescrise (**blank symbol**) | ||
+ | * $ q_1 $ e starea inițială | ||
+ | * $ \delta $ e funcția de tranziție, definită astfel: $ \delta: Q \times \Gamma \rightarrow (Q \cup \{Y, N, H\}) \times \Gamma \times \{\leftarrow, -,\rightarrow\}$ | ||
+ | * $ Y $ e starea de acceptare, când mașina ajunge în această stare, se oprește cu răspunsul „da” | ||
+ | * $ N $ e starea de rejectare, când mașina ajunge în această stare, se oprește cu răspunsul „nu” | ||
+ | * $ H $ e starea de terminare, când mașina ajunge în această stare, se oprește cu răspunsul format din conținutul benzii | ||
+ | |||
+ | ===== Exerciții ===== | ||
1. Amintiți-vă mașina ''isEven'' de la curs, care determină dacă un număr în baza 2 este par. | 1. Amintiți-vă mașina ''isEven'' de la curs, care determină dacă un număr în baza 2 este par. | ||
+ | |||
+ | * scrieți care sunt configurațiile prin care trece mașina pentru inputul: 100 | ||
+ | |||
+ | * scrieți care sunt configurațiile prin care trece mașina pentru inputul: 1011 | ||
^ ^ 0 ^ 1 ^ $\square$ ^ | ^ ^ 0 ^ 1 ^ $\square$ ^ | ||
Line 11: | Line 26: | ||
| $ q_2$ | $ Y, 0, -$ | $ N, 1, -$ | $ N, \square, -$ | | | $ q_2$ | $ Y, 0, -$ | $ N, 1, -$ | $ N, \square, -$ | | ||
- | a) scrieți care sunt configurațiile prin care trece mașina pentru inputul: 100 | + | ---- |
- | <hidden> | + | 2. Scrieți primele 15 configurații prin care trece mașina de mai jos pentru inputul 1011. Ce observați? |
- | Soluție: | + | |
- | + | ||
- | (ꞓ, 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) | + | |
- | </hidden> | + | |
- | + | ||
- | b) scrieți care sunt configurațiile prin care trece mașina pentru inputul: 1011 | + | |
- | + | ||
- | <hidden> | + | |
- | Soluție: | + | |
- | + | ||
- | (ꞓ, 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) | + | |
- | </hidden> | + | |
- | + | ||
- | 2. Fie mașina: | + | |
^ ^ 0 ^ 1 ^ $\square$ ^ | ^ ^ 0 ^ 1 ^ $\square$ ^ | ||
Line 34: | Line 34: | ||
| $ q_2$ | $ q_2, 1, \rightarrow$ | $ q_2, 0, \rightarrow$ | $ q_1, \square, \rightarrow$ | | | $ q_2$ | $ q_2, 1, \rightarrow$ | $ q_2, 0, \rightarrow$ | $ q_1, \square, \rightarrow$ | | ||
- | Scrieți primele 15 configurații prin care trece, pentru inputul 1011. | + | ---- |
- | <hidden> | + | 3. Scrieți primele 15 configurații prin care trece mașina de mai jos pentru inputul 01. |
- | Soluție: | + | |
- | + | ||
- | + | ||
- | (ꞓ, 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. | + | |
- | </hidden> | + | |
- | + | ||
- | 3. Fie mașina: | + | |
^ ^ 0 ^ 1 ^ $\square$ ^ | ^ ^ 0 ^ 1 ^ $\square$ ^ | ||
Line 53: | Line 42: | ||
| $ q_2$ | $ q_2, 0, \leftarrow$ | $ q_2, 1, \leftarrow$ | $ q_1, 1, \rightarrow$ | | | $ q_2$ | $ q_2, 0, \leftarrow$ | $ q_2, 1, \leftarrow$ | $ q_1, 1, \rightarrow$ | | ||
- | Scrieți primele 15 configurații prin care trece, pentru inputul 01. | + | ---- |
- | <hidden> | + | 4. Considerăm mașinile Turing cu următorii membrii fixați: |
- | Soluție: | + | |
- | (ꞓ, 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) ⊢ | + | * $ \Sigma = \{X\}$ |
- | (1, q<sub>1</sub>, 011) ⊢ (10, q<sub>1</sub>, 11) ⊢ | + | * $ \Gamma = \{X, \square\}$ |
+ | * $ B = \square$ | ||
- | ⊢ (101, q<sub>1</sub>, 1) ⊢ (1011, q<sub>1</sub>, □) ⊢ (101, q<sub>2</sub>, 11) ⊢ | + | Știind că mașina trebuie să se oprească în starea $ H $ și are un numar **k** de stări ( $ |Q| = k $ ), aflați numărul **maxim** de tranziții ce pot fi efectuate de această mașină atunci când banda de intrare este goală și definiți funcția de tranziție $ \delta $ pentru: |
- | (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ă. | + | * o stare ( $ k = 1 $ ) |
- | </hidden> | + | |
- | 4. Fie următoarea definiție, mai restrictivă, de mașină Turing: | + | * două stări ( $ k = 2 $ ) |
- | $ M = (Q, \Sigma, \Gamma, B, q_1, Y, N, H, \delta)$, unde fiecare element al tuplului are aceeași semnificație ca până acum, in afară de $ \delta: Q \times \Gamma \rightarrow Q' \times \Gamma \times \{\leftarrow, \rightarrow\}$. | + | * trei stări ( $ k = 3 $ ) |
- | + | ||
- | Cu alte cuvinte, la fiecare tranziție, capul mașinii se poate muta pe celula din stânga sau din dreapta, dar nu poate rămâne pe loc. | + | |
- | Arătați că, oricare ar fi o mașină $ M$ conform definiției de la curs, există o mașină $ M'$ conform acestei definiții, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. | + | |
<hidden> | <hidden> | ||
- | 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'$.\\ \\ | + | <note> |
+ | **Hint:** soluția optimă pentru $ k = 1 $ este 2 tranziții, pentru $ k = 2 $ este 6 tranziții, iar pentru $ k = 3 $ este 21 tranziții. | ||
+ | </note> | ||
+ | </hidden> | ||
- | 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)$.\\ \\ | + | 5. Arătați că, dacă $ f $ și $ g $ sunt două funcții //computabile//, atunci și compunerea lor $ f \circ g$ e computabilă. |
- | 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_a,c',\rightarrow)$ și $ \delta M'(q_a,x) = (q',x,\leftarrow)$, $ \forall x \in \Gamma$. | + | 6. Fie o definiție mai restrictivă de mașină Turing, unde singura diferență apare la: $ \delta: Q \times \Gamma \rightarrow (Q \cup \{Y, N, H\}) \times \Gamma \times \{\leftarrow,\rightarrow\} $ |
- | </hidden> | + | |
- | 5. Considerăm mașinile Turing cu următorii membrii fixați: | + | Cu alte cuvinte, la fiecare tranziție, capul mașinii **trebuie** să se mute pe celula din stânga sau din dreapta, nu poate rămâne pe loc. |
- | * $ \Sigma = \{X\}$ | + | Arătați că, oricare ar fi o mașină $ M $ conform definiției de la curs, există o mașină $ M' $ conform acestei definiții, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$ (cele două mașini dau același răspuns indiferent de input). |
- | * $ \Gamma = \{X, \square\}$ | + | |
- | * $ B = \square$ | + | |
- | și cu proprietatea că, primind ca input șirul vid, execuția se va termina în starea $ H$, după un număr finit de tranziții. | + | ---- |
- | Care este numărul maxim de tranziții și cum ar arăta, concret, funcția $ \delta$ pentru o astfel de mașină cu: | + | |
- | a) o stare | + | 7. Fie o mașină Turing a cărei bandă constă în $ k $ //piste//. Fiecare celulă e împărțită pe orizontală în $ k$ porțiuni ce conțin fiecare câte un simbol. La începutul computației, simbolurile din input se află pe prima pistă (în fiecare celulă, pe prima porțiune), restul simbolurilor fiind $ B $. Capul de citire se află pe celula ce conține primul simbol din input. |
- | b) două stări | + | $ M = (Q, \Sigma, \Gamma, B, q_1, \delta)$, unde fiecare element al tuplului are aceeași semnificație ca până acum, în afară de: $ \delta: Q \times \Gamma^k \rightarrow (Q \cup \{Y, N, H\}) \times \Gamma^k \times \{\leftarrow,-,\rightarrow\} $ |
- | c) trei stări | + | Cu alte cuvinte, la fiecare tranziție, capul mașinii citește simultan $ k $ simboluri și scrie $ k $ simboluri (în rest, ca și în definiția din curs, capul se mută apoi o celulă la stânga/dreapta sau rămâne pe loc **pe toate pistele simultan**, iar mașina trece într-o nouă stare). |
+ | Arătați că oricare ar fi o masină $ M'$ conform acestei definiții, există o mașină $ M$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. | ||
- | 6. Arătați că, dacă $ f$ și $ g$ sunt două funcții //computabile//, atunci și compunerea lor $ f \circ g$ e computabilă. | + | ---- |
- | 7. Fie o mașină Turing a cărei bandă constă în $ k$ //piste//. Fiecare celulă e împărțită pe orizontală în $ k$ porțiuni ce conțin fiecare câte un simbol. La începutul computației, simbolurile din input se află pe prima pistă (în fiecare celulă, pe prima porțiune), restul simbolurilor fiind $ B$. Capul de citire se află pe celula ce conține primul simbol din input. | + | 8. Fie o versiune de mașină Turing a cărei bandă se extinde arbitrar doar în partea dreaptă, //nu și în stânga//. La începutul computației, inputul e scris pe bandă, cu primul simbol pe prima celulă, unde se află și capul de citire. La orice moment de timp, dacă capul de citire se află pe prima celulă și mașina face o tranziție care îl mută la stânga, acesta rămâne pe loc. |
+ | Arătați că oricare ar fi o masină $ M$ conform definiției de la curs, există o mașină $ M'$ conform acestei definiții, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. | ||
- | $ M = (Q, \Sigma, \Gamma, B, q_1, Y, N, H, \delta)$, unde fiecare element al tuplului are aceeași semnificație ca până acum, în afară de $ \delta: Q \times \Gamma^k \rightarrow Q' \times \Gamma^k \times \{\leftarrow, -, \rightarrow\}$. | + | ---- |
- | Cu alte cuvinte, la fiecare tranziție, capul mașinii citește simultan $ k$ simboluri și scrie $ k$ simboluri (în rest, ca și în definiția din curs, capul se mută apoi o celulă la stânga/dreapta sau rămâne pe loc, iar mașina trece într-o nouă stare). | + | 9. Fie o versiune de mașină Turing cu singura diferență că, la orice tranziție, capul de citire poate sta pe loc, sau se poate mișca la stânga/dreapta cu orice număr $ n \in \mathbb{N}$ de poziții. |
- | Arătați că oricare ar fi o masină $ M$ conform acestei definiții, există o mașină $ M'$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. | + | Arătați că oricare ar fi o mașină $ M'$ conform acestei definiții, există o mașină $ M$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. |
+ | ---- | ||
- | 8. Fie o versiune de mașină Turing a cărei bandă se extinde arbitrar doar în partea dreaptă, //nu și în stânga//. La începutul computației, inputul e scris pe bandă, cu primul simbol pe prima celulă, unde se află și capul de citire. La orice moment de timp, dacă capul de citire se află pe prima celulă și mașina face o tranziție care îl mută la stânga, acesta rămâne pe loc. | + | 10. Fie o mașină Turing cu o bandă bidimensională infinită a cărei cap de citire poate fi deplasat în orice direcție (sus, jos, stânga, dreapta) sau poate rămâne pe loc. |
- | Arătați că oricare ar fi o masină $ M$ conform definiției de la curs, există o mașină $ M'$ conform acestei definiții, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. | + | Arătați că oricare ar fi o mașină $ M'$ conform acestei definiții, există o mașină $ M$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. |
- | 9. Fie o versiune de mașină Turing cu singura diferență că, la orice tranziție, capul de citire se poate sta pe loc, sau se poate mișca la stânga/dreapta cu orice număr $ n \in \mathbb{N}$ de poziții. | ||
- | Arătați că oricare ar fi o masină $ M$ conform acestei definiții, există o mașină $ M'$ conform definiției de la curs, astfel încât $ \forall w \in \Sigma^*, M[w] \equiv M'[w]$. | ||
+ | <note> | ||
+ | Soluțiile pentru exercițiile din laborator se pot găsi [[aa:lab:sol:2|aici]]. | ||
+ | </note> | ||