opora

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

Kapitola 3 Regulární jazyky Cílem této kapitoly je důkladné pochopení alternativních prostředků specifikace regulárních jazyků, důkazových technik, které verifikují jejich ekvivalenci a formálních algoritmů zápisů jejich vzájemných převodů. Vede dále k pochopení základních vlastností regulárních jazyků, jež činí tuto třídu nejvíce aplikovatelnou v řadě technických i netechnických oblastí. Kapitola stanovuje rámce teorie, které jsou využívány i v následujících částech učebního textu. 3.1 Jazyky přijímané konečnými automaty a deterministický konečný automat 3.1.1 Konečný automat Definice 3.1 Konečný automat (KA) je 5-tice M = (Q, Σ, δ, q 0 , F ), kde (1) Q je konečná množina stavů, (2) Σ je konečná vstupní abeceda, (3) δ je zobrazení Q × Σ → 2 Q , které nazýváme funkcí přechodu (2 Q je množina podmnožin množiny Q), (4) q 0 ∈ Q je počáteční stav, (5) F ⊆ Q je množina koncových stavů. Je-li ∀q ∈ Q ∀a ∈ Σ : |δ(q, a)| ≤ 1, pak M nazýváme deterministickým konečným automatem (zkráceně DKA), v případě, že ∃q ∈ Q ∃a ∈ Σ : |δ(q, a)| > 1 pak nedeterministickým konečným automatem (zkráceně NKA). Deterministický konečný automat často také definujeme jako 5-tici M = (Q, Σ, δ, q 0 , F ), kde δ je parciální přechodová funkce tvaru δ : Q × Σ → Q. Je-li přechodová funkce δ totální, pak M nazýváme úplně definovaným deterministickým konečným automatem. Lemma 3.1.1 Ke každému DKA M existuje „ekvivalentní“ úplně definovaný DKA M ′ . Důkaz. (idea) Množinu stavů automatu M ′ rozšíříme o nový, nekoncový stav (anglicky označovaný jako SINK stav) a s využitím tohoto stavu doplníme prvky přechodové funkce δ ′ automatu M ′ tak, aby byla totální. ✷ Činnost konečného automatu M je dána posloupností přechodů; přechod z jednoho stavu do druhého je řízen funkcí přechodu δ, která na základě přítomného stavu q i a právě přečteného symbolu a ∈ Σ vstupního řetězce předepisuje budoucí stav q j automatu. Je-li M deterministický konečný automat, δ předepisuje vždy jediný budoucí stav q j ∈ Q (pokud funkce δ není definována, tak přechod není možný). V případě nedeterministického konečného automatu δ předepisuje množinu budoucích stavů Q j , Q j ∈ 2 Q . 21

KAPITOLA 3. REGULÁRNÍ JAZYKY 22 δ z c · e ♯ q 0 q 8 q 7 q 6 q 4 q 1 q 2 q 2 q 1 q 3 q 2 q 4 q 3 q 2 q 5 q 5 q 4 q 1 q 6 q 5 q 7 q 7 q 6 q 4 q 1 q 8 q 7 q 6 q 4 Tabulka 3.1: Funkce přechodů automatu M Definice 3.2 Je-li M = (Q, Σ, δ, q 0 , F ) konečný automat, pak dvojici C = (q, w) z Q×Σ ∗ nazýváme konfigurací automatu M. Konfigurace tvaru (q 0 , w) je počáteční konfigurace, konfigurace tvaru (q, ɛ), q ∈ F je koncová konfigurace. Přechod automatu M je reprezentován binární relací ⊢ M na množině konfigurací C. Pro všechna q, q ′ ∈ Q a w, w ′ ∈ Σ ∗ definujeme, že platí (q, w) ⊢ M (q ′ , w ′ ), tehdy a jen tehdy, když w = aw ′ pro nějaké a ∈ Σ a q ′ ∈ δ(q, a) (tj. δ(q, a) = Q j , Q j ∈ 2 Q , q ′ ∈ Q j ). Označíme symbolem ⊢ k M, k ≥ 0, k-tou mocninu (C ⊢ 0 C ′ právě když C = C ′ ), symbolem ⊢ + M tranzitivní uzávěr a symbolem ⊢ ∗ M tranzitivní a reflexivní uzávěr relace ⊢ M . Bude-li zřejmé, že jde o automat M, pak uvedené relace zapíšeme pouze ve tvaru ⊢, ⊢ k , ⊢ + , ⊢ ∗ . Definice 3.3 Říkáme, že vstupní řetězec w je přijímán konečným automatem M, jestliže (q 0 , w) ⊢ ∗ (q, ɛ), q ∈ F . Jazyk přijímaný konečným automatem M označujeme symbolem L(M) a definujeme ho jako množinu všech řetězců přijímaných automatem M: L(M) = {w | (q 0 , w) ∗ ⊢(q, ɛ) ∧ q ∈ F } Příklad 3.1 Konečný deterministický automat M = ({g 0 , q 1 , q 3 , q 4 , q 5 , q 6 , q 7 , q 8 }, {c, z, 10 , ·, ♯}, δ, q 0 , {q 1 }), jehož funkce přechodu δ je definována tabulkou 3.1, přijímá jazyk zápisů čísel, jak ho známe z některých programovacích jazyků. Symbolem c značíme prvek množiny {0, 1, . . . , 9}, symbolem z prvek množiny {+, −}; znak ♯ ukončuje zápis čísla. Např. vstupnímu řetězci zc.cezc♯ (např. číslu +3.1e − 5) bude odpovídat tato posloupnost konfigurací: (q 0 , zc.cezc♯) ⊢ (q 8 , c.cezc♯) (q 7 , .cezc♯) (q 6 , cezc♯) (q 5 , ezc♯) (q 4 , zc♯) (q 3 , c♯) (q 2 , ♯) (q 1 , ɛ)

Kapitola 3<br />

Regulární jazyky<br />

Cílem této kapitoly je důkladné pochopení alternativních prostředků specifikace<br />

regulárních jazyků, důkazových technik, které verifikují jejich ekvivalenci a formálních<br />

algoritmů zápisů jejich vzájemných převodů. Vede dále k pochopení základních<br />

vlastností regulárních jazyků, jež činí tuto třídu nejvíce aplikovatelnou v<br />

řadě technických i netechnických oblastí. Kapitola stanovuje rámce teorie, které<br />

jsou využívány i v následujících částech učebního textu.<br />

3.1 Jazyky přijímané konečnými automaty a deterministický<br />

konečný automat<br />

3.1.1 Konečný automat<br />

Definice 3.1<br />

Konečný automat (KA) je 5-tice M = (Q, Σ, δ, q 0 , F ), kde<br />

(1) Q je konečná množina stavů,<br />

(2) Σ je konečná vstupní abeceda,<br />

(3) δ je zobrazení Q × Σ → 2 Q , které nazýváme funkcí přechodu (2 Q je množina<br />

podmnožin množiny Q),<br />

(4) q 0 ∈ Q je počáteční stav,<br />

(5) F ⊆ Q je množina koncových stavů.<br />

Je-li ∀q ∈ Q ∀a ∈ Σ : |δ(q, a)| ≤ 1, pak M nazýváme deterministickým<br />

konečným automatem (zkráceně DKA), v případě, že ∃q ∈ Q ∃a ∈ Σ : |δ(q, a)| > 1<br />

pak nedeterministickým konečným automatem (zkráceně NKA).<br />

Deterministický konečný automat často také definujeme jako 5-tici M =<br />

(Q, Σ, δ, q 0 , F ), kde δ je parciální přechodová funkce tvaru δ : Q × Σ → Q.<br />

Je-li přechodová funkce δ totální, pak M nazýváme úplně definovaným deterministickým<br />

konečným automatem.<br />

Lemma 3.1.1 Ke každému DKA M existuje „ekvivalentní“ úplně definovaný<br />

DKA M ′ .<br />

Důkaz. (idea) Množinu stavů automatu M ′ rozšíříme o nový, nekoncový stav<br />

(anglicky označovaný jako SINK stav) a s využitím tohoto stavu doplníme prvky<br />

přechodové funkce δ ′ automatu M ′ tak, aby byla totální.<br />

✷<br />

Činnost konečného automatu M je dána posloupností přechodů; přechod z jednoho<br />

stavu do druhého je řízen funkcí přechodu δ, která na základě přítomného<br />

stavu q i a právě přečteného symbolu a ∈ Σ vstupního řetězce předepisuje budoucí<br />

stav q j automatu. Je-li M deterministický konečný automat, δ předepisuje<br />

vždy jediný budoucí stav q j ∈ Q (pokud funkce δ není definována, tak přechod<br />

není možný). V případě nedeterministického konečného automatu δ předepisuje<br />

množinu budoucích stavů Q j , Q j ∈ 2 Q .<br />

21

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

Saved successfully!

Ooh no, something went wrong!