This is an old revision of the document!
Exercise sheet I solution
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:
- Sa presupunem suntem in starea $ q$ , iar numarul citit pana la pasul curent este $ n = 5k+r$
- Daca urmatorul bit citit (cel mai nesemnificativ citit pana la pasul curent) este $ b$ (0 sau 1), atunci input-ul codifica valoarea $ 2*n + b$ care este egala cu $ 10k + 2r + b$ .
- Asadar, daca dupa k tranzitii, restul impartirii inputului la 5 este $ r$ , dupa citirea unui nou bit, restul impartiri inputului la 5 este $ (2r + b)$ MOD $ 5$ .
Urmarind aceasta observatie putem construi, iterativ, AFD-ul ilustrat in Fig. 3
:
- din starea initiala, citirea unui zero nu influenteaza restul (numarul binar
0000…0
este codificarea lui 0); citirea unui 1 produce un numar a carui impartire la 5 este 1 - din starea $ \vdots 1$ , daca citim zero, (cei 2 biti sunt
10
), restul impartirii numarului la 5 este 2, iar daca citim 1 (cei doi biti sunt11
), restul impartirii numarului la 5 este 3 - in mod similar, daca din starea $ \vdots 2$ citim 0 (cei trei biti sunt
100
), 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:
- $ K' = K \cup {q_f}$ unde $ q_f$ este starea finala unica a lui $ N'$
- $ F' = {q_f}$
- $ \Delta' = \Delta \cup \{(q,\epsilon,q_f \mid q \in F\}$ - adaugam cate o epsilon tranzitie de la fiecare stare finala $ q$ a lui $ N$ la $ q_f$ .
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.