10.02.2019 Views

opora

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

KAPITOLA 3. REGULÁRNÍ JAZYKY 23<br />

Poněvadž (q 0 , zc.cezc♯) ⊢ ∗ (q 1 , ɛ), patří zc.cezc♯ do L(M).<br />

Příklad 3.2 Nedeterministický konečný automat (NKA)<br />

M 1 = ({q 0 , q 1 , q 2 , q F }, {0, 1}, δ, q 0 , {q F })<br />

má přechodovou funkci definovanou takto:<br />

δ : δ(q 0 , 0) = {q 0 , q 1 } δ(q 0 , 1) = {q 0 , q 2 }<br />

δ(q 1 , 0) = {q 1 , q F } δ(q 1 , 1) = {q 1 }<br />

δ(q 2 , 0) = {q 2 } δ(q 2 , 1) = {q 2 , q F }<br />

δ(q F , 0) = ∅ δ(q F , 1) = ∅<br />

Alternativními způsoby reprezentace funkce δ může být 1. matice přechodů<br />

nebo 2. diagram přechodů.<br />

1. matice (přechodů) 2. diagram přechodů<br />

0 1<br />

q 0 {q 0 , q 1 } {q 0 , q 2 }<br />

q 1 {q 1 , q F } {q 1 }<br />

q 2 {q 2 } {q 2 , q F }<br />

q F ∅ ∅<br />

Příklad 3.3 Uvažujme NKA M 1 z příkladu 1.5. Platí: (q 0 , 1010) ⊢ (q 0 , 010) ⊢<br />

(q 1 , 10) ⊢ (q 1 , 0) ⊢ (q f , ɛ) a tedy: (q 0 , 1010) ∗ ⊢ (q f , ɛ)<br />

Neplatí například (q 0 , ɛ) ∗ ⊢ (q f , ɛ)<br />

Vyjádření jazyka L(M 1 ): L(M 1 ) = {w | w ∈ {0, 1} ∗ ∧w končí symbolem, který<br />

je již v řetězci w obsažen}.<br />

Vztah mezi nedeterministickými a deterministickými konečnými automaty patří<br />

k základním poznatkům teorie formálních jazyků.<br />

Věta 3.1 Každý nedeterministický konečný automat M lze převést na deterministický<br />

konečný automat M ′ tak, že L(M) = L(M ′ ).<br />

Důkaz:<br />

1. Nejprve nalezneme algoritmus převodu M → M ′ :<br />

Algoritmus 3.1 Převod nedeterministického konečného automatu na ekvivalentní<br />

deterministický konečný automat.<br />

Vstup: Nedeterministický konečný automat M = (Q, Σ, δ, q 0 , F )<br />

Výstup: Deterministický konečný automat M ′ = (Q ′ , Σ, δ ′ , q ′ 0, F ′ )<br />

Metoda:<br />

1. Polož Q ′ = 2 Q \ {∅}.<br />

2. Polož q ′ 0 = {q 0 }.

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

Saved successfully!

Ooh no, something went wrong!