opora
KAPITOLA 3. REGULÁRNÍ JAZYKY 45 ε 2 a 3 ε 1 ε ε 6 4 b 5 (d) Automat N 4 pro r 4 = (r 3 ) je stejný jako N 3 , zkonstruujeme tedy rovnou N 5 pro výraz r 5 = r4 ∗ = (a + b) ∗ : ε ε 2 a 3 ε 0 ε 1 ε ε ε 6 7 4 b 5 ε (e) Regulárnímu výrazu r 6 = a přísluší automat N 6 : (f) Regulárnímu výrazu r 7 = r 5 r 6 přísluší automat N 7 : ε a 7 8 ε 2 a 3 ε ε 0 1 ε ε ε 6 7 a 8 4 b 5 ε (. . . ) Pokračujeme, až do získání automatu z příkladu 3.25. Převod RV na RKA zavádí mnoho vnitřních stavů a je proto obvykle následován použitím algoritmu minimalizace DKA (algoritmus 3.5). Příklad 3.28 Ověřte, zda deterministický konečný automat z příkladu 3.26 je či není minimální. Pro porovnávání regulárních gramatik, konečných automatů a regulárních výrazů můžeme shrnout, že 1. gramatiky typu 3 (pravé/levé regulární gramatiky, pravé/levé lineární gramatiky), 2. (rozšířené/nedeterministické/deterministické) konečné automaty a 3. regulární výrazy mají ekvivalentní vyjadřovací sílu. gramatiky typu 3 konečné automaty regulární výrazy
KAPITOLA 3. REGULÁRNÍ JAZYKY 46 3.5 Vlastnosti regulárních jazyků Podobně jako u dalších tříd jazyků budeme nyní zkoumat následující vlastnosti regulárních jazyků: (1) vlastnosti strukturální, (2) vlastnosti uzávěrové a (3) rozhodnutelné problémy pro regulární jazyky. 3.5.1 Strukturální vlastnosti regulárních jazyků Věta 3.17 Každý konečný jazyk je regulární. Důkaz: Nechť L = {w 1 , w 2 , . . . , w n }, w i ∈ Σ. Pak L = L(G), kde G = ({S}, Σ, {S → w 1 , S → w 2 , . . . , S → w n }, S). G je zřejmě gramatika typu 3. ✷ Opak věty 3.17 zjevně neplatí: Příklad 3.29 Sestrojte gramatiku typu 3 generující jazyk {0, 1} ∗ . Řešení: ⇒ G = ({S}, {0, 1}, {S → ε, S → 0S, S → 1S}, S) Pumping lemma Pokud se zajímáme o vlastnost, zda jazyk spadá do dané třídy jazyků, je užitečné tzv. Pumping lemma. Neformálně řečeno Pumping lemma tvrdí, že v každé dostatečně dlouhé větě každého regulárního jazyka jsme schopni (poblíž jejího začátku) najít poměrně krátkou sekvenci, kterou je možné vypustit, resp. zopakovat libovolný počet krát, přičemž dostáváme stále věty daného jazyka. Věta 3.18 Nechť L je nekonečný regulární jazyk. Pak existuje celočíselná konstanta p > 0 taková, že platí: w ∈ L ∧ |w| ≥ p ⇒ w = x y z ∧ y ≠ ε ∧ |xy| ≤ p ∧ x y i z ∈ L pro i ≥ 0. Důkaz: Nechť L = L(M), M = (Q, Σ, δ, q 0 , F ) je konečný automat, kde |Q| = n > 0. Položme p = n. Je-li w ∈ L a |w| ≥ n, pak M přijme větu w „průchodem“ alespoň n + 1 konfiguracemi a tudíž alespoň dvě z nich obsahují stejný stav, tedy: (q 0 , w) = (q 0 , xyz) ∗ ⊢ (r, yz) k ⊢ (r, z) ∗ ⊢ (q F , ε), q F ∈ F pro nějaký stav r ∈ Q a k takové, že 0 < k ≤ n. Dále je zřejmé, že k „zopakování“ stavu r dojde nejpozději po přečtení prvních n znaků vstupního řetězce a tudíž |xy| ≤ p. Pak ale existuje posloupnost konfigurací: (q 0 , xy i z) ∗ ⊢ (r, y i z) + ⊢ (r, y i−1 z) . + ⊢ (r, z) ∗ ⊢ (q F , ε)
- 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 and 44: KAPITOLA 3. REGULÁRNÍ JAZYKY 42 3
- Page 45: KAPITOLA 3. REGULÁRNÍ JAZYKY 44 V
- 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
- Page 95 and 96: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
KAPITOLA 3. REGULÁRNÍ JAZYKY 46<br />
3.5 Vlastnosti regulárních jazyků<br />
Podobně jako u dalších tříd jazyků budeme nyní zkoumat následující vlastnosti<br />
regulárních jazyků:<br />
(1) vlastnosti strukturální,<br />
(2) vlastnosti uzávěrové a<br />
(3) rozhodnutelné problémy pro regulární jazyky.<br />
3.5.1 Strukturální vlastnosti regulárních jazyků<br />
Věta 3.17<br />
Každý konečný jazyk je regulární.<br />
Důkaz: Nechť L = {w 1 , w 2 , . . . , w n }, w i ∈ Σ.<br />
Pak L = L(G), kde G = ({S}, Σ, {S → w 1 , S → w 2 , . . . , S → w n }, S). G je<br />
zřejmě gramatika typu 3.<br />
✷<br />
Opak věty 3.17 zjevně neplatí:<br />
Příklad 3.29 Sestrojte gramatiku typu 3 generující jazyk {0, 1} ∗ .<br />
Řešení: ⇒ G = ({S}, {0, 1}, {S → ε, S → 0S, S → 1S}, S)<br />
Pumping lemma<br />
Pokud se zajímáme o vlastnost, zda jazyk spadá do dané třídy jazyků, je užitečné<br />
tzv. Pumping lemma. Neformálně řečeno Pumping lemma tvrdí, že v každé dostatečně<br />
dlouhé větě každého regulárního jazyka jsme schopni (poblíž jejího začátku) najít<br />
poměrně krátkou sekvenci, kterou je možné vypustit, resp. zopakovat libovolný<br />
počet krát, přičemž dostáváme stále věty daného jazyka.<br />
Věta 3.18 Nechť L je nekonečný regulární jazyk. Pak existuje celočíselná konstanta<br />
p > 0 taková, že platí:<br />
w ∈ L ∧ |w| ≥ p ⇒ w = x y z ∧<br />
y ≠ ε ∧ |xy| ≤ p ∧<br />
x y i z ∈ L pro i ≥ 0.<br />
Důkaz: Nechť L = L(M), M = (Q, Σ, δ, q 0 , F ) je konečný automat, kde |Q| =<br />
n > 0. Položme p = n. Je-li w ∈ L a |w| ≥ n, pak M přijme větu w „průchodem“<br />
alespoň n + 1 konfiguracemi a tudíž alespoň dvě z nich obsahují stejný stav, tedy:<br />
(q 0 , w) = (q 0 , xyz) ∗ ⊢ (r, yz) k ⊢ (r, z) ∗ ⊢ (q F , ε), q F ∈ F<br />
pro nějaký stav r ∈ Q a k takové, že 0 < k ≤ n. Dále je zřejmé, že k „zopakování“<br />
stavu r dojde nejpozději po přečtení prvních n znaků vstupního řetězce a tudíž<br />
|xy| ≤ p.<br />
Pak ale existuje posloupnost konfigurací:<br />
(q 0 , xy i z)<br />
∗<br />
⊢ (r, y i z)<br />
+<br />
⊢ (r, y i−1 z)<br />
.<br />
+<br />
⊢ (r, z)<br />
∗<br />
⊢ (q F , ε)