Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S) P = {S  0S | 1S | 0 | 1 } je regulární gramatika generující jazyk L(G) = {0,1} + Příklad 2: G=({E, T,F},

Podobné prezentace


Prezentace na téma: "Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S) P = {S  0S | 1S | 0 | 1 } je regulární gramatika generující jazyk L(G) = {0,1} + Příklad 2: G=({E, T,F},"— Transkript prezentace:

1 Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S) P = {S  0S | 1S | 0 | 1 } je regulární gramatika generující jazyk L(G) = {0,1} + Příklad 2: G=({E, T,F}, {a,b,+,x, (, ) }, P, E) P = {E  E+T | T T  TxF | F F  (E) | a | b } je bezkontextová gramatika generující aritmetické výrazy tvořené operátory sčítání, násobení, závorkami a operandy a, b

2 Příklady jazyků Příklad 3: G=({S, A}, {0,1}, P, S) P = {S  0A1 | 01 0A  00A1 | 001} je kontextová gramatika; L(G) = {0 n 1 n | n  1} Příklad 4: G=({S, A}, {0,1}, P, S) P = {S  0A1 | 01 0A  00A1 A  e } je vzhledem k poslednímu pravidlu gramatika bez omezení, přičemž L(G) = {0 n 1 n | n  1}

3 Příklady jazyků Příklad 5: G 1 =({S}, {a,+}, P, S) P = {S  S+S| a } G 1 je bezkontextová gramatika; L(G 1 ) = {a, a+a, a+a+a, …} G 2 =({S, A}, {a,+}, P, S) P = {S  a | aA A  +S } G 2 je regulární gramatika; L(G 2 ) = {a, a+a, a+a+a, …} je regulární jazyk L(G 2 ) = L(G 1 ) je také regulární jazyk

4 Příklady gramatik Navrhněte gramatiku generující jazyk nad abecedou {0,1}, jehož slova končí znakem 0 Navrhněte gramatiku generující jazyk nad abecedou {0,1}, jehož slova obsahují podřetězec 00 Navrhněte gramatiku generující jazyk L={a i b j c k |i,j,k>0} nad abecedou {a,b,c}

5 Příklady gramatik Navrhněte gramatiku generující jazyk L={a i b i |i >0} nad abecedou {a,b} Navrhněte gramatiku generující jazyk L={a i b i c i |i>0} nad abecedou {a,b,c} Navrhněte gramatiku generující jazyk přirozených čísel bez vedoucích nul

6 Využití formálních jazyků Z hlediska práce s programovacími jazyky je možné se soustředit pouze na jazyky regulární a jazyky bezkontextové Regulární gramatiky a jazyky –specifikace základních objektů (identifikátory, čísla, …) Bezkontextové gramatiky a jazyky – popis složitějších programových konstrukcí (výrazy, příkazy, …) Gramatika jazyk definuje generativním způsobem, ale v praxi se spíše hodí schopnost rozpoznat, zda dané slovo do příslušného jazyka patří či nikoliv – akceptační způsob (rozhodování bude provádět automat)

7 Konečné automaty DEF: Deterministický konečný automat M je pětice M=(Q,T, ,q 0, F), kde Q je konečná množina vnitřních stavů automatu T je konečná množina přípustných vstupních symbolů  je přechodová funkce  : QxT  Q q 0 je počáteční stav automatu (q 0  Q) F je množina koncových stavů (F  Q) Příklad: automat na kontrolu otevírání dveří Q={otevřeno, zavřeno}, T={smí, nesmí}, q 0 ={zavřeno}, F={zavřeno},  (zavřeno, smí)= otevřeno,  (zavřeno, nesmí)= zavřeno,  (otevřeno, smí)= otevřeno,  (otevřeno, nesmí)= zavřeno

8 Konečné automaty Konečný automat pracuje po krocích (taktech). V každém kroku přečte jeden symbol vstupního řetězce, který spolu se stavem, ve kterém se automat aktuálně nachází, rozhodne o další činnosti automatu. Tato činnost je určena funkcí . Konečný automat přečte symbol c, posune se o jedno políčko vpřed a přejde do stavu q 2 právě tehdy, když  (q 1,c)=q 2 abcdef q1q1 ghabcdef q2q2 gh 1 krok

9 Užívané konvence a pojmy DEF: Nechť M=(Q,T, ,q 0, F) je konečný automat. Potom dvojici (q,w)  QxT * nazýváme konfigurací konečného automatu M. Konfiguraci (q 0, w), kde w je vstupní řetězec nazýváme počáteční konfigurací automatu M a libovolnou konfiguraci (q, e), kde q  F nazýváme koncovou konfigurací automatu M. DEF: Buď M=(Q,T, ,q 0, F) konečný automat. Potom nad množinou všech konfigurací definujeme relaci přechodu pro q 1,q 2  Q, w  T *, a  T následovně: ( q 1,aw) (q 2,w), jestliže  (q 1,a)=q 2  

10 Konečné automaty - příklad Příklad: automat na kontrolu otevírání dveří Q={otevřeno, zavřeno}, T={smí, nesmí}, q 0 ={zavřeno}, F={zavřeno},  (zavřeno, smí)= otevřeno,  (zavřeno, nesmí)= zavřeno,  (otevřeno, smí)= otevřeno,  (otevřeno, nesmí)= zavřeno Počáteční konfigurace (zavřeno, smí, smí, smí), (zavřeno, nesmí, smí), ……. Koncová konfigurace (zavřeno, e) Přechody (zavřeno, smí, nesmí) (otevřeno, nesmí) (zavřeno, e) 

11 Další definice DEF: Nechť M=(Q,T, ,q 0, F) je konečný automat. Potom stav q  Q je dosažitelný, jestliže existuje přechod ( q 0,w) n (q,e) pro nějaké n  0 a w  T *. Dosažitelný stav automatu M je tedy libovolný stav, do kterého se mohu dostat z nějaké počáteční konfigurace po konečném počtu přechodů (kroků). Příklad: V úloze s automatem na otevírání dveří jsou oba stavy dosažitelné. zavřeno je počáteční stav (vždy dosažitelný) otevřeno dosáhnu např. přechodem: (zavřeno,smí) (otevřeno, e)  

12 Přijímání slova automatem DEF: Nechť M=(Q,T, ,q 0, F) je konečný automat. Potom automat M přijímá (akceptuje) slovo w  T *, jestliže platí ( q 0,w) * (q,e) pro nějaké q  F. Poznámka: po přečtení slova automat skončí v některém z koncových stavů. DEF: Nechť M=(Q,T, ,q 0, F) je konečný automat. Jazyk L(M) specifikovaný konečným automatem M je množina řetězců L(M)={w| ( q 0,w) * (q,e), w  T *, q  F}  

13 Konečné automaty Příklad: Mějme automat M=({q 0, q 1, q 2, q 3 },{0,1}, ,q 0, {q 0 }), kde  (q 0,0)= q 2,  (q 0,1)= q 1,  (q 1,0)= q 3,  (q 1,1)= q 0,  (q 2,0)= q 0,  (q 2,1)= q 3,  (q 3,0)= q 1,  (q 3,1)= q 2. Potom pro vstup w=1010: (q 0,1010) (q 1,010) (q 3,10) (q 2,0) (q 0,e) … přijato Ale (q 0,111) (q 1,11) (q 0,1) (q 1,e) … nepřijato (q 0,121) (q 1,21) … nepřijato   

14 Reprezentace konečných automatů A) Přechodovou tabulkou: M=({q 0, q 1, q 2, q 3 },{0,1}, ,q 0, {q 0 })  01 q0q0 q2q2 q1q1 q1q1 q3q3 q0q0 q2q2 q0q0 q3q3 q3q3 q1q1 q2q2

15 Reprezentace konečných automatů B) Přechodovým diagramem: M=({q 0, q 1, q 2, q 3 },{0,1}, ,q 0, {q 0 }) … počáteční stav „START“ … koncový stav … přechody L(M) = ?

16 Příklady konečných automatů Navrhněte automat přijímající jazyk nad abecedou {0,1}, jehož slova obsahují lichý počet jedniček Navrhněte automat přijímající jazyk nad abecedou {0,1}, jehož slova obsahují podřetězec 000 Navrhněte automat přijímající jazyk L={a i b j c k |i,j,k>0} nad abecedou {a,b,c} Navrhněte automat přijímající jazyk L={a i b j c k |i,j,k  0} nad abecedou {a,b,c}

17 Příklady konečných automatů Navrhněte konečný automat k nápojovému automatu, který kontroluje správnost zaplacené částky (5,-Kč) za předpokladu, že lze platit korunami, dvoukorunami a pětikorunami a případné přeplatky se nevrací. Navrhněte konečný automat k nápojovému automatu, který kontroluje správnost zaplacené částky (8,-Kč) za předpokladu, že lze platit korunami,dvoukorunami, pětikorunami a desetikorunami, přičemž případné přeplatky se vrací.


Stáhnout ppt "Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S) P = {S  0S | 1S | 0 | 1 } je regulární gramatika generující jazyk L(G) = {0,1} + Příklad 2: G=({E, T,F},"

Podobné prezentace


Reklamy Google