Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
aa:lab:3 [2023/10/21 11:48] ioana.dabelea rezolvare pr2 |
aa:lab:3 [2024/10/31 20:08] (current) stefan.sterea [Exerciții] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Reduceri Turing ====== | + | ====== Reduceri ====== |
- | /* | + | |
- | <hidden> | + | Reducerile sunt o unealtă folositoare pentru a demonstra (ne)decidabilitatea/acceptabilitatea unor probleme. Vom folosi în mod predominant reducerile pentru a demonstra prin absurd că o problemă nouă $ f$ nu este decidabilă, atfel: |
- | <note important> | + | |
- | Solutii: https://drive.google.com/file/d/1RUCQaVsHkMbFLBojUJ7ok5gy5Mq6-ce8/view?usp=sharing | + | |
- | </note> | + | |
- | </hidden> | + | |
- | */ | + | |
- | Reducerile Turing sunt o unealtă folositoare pentru a demonstra (ne)decidabilitatea/acceptabilitatea unor probleme. Vom folosi în mod predominant reducerile pentru a demonstra prin absurd că o problemă nouă $ f$ nu este decidabilă, atfel: | + | |
* presupunem că $ f$ e decidabilă, deci există o mașină $ M_f$ care o decide | * presupunem că $ f$ e decidabilă, deci există o mașină $ M_f$ care o decide | ||
Line 24: | Line 18: | ||
* $ f_{111}(M) = TRUE \iff M[111] \rightarrow TRUE$ | * $ f_{111}(M) = TRUE \iff M[111] \rightarrow TRUE$ | ||
- | <hidden> | ||
- | O să încercăm să arătăm că $ f_{h} \le_m f_{111}$. | ||
- | |||
- | Trebuie să găsim o transformare t care primeşte inputul lui Halting Problem şi întoarce un input pentru $ f_{111}$: | ||
- | $ M, w \to t \to M^*$ | ||
- | |||
- | După ce am găsit asta, mai ramane de demonstrat doar: $ f_{h}(M, w) = TRUE \iff f_{111}(M^*) = TRUE$ | ||
- | |||
- | $ M^*(x):$ | ||
- | <code> | ||
- | run M[w] | ||
- | return x == 111 | ||
- | </code> | ||
- | |||
- | Demonstraţii: | ||
- | - $ f_{h}(M, w) = TRUE \Rightarrow M[w] \text{se termină} \Rightarrow \text{vom returna x == 111} \Rightarrow \text{când x este 111}, M^* \text{va tranziţiona în Y} => M^*[111] \rightarrow TRUE \Rightarrow f_{111}(M^*) = TRUE$ | ||
- | - $ f_{111}(M^*) = TRUE \Rightarrow M^*[111] \rightarrow TRUE \Rightarrow \text{am ajuns la return} \Rightarrow \text{run M[w] din }M^* \text{nu a ciclat} \Rightarrow \text{M[w] s-a oprit} \Rightarrow f_{h}(M, w) = TRUE$ | ||
- | |||
- | Din cele 2 direcţii ale demonstraţiei $\Rightarrow f_{h} \le_m f_{111}$. | ||
- | </hidden> | ||
* $ f_{p}(M) = TRUE \iff \forall w, M \text{ decide dacă w e palindrom} $ | * $ f_{p}(M) = TRUE \iff \forall w, M \text{ decide dacă w e palindrom} $ | ||
- | <hidden> | ||
- | O să încercăm să arătăm că $ f_{h} \le_m f_{p}$. | ||
- | |||
- | Trebuie să găsim o transformare t care primeşte inputul lui Halting Problem şi întoarce un input pentru $ f_{p}$: | ||
- | $ M, w \to t \to M^*$ | ||
- | |||
- | $ M^*(x):$ | ||
- | <code> | ||
- | run M[w] | ||
- | check if x is palindrome | ||
- | </code> | ||
- | Demonstraţii: | ||
- | - $ f_{h}(M, w) = TRUE \Rightarrow M[w] \text{se termină} \Rightarrow \text{o sa verificăm dacă x este palindrom} \Rightarrow \text{când x este palindrom}, M^* \text{va tranziţiona în Y} \Rightarrow f_{p}(M^*) = TRUE$ | ||
- | - $ f_{p}(M^*) = TRUE \Rightarrow M^*[x] \text{decide daca x este palindrom } \forall x \Rightarrow \text{am ajuns la return} \Rightarrow \text{run M[w] din }M^* \text{nu a ciclat} \Rightarrow \text{M[w] s-a oprit} \Rightarrow f_{h}(M, w) = TRUE$ | ||
- | |||
- | Din cele 2 direcţii ale demonstraţiei $\Rightarrow f_{h} \le_m f_{p}$. | ||
- | </hidden> | ||
* $ f_{rev}(M) = TRUE \iff \forall w, M \text{ computează inversul lui w}$ | * $ f_{rev}(M) = TRUE \iff \forall w, M \text{ computează inversul lui w}$ | ||
+ | |||
* $ f_{own}(M) = TRUE \iff M[enc(M)] \rightarrow TRUE$ | * $ f_{own}(M) = TRUE \iff M[enc(M)] \rightarrow TRUE$ | ||
+ | |||
* $ f_{finite}(M) = TRUE \iff M \text{ se oprește pentru un număr finit de cuvinte}$ | * $ f_{finite}(M) = TRUE \iff M \text{ se oprește pentru un număr finit de cuvinte}$ | ||
+ | |||
* $ f_{set}(A, M) = TRUE \iff \forall w \in A, M[w] \text{ halts}$ | * $ f_{set}(A, M) = TRUE \iff \forall w \in A, M[w] \text{ halts}$ | ||
+ | |||
* $ f_{x}(M) = TRUE \iff \exists w, M[w] \text{ scrie un x pe bandă la un moment dat}$ | * $ f_{x}(M) = TRUE \iff \exists w, M[w] \text{ scrie un x pe bandă la un moment dat}$ | ||
- | * $ f_{eq}(M_1, M_2) = TRUE \iff \forall w, M_1[w] \equiv M_2[w]$; i.e. mașinile au același comportament (fie acceptă, fie resping, fie computează aceeași valoare, fie ciclează) pentru orice cuvânt. | ||
+ | * $ f_{eq}(M_1, M_2) = TRUE \iff \forall w, M_1[w] \equiv M_2[w]$; i.e. mașinile au același comportament (fie acceptă, fie resping, fie computează aceeași valoare, fie nu se termină) pentru orice cuvânt. | ||
+ | |||
+ | <note tip> | ||
+ | În continuare, problemele $ f_{all}$ și $ f_{any}$ sunt cunoscute ca nedecidabile: | ||
+ | * $ f_{all}(M) = 1 \iff \forall w, M[w] \rightarrow TRUE$ | ||
+ | * $ f_{any}(M) = 1 \iff \exists w, M[w] \rightarrow TRUE$ | ||
+ | </note> | ||
2. Construiți următoarele reduceri: | 2. Construiți următoarele reduceri: | ||
* $ f_{all} \le_m f_{eq}$ | * $ f_{all} \le_m f_{eq}$ | ||
+ | |||
* $ f_{any} \le_m f_{eq}$ | * $ f_{any} \le_m f_{eq}$ | ||
+ | |||
* $ f_{p} \le_m f_{eq}$ | * $ f_{p} \le_m f_{eq}$ | ||
+ | |||
* $ f_{own} \le_m f_{eq}$ | * $ f_{own} \le_m f_{eq}$ | ||
+ | |||
+ | <note tip> | ||
+ | Dacă $ t_{1}$ şi $ t_{2}$ sunt două funcţii computabile $ \Rightarrow t = t_{1} \circ t_{2} $ este computabilă. | ||
+ | </note> | ||
3. Demonstrați că relația $ \le_m$ e reflexivă și tranzitivă. | 3. Demonstrați că relația $ \le_m$ e reflexivă și tranzitivă. | ||
+ | |||
+ | <note tip> | ||
+ | Soluțiile acestui laborator se găsesc [[aa:lab:sol:3|aici]] | ||
+ | </note> | ||
+ |