====== Examen optional ====== **Intrebarea 1:** * //Probleme si Masini Turing// * //Clase de probleme// 1.1. Fie $math[M_1] si $math[M_2] doua Masini Turing care accepta Halting Problem ($math[f_h]). Care afirmatie este adevarata? * exista un cuvant $math[w] pentru care $math[M_1] sau $math[M_2] **cicleaza** * daca $math[M_1] cicleaza pt un cuvant $math[w] atunci $math[M_2] cicleaza pentru acel $math[w] * $math[f_h \in R] * $math[M_1] si $math[M_2] au acelasi numar de tranzitii. 1.2. Fie $math[M] o masina Turing si $math[F = \{f \in \mathbb{H}om(\Sigma^*,\{0,1\}) \mid M \text{ accepta } f\}]. Care afirmatie este adevarata? * $math[F \subseteq R] * $math[F \cap RE = \emptyset] * $math[F] este numarabila. * $math[F] este finita. 1.3. Care din urmatoarele multimi **nu** este numarabila: $math[\Sigma^*, \mathcal{M} = \{ M \mid M \text{ este o MT }\}, R, RE] ? 1.4. Fie $math[f] si $math[g] doua probleme **acceptate** de aceeasi masina Turing. Care afirmatie este adevarata? * $math[f \leq_T g] * $math[g \leq_T f] * $math[\exists w. f(w) = 0 \implies g(w) = 1] * $math[\forall w. f(w) = 0 \iff g(w) = 1] **Intrebarea 2:** * //Probleme nedecidabile si reduceri// 2.1. O problema de decizie poate fi redusa la ea insasi ($math[f\leq_T f])? Justificati. 2.2. Fie doua probleme de decizie $math[f,g] reductibile-Turing una la cealalta. Care afirmatie este adevarata? * $math[f \in RE] * $math[g \in RE] * $math[f \in RE \implies g \in RE] * $math[g \in RE \implies f \in RE] 2.3. Fie $math[f \leq_T g] si $math[h \leq_T g]. Daca $math[f] este NP-completa, ce se poate spune despre $math[h]? 2.4. Dati un exemplu de doua probleme de decizie $math[f] si $math[g] astfel incat $math[f\leq_T g] si $math[g \leq_T f] **Intrebarea 3:** * //Notatii asimptotice// 3.1. Descrieti timpul de executie al algoritmului ''A'' folosind notatii asimptotice, asa cum reiese din graficul de mai jos: {{ :aa:exam:29ian:examopt_3.1.png?600 |}} 3.2. Folositi notatii asimptotice pentru a descrie relatia intre functiile $math[f] si $math[g]. {{ :aa:exam:29ian:examopt_3.2.png?600 |}} 3.3. Folositi notatii asimptotice pentru a descrie relatia functiei $math[g] cu functiile $math[f] si $math[h]. Daca cele trei functii ar reprezenta timpi de executie, care ar apartine algoritmului cel mai rapid, **dpdv asimptotic** ? {{ :aa:exam:29ian:examopt_3.3.png?600 |}} 3.4. Folositi notatii asimptotice pentru a descrie relatia functiei $math[f] cu functiile $math[g] si $math[h]. Care dintre cele trei functii pot descrie timpul de executie al unui algoritm? {{ :aa:exam:29ian:examopt_3.4.png?600 |}} **Intrebarea 4:** * //Quicksort si alti alg. de sortare// * //Analiza Amortizata// * //Recurente// * //Complexitatea unor proceduri simple// 4.1. Fie $math[S] o secventa de $math[n] operatii de trei tipuri pe care le numim in continuare $math[\alpha], $math[\beta] si $math[\gamma]. Daca stim ca $math[cost(\alpha) = O(1)], $math[cost(\beta) = O(log(n))] si $math[\gamma] are **cost amortizat constant**, care este costul mediu per operatie **al secventei** $math[S]? 4.2. Care este complexitatea recurentei $math[T(n) = T(13n/19) + T(6n/19) + \Theta(n)] ? 4.3. Dati un exemplu de vector pentru care algoritmul **Mergesort** realizeaza mai **putini** pasi de partitionare decat **Quicksort**. 4.4. Dati un exemplu de recurenta care se afla in cazul 1 al aplicarii T. Master. **Intrebarea 5:** * //Nedeterminism// * //SAT// * //Probleme NP-dure si NP-complete// 5.1. Dati un exemplu de formula $math[SAT] care este satisfacuta de **exact 2** interpretari. 5.2. Exista posibilitatea ca un algoritm nedeterminist sa aibe o complexitate **exponentiala**? Justificati. 5.3. Exista posibilitatea ca o problema NP-completa sa nu fie decidabila? Justificati. 5.4. Presupunem ca $math[P = NP]. Este posibil ca o problema NP-dura sa nu apartina $math[NP]? Justificati. **Intrebarea 6:** * //TDA-uri// * //Axiome pt TDA-uri// 6.1. Definiti un operator si axiome care specifica faptul ca o lista este **sortata** crescator. 6.2. Definiti un operator si axiome care specifica faptul ca un arbore binar este **complet**. 6.3. Definiti constructori de baza pentru arbori ce pot contine **doi** sau **trei** copii. 6.4. Definiti constructori de baza pentru tipul de date //numar intreg//.