1. Definiți câte un AFD pentru limbajul șirurilor care conțin:
1.a. cel puțin doi $ b$
1.b. exact doi $ b$
1.c. cel mult doi $ b$
Solutie:
2. Scrieți un AFD peste alfabetul $ \{0, 1\}$, care recunoaște reprezentări binare ale numerelor divizibile cu 5. E.g. 0, 101, 1010, 1111, …
Solutie:
In primul rand, sa presupunem ca AFD-ul citeste numarul incepand cu bitul cel mai semnificativ ($ w=1010$ codifica numarul 10). Cum multimea sirurilor care codifica (astfel) numere divizibile cu 5 nu are un pattern vizibil imediat, vom construi un AFD in care fiecare stare reprezinta restul impartirii numarului respectiv la 5. Cum orice numar natural are una din formele: $ 5k$ , $ 5k+1$ , $ 5k+2$ , $ 5k+3$ , $ 5k+4$ , vom avea 5 astfel de stari, iar starea finala va corespunde lui $ 5k$ .
Observatia cheie este ca valoarea $ k$ nu influenteaza in nici un fel tranzitiile intre aceste stari:
Urmarind aceasta observatie putem construi, iterativ, AFD-ul ilustrat in Fig. 3
:
0000…0
este codificarea lui 0); citirea unui 1 produce un numar a carui impartire la 5 este 110
), restul impartirii numarului la 5 este 2, iar daca citim 1 (cei doi biti sunt 11
), restul impartirii numarului la 5 este 3100
), restul impartirii numarului la 5 este 4, iar daca citim 1, numarul se divide cu 5.3. Demonstrați că pentru orice $ \varepsilon$-AFN, există un $ \varepsilon$-AFN echivalent cu o singură stare finală.
Solutie:
Fie $ N=(K,\Sigma, \Delta, q_0, F)$ un $ \varepsilon$-AFN. Construim un $ \varepsilon$-AFN echivalent $ N'$ adaugand cate o epsilon-tranzitie de la fiecare stare finala a lui $ N$ la starea finala unica a lui $ N'$ . Mai exact, $ N=(K',\Sigma, \Delta', q_0, F')$ unde:
Ramane de demonstrat ca automatul cu o stare finala construit astfel este intr-adevar echivalent cu cel initial, adica cele doua accepta acelasi limbaj: $ L(N) = L(N')$ . Propozitia de demonstrat este:
$ (q_0,w) \vdash_N^* (q, \epsilon) \mid q \in F \iff (q_0,w) \vdash_{N'}^* (q_f, \epsilon)$ . Propozitia rezulta imediat, fara a fi necesara inductia structurala, din constructia lui $ N'$ .
4. Considerați lungimea $ |E|$ unei Expresii Regulate $ E$ ca fiind numărul de simboluri din ea, fără eventuale paranteze (doar simboluri din alfabet, $ \varepsilon$, $ \emptyset$, $ \cup$ și $ *$). Demonstrați că pentru orice expresie regulată $ E$ care nu conține Kleene star:
$\begin{equation} |E| \ge \max_{w \in L(E)}{|w|}\end{equation}$
Solutie: Proprietatea poate fi demonstrata prin inductie structurala, dupa pasii de constructie ai $ E$ (exceptand cazul $ *$ ):
Caz de baza 1: $ E = \emptyset$ . Cum $ L(\emptyset) = \emptyset$ , propozitia este trivial adevarata.
Caz de baza 2: $ E = \epsilon$ . $ L(\epsilon) = \{\epsilon\}$ iar $ $ (lungimea cuvantului vid este 0), in timp ce, conform definitiei, $ $ (lungimea expresiei regulate $ \epsilon$ este 1), iar proprietatea este adevarata.
Caz de baza 3: $ E = c$ unde $ c \in \Sigma$ . Atat dimensiunea cuvantului $ c$ cat si a expresiei regulate $ c$ sunt 1, asadar proprietatea este adevarata.
Pas de inductie 1: $ E = E_1E_2$ (concatenare). Conform definitiei: $ \mid E_1E_2\mid = \mid E_1\mid + \mid E_2\mid$ . In acelasi timp, $ L(E_1E_2) = L(E_1)L(E_2)$ , asadar lungimea maxima a unui cuvant din $ L(E_1E_2)$ este suma lungimilor maxime ale cuvintelor din $ L(E_1)$ respectiv $ L(E_2)$ . Proprietatea rezulta imediat, aplicand ipoteza inductiva pentru $ E_1$ respectiv $ E_2$ .
Pas de inductie 2: $ E = E_1 \cup E_2$ (reuniune). Conform definitiei: $ \mid E_1E_2\mid = \mid E_1\mid + \mid E_2\mid$ . In acelasi timp, $ L(E_1\cup E_2) = L(E_1)\cup L(E_2)$ , asadar lungimea maxima a unui cuvant din $ L(E_1\cup E_2)$ este maximul dintre lungimile maxime ale cuvintelor din $ L(E_1)$ respectiv $ L(E_2)$ . Din nou, aplicand ipoteza inductiva pentru $ E_1$ respectiv $ E_2$ , proprietatea este adevarata.
5. Câte limbaje distincte pot fi recunoscute de un AFD cu 2 stări? Justificați.
Solutie:
Daca AFD-ul nu contine stari finale, sau daca ambele stari sunt finale, limbajele acceptate sunt $ \emptyset$ respectiv $ \Sigma^*$ , indiferent de structura AFD-ului. Avem prin urmare 2 limbaje identificate.
Vom considera in continuare AFD-uri cu o stare finala. Din punct de vedere al tranzitiilor, acestea pot avea urmatoarele tipuri (forme), prezentate in figura de mai jos. Numele efectiv al fiecarei stari nu este relevant, ci doar calitatea fiecareia de a fi initiala/finala. Vom numara in continuare limbajele posibile pentru fiecare tip de AFD:
Insumand, peste cele 6 tipuri, obtinem un total de: $ 2 + 4 + 8 + 2 + 8 + 2= 26$ limbaje diferite.