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. ====== Solutii pentru exercise sheet 2 ====== 1. Fie $ fst(L) = \{ w \in \Sigma^\star \mid \exists x \in \Sigma^\star, a.î. wx \in L\ și\ |x| = |w| \}$. Arătați că $ fst$ este o proprietate de închidere pentru limbajele regulate. //**Solutie:**// Pentru a intelege mai bine $math[fst(L)], il putem aplica pe un limbaj finit, dar si pe unul infinit: * $math[fst(\{A,BAAB,AB\} = \{BA,A\}] * $math[fst(L(A^*B^+)) = \{B,A,AA,BB,AB, ... \}] Conditia $math[\mid x\mid = \mid w\mid] ne obliga sa identificam **mijlocul** cuvintelor din $math[L]. In figura de mai jos, pe primul rand, sunt prezentate doua AFN-uri: unul pentru limbajul $math[L(A^*B^+)] si cel pentru $math[L(B^+A^*) = reverse(L(A^*B^+))]. Daca am putea executa, simultan, primul AFN pe cuvantul $math[AABB], si al doilea AFN pe cuvantul $math[BBAA], ambele automate ar ajunge in **aceeasi** stare dupa primele doua tranzitii (si consumarea prefixului $math[AA]), ceea ce indica faptul ca $math[AA \in fst(L(A^*B^+))]. Putem simula acest proces simultan construind un automat nou pentru limbajul $math[fst(L)] (ultimul rand din figura de mai jos pt exemplul nostru), plecand de la $math[L(A) = L] in care starile sunt de forma: * $math[(q,X)] unde $math[q] este o stare iar $math[X] este o multime de stari. * **starea initiala** este $math[(q_0,F)] - ceea ce indica faptul ca simulam automatul $math[A] incepand din starea lui initiala, si //simultan// din toate starile lui finale; * notam cu $math[pre(X) = \{r \in K\mid \exists c \in \Sigma . \delta(c,r) \in X\}] multimea tuturor **predecesorilor** unei stari din $math[X] (pe oricare simbol) * pentru fiecare stare $math[Q = (q,X)] si fiecare tranzitie $math[\delta(q,c) = q'] construim starea $math[Q'=(q',pre(X))] si tranzitia de la $math[Q] pe simbolul $math[c] catre $math[Q']. Aceasta semnifica faptul ca, pentru fiecare //pas-inainte// al automatului $math[A], pe simbolul $math[c], urmarim si un //pas inapoi// catre toti predecesorii lui $math[X]. * fiecare stare $math[(q,X)] cu proprietatea ca $math[q \in X] este marcata ca stare finala (numarul de //pasi-inainte// este egal cu cel de //pasi-inapoi//. {{ :lfa:sheet-solutions-3.jpg?600 |}} Demonstratia ca automatul construit mai sus accepta exact $math[fst(L)] este lasata in continuare ca exercitiu. 2. Fie $ L_3 = \{ w \in \{0, 1\}^* \mid \#_{01}(w) = \#_{10}(w) \}$ (i.e. cuvintele conțin același număr de secvențe "01" și "10"). Demonstrați că $ L_3$ //este regulat//. //**Solutie:**// Scriem o expresie regulata pentru $math[L_3]. Pentru a gasi expresia corecta, putem incepe prin cateva observatii simple: * $math[L(0*) \subseteq L_3] 3. Demonstrați că $ L = \{ a^nb^mc^{n-m} \mid n \ge m \ge 0 \}$ //nu este// un limbaj regulat, fără a folosi izomorfisme. 4. Demonstrați că, pentru orice limbaj $ L$ //regulat// și //infinit//, există două limbaje $ L_1$, $ L_2$ //regulate// și //infinite//, astfel încât $ L_1 \cap L_2 = \emptyset$ și $ L_1 \cup L_2 = L$.