This is an old revision of the document!


Exercise sheet I solution

Unde nu e specificat explicit, alfabetul este $ \{a, b\}$.

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 sunt 11), 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.

Extra 0-uri la început sunt ok; 101, 0101, 00000101 etc. fac toate parte din limbaj.

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.