This is an old revision of the document!
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 $ fst(L)$ , il putem aplica pe un limbaj finit, dar si pe unul infinit:
- $ fst(\{A,BAAB,AB\} = \{BA,A\}$
- $ fst(L(A^*B^+)) = \{B,A,AA,BB,AB, \ldots \}$
Conditia $ \mid x\mid = \mid w\mid$ ne obliga sa identificam mijlocul cuvintelor din $ L$ . In figura de mai jos, pe primul rand, sunt prezentate doua AFN-uri: unul pentru limbajul $ L(A^*B^+)$ si cel pentru $ L(B^+A^*) = reverse(L(A^*B^+))$ .
Daca am putea executa, simultan, primul AFN pe cuvantul $ AABB$ , si al doilea AFN pe cuvantul $ BBAA$ , ambele automate ar ajunge in aceeasi stare dupa primele doua tranzitii (si consumarea prefixului $ AA$ ), ceea ce indica faptul ca $ AA \in fst(L(A^*B^+))$ .
Putem simula acest proces simultan construind un automat nou pentru limbajul $ fst(L)$ (ultimul rand din figura de mai jos pt exemplul nostru), plecand de la $ L(A) = L$ in care starile sunt de forma:
- $ (q,X)$ unde $ q$ este o stare iar $ X$ este o multime de stari.
- starea initiala este $ (q_0,F)$ - ceea ce indica faptul ca simulam automatul $ A$ incepand din starea lui initiala, si simultan din toate starile lui finale;
- notam cu $ pre(X) = \{r \in K\mid \exists c \in \Sigma . \delta(c,r) \in X\}$ multimea tuturor predecesorilor unei stari din $ X$ (pe oricare simbol)
- pentru fiecare stare $ Q = (q,X)$ si fiecare tranzitie $ \delta(q,c) = q'$ construim starea $ Q'=(q',pre(X))$ si tranzitia de la $ Q$ pe simbolul $ c$ catre $ Q'$ . Aceasta semnifica faptul ca, pentru fiecare pas-inainte al automatului $ A$ , pe simbolul $ c$ , urmarim si un pas inapoi catre toti predecesorii lui $ X$ .
- fiecare stare $ (q,X)$ cu proprietatea ca $ q \in X$ este marcata ca stare finala (numarul de pasi-inainte este egal cu cel de pasi-inapoi.
Demonstratia ca automatul construit mai sus accepta exact $ 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 $ L_3$ . Pentru a gasi expresia corecta, putem incepe prin cateva observatii simple:
- $ L(0^*) \subseteq L_3$
- $ L(1^*) \subseteq L_3$
- $ L(0^+1^+0^+)* \subseteq L_3$
- $ L(1^+0^+1^+)* \subseteq L_3$
Ultimele 2 subpuncte acopera atat sirurile care incep cu 1 (si trebuie obligatoriu sa se termine cu un 1), respectiv cele care incep cu 0 (si se termina cu 0). Putem combina expresiile de mai sus intr-una singura, facand aparitia 1-urilor (respectiv 0-urilor) intercalate sa fie optionala. Rezultatul final este: $ (0^+1^*0^+)^* \cup (1^+0^*1^+)^* \cup 0 \cup 1$
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$.