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. ====== Exercise sheet I solution ====== <note tip> Unde nu e specificat explicit, alfabetul este $ \{a, b\}$. </note> 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//**: {{ :lfa:sheet-solutions.jpg?600 |}} 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, ... <note tip> Extra 0-uri la început sunt ok; 101, 0101, 00000101 etc. fac toate parte din limbaj. </note> 3. Demonstrați că pentru orice $ \varepsilon$-AFN, există un $ \varepsilon$-AFN echivalent cu o singură stare finală. **//Solutie//**: Fie $math[N=(K,\Sigma, \Delta, q_0, F)] un $ \varepsilon$-AFN. Construim un $ \varepsilon$-AFN echivalent $math[N'] adaugand cate o epsilon-tranzitie de la fiecare stare finala a lui $math[N] la starea finala unica a lui $math[N']. Mai exact, $math[N=(K',\Sigma, \Delta', q_0, F')] unde: * $math[K' = K \cup {q_f}] unde $math[q_f] este starea finala unica a lui $math[N'] * $math[F' = {q_f}] * $math[\Delta' = \Delta \cup \{(q,\epsilon,q_f \mid q \in F\}] - adaugam cate o epsilon tranzitie de la fiecare stare finala $math[q] a lui $math[N] la $math[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: $math[L(N) = L(N')]. Propozitia de demonstrat este: $math[(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 $math[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 $math[E] (exceptand cazul $math[*]): Caz de baza 1: $math[E = \emptyset]. Cum $math[L(\emptyset) = \emptyset], propozitia este trivial adevarata. Caz de baza 2: $math[E = \epsilon]. $math[L(\epsilon) = \{\epsilon\}] iar $math[|\epsilon|=0] (lungimea cuvantului vid este 0), in timp ce, conform definitiei, $math[|E=\epsilon|=1] (lungimea expresiei regulate $math[\epsilon] este 1), iar proprietatea este adevarata. Caz de baza 3: $math[E = c] unde $math[c \in \Sigma]. Atat dimensiunea cuvantului $math[c] cat si a expresiei regulate $math[c] sunt 1, asadar proprietatea este adevarata. Pas de inductie 1: $math[E = E_1E_2] (concatenare). Conform definitiei: $math[|E_1E_2| = |E_1| + |E_2|]. In acelasi timp, $math[L(E_1E_2) = L(E_1)L(E_2)], asadar lungimea maxima a unui cuvant din $math[L(E_1E_2)] este suma lungimilor maxime ale cuvintelor din $math[L(E_1)] respectiv $math[L(E_2)]. Proprietatea rezulta imediat, aplicand ipoteza inductiva pentru $math[E_1] respectiv $math[E_2]. Pas de inductie 2: $math[E = E_1 \cup E_2] (reuniune). Conform definitiei: $math[|E_1\cup E_2| = |E_1| + |E_2|]. In acelasi timp, $math[L(E_1\cup E_2) = L(E_1)\cup L(E_2)], asadar lungimea maxima a unui cuvant din $math[L(E_1\cup E_2)] este **maximul** dintre lungimile maxime ale cuvintelor din $math[L(E_1)] respectiv $math[L(E_2)]. Din nou, aplicand ipoteza inductiva pentru $math[E_1] respectiv $math[E_2], proprietatea este adevarata. 5. Câte limbaje //distincte// pot fi recunoscute de un AFD cu 2 stări? Justificați.