You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
KAPITOLA 3. REGULÁRNÍ JAZYKY 42<br />
3.4 Převod regulárních výrazů na konečné automaty<br />
Nyní si ukážeme přímý převod regulárního výrazu na deterministický konečný<br />
automat. Regulární výrazy budeme převádět nejprve na tzv. rozšířené konečné<br />
automaty a ty pak na deterministické konečné automaty.<br />
Definice 3.14 Rozšířený konečný automat (RKA) je pětice M = (Q, Σ, δ, q 0 , F ),<br />
kde<br />
(a) Q je konečná množina stavů,<br />
(b) Σ je konečná vstupní abeceda,<br />
(c) δ je zobrazení Q × (Σ ∪ {ε}) → 2 Q ,<br />
(d) q 0 ∈ Q je počáteční stav,<br />
(e) F ⊆ Q je množina koncových stavů.<br />
Příklad 3.23 M = ({0, 1, 2, 3, 4}, {a, b}, δ, 0, {2, 4})<br />
ε<br />
a<br />
1 2<br />
a<br />
0<br />
ε<br />
3<br />
b<br />
4<br />
b<br />
L(M) = aa ∗ + bb ∗ = a + + b +<br />
Definice 3.15 Klíčovou funkci v algoritmu převodu RKA na DKA má výpočet<br />
funkce, která k danému stavu určí množinu všech stavů, jež jsou dostupné po ε<br />
hranách diagramu přechodů funkce δ. Označme tuto funkci jako ε-uzávěr:<br />
ε-uzávěr(q) = {p | ∃w ∈ Σ ∗ : (q, w) ∗ ⊢ (p, w)}<br />
Funkci ε-uzávěr zobecníme tak, aby argumentem mohla být množina T ⊆ Q:<br />
ε-uzávěr(T ) = ⋃<br />
ε-uzávěr(s)<br />
Příklad 3.24<br />
s∈T<br />
ε<br />
ε ε-uzávěr({q, r, s}) =<br />
t q<br />
p<br />
a<br />
{p, q, r, s, t}<br />
r<br />
ε<br />
s<br />
Pro popis výpočtu ε-uzávěru si zavedeme relaci<br />
∀q 1 , q 2 ∈ Q : q 1<br />
ε def<br />
−→ q 2 ⇐⇒ q 2 ∈ δ(q 1 , ε)<br />
ε<br />
−→ v množině Q takto:<br />
Pak ε-uzávěr(p) = {q ∈ Q | p −→ ε ∗ q}.<br />
K výpočtu ε-uzávěru pak použijeme Warshallův algoritmus, doplníme diagonálu<br />
jedničkami a z příslušného řádku matice výsledné relace vyčteme ε-uzávěr.