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:39] ioana.dabelea rezolvare pr1 |
aa:lab:3 [2025/10/27 13:59] (current) andreidarlau04 [Exercitii] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Reduceri Turing ====== | + | ====== Analiza Amortizata 2 ====== |
| - | /* | + | |
| - | <hidden> | + | |
| - | <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 | + | Vom continua cu analiza amortizata inceputa in laboratorul precedent cu un ArrayList cu urmatoarele proprietati: |
| - | * alegem o problemă //cunoscută// $ g$ despre care știm deja (dintr-o demonstrație anterioară de la curs/laborator) că este //nedecidabilă//. Un exemplu bun este problema terminării. | + | * isi dubleaza capacitatea cand este plin (ex: avem 4 elemente intr-un ArrayList cu capacitate 4. La adaugarea celui de-al 5-lea element, capacitatea va deveni 8 - necesita o copiere de 4 element, apoi inserarea celui de-al 5-lea element). |
| - | * găsim o //transformare computabilă// $ T: \Sigma^* \rightarrow \Sigma^*$ pentru care propoziția $ \forall w \in \Sigma^*, g(w) = TRUE \iff f(T(w)) = TRUE$ este adevărată | + | * isi injumatateste capacitatea cand este un sfert plin (ex: avem 5 elemente intr-un ArrayList de capacitate 16. La urmatoarea stergere, capacitatea va deveni 8 - necesita stergerea elementului 5, apoi copierea celor 4 elemente ramase). |
| - | * putem deci să construim mașina $ M_g$ care pentru orice input $ w$ simulează $ M_T$, apoi $ M_f$; rezultatul fiind că $ g$ e decidabilă | + | |
| - | * în urma contradicției, concluzionăm că presupunerea e greșită, deci $ f$ nu e decidabilă. | + | |
| - | ===== Exerciții ===== | ||
| - | <note> | + | ==== Exercitii ==== |
| - | În continuare, aveti un {{:aa:lab:cheatsheet.pdf|}} pentru a va ajuta la rezolvări. | + | - Aflati costul amortizat al operatiilor de inserare si stergere prin metoda agregatelor. |
| - | </note> | + | - Aflati costul amortizat pentru k operatii de inserare si p operatii de stergere. |
| + | - Aflati costul amortizat al operatiei de stergere prin: | ||
| + | - metoda bancherului | ||
| + | - metoda potentialelor | ||
| + | - Bonus: Aflati costul amortizat al operatiei de inserare prin: | ||
| + | - metoda bancherului | ||
| + | - metoda potentialelor | ||
| - | 1. Demonstrați, folosind reduceri, că următoarele probleme sunt nedecidabile: | + | ===== Algebraic Data Types (ADT) ===== |
| - | * $ f_{111}(M) = TRUE \iff M[111] \rightarrow TRUE$ | + | Consideram urmatorul ADT: |
| - | <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}$: | + | Void : List |
| - | $ M, w \to t \to M^*$ | + | Cons : E x List -> List |
| + | ==== Exercitii ==== | ||
| + | - Implementati ADT-ul in C. | ||
| + | - Definiti axiome pentru size, add, append, reverse. | ||
| + | - Implementati axiomele definite in C. | ||
| - | După ce am găsit asta, mai ramane de demonstrat doar: $ f_{h}(M, w) = TRUE \iff f_{111}(M^*) = TRUE$ | ||
| - | $ M^*(x):$ | + | <note tip>Solutiile laboratorului se afla [[aa:lab:sol:3|aici]].</note> |
| - | <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_{rev}(M) = TRUE \iff \forall w, M \text{ computează inversul lui w}$ | + | |
| - | * $ 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_{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_{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. | + | |
| - | + | ||
| - | 2. Construiți următoarele reduceri: | + | |
| - | + | ||
| - | * $ f_{all} \le_m f_{eq}$ | + | |
| - | * $ f_{any} \le_m f_{eq}$ | + | |
| - | * $ f_{p} \le_m f_{eq}$ | + | |
| - | * $ f_{own} \le_m f_{eq}$ | + | |
| - | + | ||
| - | 3. Demonstrați că relația $ \le_m$ e reflexivă și tranzitivă. | + | |