opora
KAPITOLA 3. REGULÁRNÍ JAZYKY 43 Příklad 3.25 ε ε 2 a 3 ε 0 ε 1 ε ε ε 6 7 a b b 8 9 10 4 b 5 ε ε-uzávěr(3) = {3, 6, 7, 1, 2, 4} ε-uzávěr({1, 0}) = {0, 1, 2, 4, 7} Algoritmus 3.6 Převod rozšířeného konečného automatu na deterministický konečný automat. Vstup: Rozšířený konečný automat M = (Q, Σ, δ, q 0 , F ). Výstup: Deterministický konečný automat M ′ = (Q ′ , Σ, δ ′ , q ′ 0, F ′ ), L(M) = L(M ′ ). Metoda: 1. Q ′ := 2 Q \ {∅}. 2. q 0 ′ := ε-uzávěr(q 0 ). 3. δ ′ : Q ′ × Σ → Q ′ je vypočtena takto: • Nechť ∀T ∈ Q ′ , a ∈ Σ : δ(T, a) = ⋃ q∈T δ(q, a). • Pak pro každé T ∈ Q ′ , a ∈ Σ: (a) pokud δ(T, a) ≠ ∅, pak δ ′ (T, a) = ε-uzávěr(δ(T, a)), (b) jinak δ ′ (T, a) není definována. 4. F ′ := {S | S ∈ Q ′ ∧ S ∩ F ≠ ∅}. Příklad 3.26 Aplikujte algoritmus 3.6 na automat z příkladu 3.25 1. Počáteční stav, označíme ho A, je A = ε-uzávěr(0) = {0, 1, 2, 4, 7}. 2. δ ′ (A, a) = ε-uzávěr({3, 8}) = {1, 2, 3, 4, 6, 7, 8} = B. 3. δ ′ (A, b) = ε-uzávěr({5}) = {1, 2, 4, 5, 6, 7} = C. 4. δ ′ (B, a) = ε-uzávěr({3, 8}) = B. 5. δ ′ (B, b) = ε-uzávěr({5, 9} = {1, 2, 4, 5, 6, 7, 9} = D. 6. δ ′ (C, a) = ε-uzávěr({3, 8}) = B. 7. δ ′ (C, b) = ε-uzávěr({5}) = C. 8. δ ′ (D, a) = ε-uzávěr({3, 8}) = B. 9. δ ′ (D, b) = ε-uzávěr({5, 10} = {1, 2, 4, 5, 6, 7, 10} = E. 10. δ ′ (E, a) = ε-uzávěr({3, 8}) = B. 11. δ ′ (E, b) = ε-uzávěr({5}) = C. 12. Množina koncových stavů F = {E}. Algoritmus 3.7 Převod regulárního výrazu na rozšířený konečný automat.
KAPITOLA 3. REGULÁRNÍ JAZYKY 44 Vstup: Regulární výraz r popisující regulární množinu R nad Σ. Výstup: Rozšířený konečný automat M takový, že L(M) = R. Metoda: 1. Rozložíme r na jeho primitivní složky podle rekurzivní definice regulární množiny/výrazu. 2. (a) Pro výraz ε zkonstruujeme automat: (b) Pro výraz a, a ∈ Σ zkonstruujeme automat: (c) Pro výraz ∅ zkonstruujeme automat: (d) Nechť N 1 je automat přijímající jazyk specifikovaný výrazem r 1 a nechť N 2 je automat přijímající jazyk specifikovaný výrazem r 2 . i. Pro výraz r 1 + r 2 zkonstruujeme automat: s s ε s f f a f s ε ε N 1 ε ε f N 2 ii. Pro výraz r 1 r 2 zkonstruujeme automat: N 1 N 2 iii. Pro výraz r1 ∗ zkonstruujeme automat: ε s ε N 1 ε f ε Příklad 3.27 Vytvořme rozšířený konečný automat pro regulární výraz (a + b) ∗ abb: 1. Rozklad regulárního výrazu vyjádříme stromem: a r 11 r 9 . r 10 r 7 . r 8 b r 5 . r 6 r b 4 * a ( ) r 3 r 1 + r 2 b 2. (a) Regulárnímu výrazu r 1 = a přísluší automat N 1 : (b) Regulárnímu výrazu r 2 = b přísluší automat N 2 : (c) Regulárnímu výrazu r 1 + r 2 přísluší automat N 3 : a 2 3 b 4 5
- Page 1 and 2: Teoretická informatika TIN Studijn
- Page 3 and 4: OBSAH 2 4 Bezkontextové jazyky a z
- Page 5 and 6: OBSAH 4 7.2 Třídy složitosti . .
- Page 7 and 8: KAPITOLA 1. ÚVOD 6 1.1 Obsahové a
- Page 9 and 10: Kapitola 2 Jazyky, gramatiky a jeji
- Page 11 and 12: KAPITOLA 2. JAZYKY, GRAMATIKY A JEJ
- Page 13 and 14: KAPITOLA 2. JAZYKY, GRAMATIKY A JEJ
- Page 15 and 16: KAPITOLA 2. JAZYKY, GRAMATIKY A JEJ
- Page 17 and 18: KAPITOLA 2. JAZYKY, GRAMATIKY A JEJ
- Page 19 and 20: KAPITOLA 2. JAZYKY, GRAMATIKY A JEJ
- Page 21 and 22: KAPITOLA 2. JAZYKY, GRAMATIKY A JEJ
- Page 23 and 24: KAPITOLA 3. REGULÁRNÍ JAZYKY 22
- Page 25 and 26: KAPITOLA 3. REGULÁRNÍ JAZYKY 24 3
- Page 27 and 28: KAPITOLA 3. REGULÁRNÍ JAZYKY 26 D
- Page 29 and 30: KAPITOLA 3. REGULÁRNÍ JAZYKY 28 2
- Page 31 and 32: KAPITOLA 3. REGULÁRNÍ JAZYKY 30 D
- Page 33 and 34: KAPITOLA 3. REGULÁRNÍ JAZYKY 32 V
- Page 35 and 36: KAPITOLA 3. REGULÁRNÍ JAZYKY 34 D
- Page 37 and 38: KAPITOLA 3. REGULÁRNÍ JAZYKY 36 V
- Page 39 and 40: KAPITOLA 3. REGULÁRNÍ JAZYKY 38 D
- Page 41 and 42: KAPITOLA 3. REGULÁRNÍ JAZYKY 40 3
- Page 43: KAPITOLA 3. REGULÁRNÍ JAZYKY 42 3
- Page 47 and 48: KAPITOLA 3. REGULÁRNÍ JAZYKY 46 3
- Page 49 and 50: KAPITOLA 3. REGULÁRNÍ JAZYKY 48 P
- Page 51 and 52: KAPITOLA 3. REGULÁRNÍ JAZYKY 50 3
- Page 53 and 54: KAPITOLA 3. REGULÁRNÍ JAZYKY 52 C
- Page 55 and 56: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 57 and 58: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 59 and 60: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 61 and 62: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 63 and 64: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 65 and 66: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 67 and 68: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 69 and 70: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 71 and 72: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 73 and 74: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 75 and 76: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 77 and 78: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 79 and 80: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 81 and 82: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 83 and 84: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 85 and 86: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 87 and 88: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 89 and 90: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 91 and 92: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 93 and 94: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
KAPITOLA 3. REGULÁRNÍ JAZYKY 44<br />
Vstup: Regulární výraz r popisující regulární množinu R nad Σ.<br />
Výstup: Rozšířený konečný automat M takový, že L(M) = R.<br />
Metoda: 1. Rozložíme r na jeho primitivní složky podle rekurzivní definice<br />
regulární množiny/výrazu.<br />
2. (a) Pro výraz ε zkonstruujeme automat:<br />
(b) Pro výraz a, a ∈ Σ zkonstruujeme automat:<br />
(c) Pro výraz ∅ zkonstruujeme automat:<br />
(d) Nechť N 1 je automat přijímající jazyk specifikovaný výrazem r 1 a<br />
nechť N 2 je automat přijímající jazyk specifikovaný výrazem r 2 .<br />
i. Pro výraz r 1 + r 2 zkonstruujeme automat:<br />
s<br />
s<br />
ε<br />
s<br />
f<br />
f<br />
a<br />
f<br />
s<br />
ε<br />
ε<br />
N 1<br />
ε<br />
ε<br />
f<br />
N 2<br />
ii. Pro výraz r 1 r 2 zkonstruujeme automat:<br />
N 1 N 2<br />
iii. Pro výraz r1 ∗ zkonstruujeme automat:<br />
ε<br />
s<br />
ε<br />
N 1<br />
ε<br />
f<br />
ε<br />
Příklad 3.27 Vytvořme rozšířený konečný automat pro regulární výraz (a +<br />
b) ∗ abb:<br />
1. Rozklad regulárního výrazu vyjádříme stromem:<br />
a<br />
r 11<br />
r 9 . r 10<br />
r 7 . r 8<br />
b<br />
r 5 . r 6<br />
r b<br />
4 * a<br />
( )<br />
r 3<br />
r 1 + r 2<br />
b<br />
2. (a) Regulárnímu výrazu r 1 = a přísluší automat N 1 :<br />
(b) Regulárnímu výrazu r 2 = b přísluší automat N 2 :<br />
(c) Regulárnímu výrazu r 1 + r 2 přísluší automat N 3 :<br />
a<br />
2 3<br />
b<br />
4 5