1 / 17

Příklady jazyků

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 }

norris
Download Presentation

Příklady jazyků

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 n1 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 n1 n| n 1}

  3. Příklady jazyků • Příklad 5: G1=({S}, {a,+}, P, S) P = {S S+S| a } G1 je bezkontextovágramatika;L(G1) = {a, a+a, a+a+a, …} G2=({S, A}, {a,+}, P, S) P = {S a | aA A +S } G2 je regulárnígramatika; L(G2) = {a, a+a, a+a+a, …} je regulární jazyk L(G2) =L(G1) 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={aibjck|i,j,k>0}nad abecedou {a,b,c}

  5. Příklady gramatik • Navrhněte gramatiku generující jazyk L={aibi|i >0} nad abecedou {a,b} • Navrhněte gramatiku generující jazyk L={aibici|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,,q0,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 q0 je počáteční stav automatu (q0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í}, q0={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 q2 právě tehdy, když (q1,c)=q2 a b c d e f g h a b c d e f g h 1 krok q1 q2

  9. Užívané konvence a pojmy • DEF: Nechť M=(Q,T,,q0,F) je konečný automat. Potom dvojici (q,w) QxT*nazýváme konfigurací konečného automatu M. • Konfiguraci (q0,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,,q0,F) konečný automat. Potom nad množinou všech konfigurací definujeme relaci přechodupro q1,q2Q, wT*, aT následovně: (q1,aw) (q2,w), jestliže (q1,a)=q2  

  10. Konečné automaty - příklad • Příklad: automat na kontrolu otevírání dveří Q={otevřeno, zavřeno}, T={smí, nesmí}, q0={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,,q0,F) je konečný automat. Potom stav qQje dosažitelný, jestliže existuje přechod (q0,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,,q0,F) je konečný automat. Potom automat M přijímá (akceptuje) slovo wT*, jestliže platí (q0,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,,q0,F) je konečný automat. Jazyk L(M) specifikovaný konečným automatem M je množina řetězců L(M)={w| (q0,w) * (q,e), wT*, qF}  

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

  14. Reprezentace konečných automatů A) Přechodovou tabulkou: M=({q0,q1,q2,q3},{0,1},,q0,{q0})

  15. Reprezentace konečných automatů B) Přechodovým diagramem: M=({q0,q1,q2,q3},{0,1},,q0,{q0}) … 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={aibjck|i,j,k>0}nad abecedou {a,b,c} • Navrhněte automat přijímající jazyk L={aibjck|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í.

More Related