opora

frantisek.plesicek
from frantisek.plesicek More from this publisher
10.02.2019 Views

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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!