Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S)

Slides:



Advertisements
Podobné prezentace
Interpretovaná Matematika
Advertisements

GRAMATIKY Bori · Brkos 2011.
Rozhodnutelnost.
Lekce - Automaty a regularní výrazy
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK Odpřednášeno
Dynamické systémy.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Teorie vyčíslitelnosti
VISUAL BASIC Práce se soubory.
CIT Sekvenční obvody Díl VI.
Algebra.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Ústav technologie, mechanizace a řízení staveb
Varianty Turingova stroje Výpočet funkcí pomocí TS
Implementace konečného automatu v Prologu Tato část popisuje strukturu konkrétního automatu a bude se lišit pro každý automat. 1.Definice přechodové funkce:
Lexikální a syntaktická analýza Jakub Yaghob
Lineární algebra.
Úvod do Teorie množin.
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Základní číselné množiny
Markovské řetězce Definice Markovského řetězce
Optimalizační úlohy i pro nadané žáky základních škol
Bistabilní klopný obvod
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Příklady použití zásobníkového automatu
Algoritmus po krocích rozepsaný návod k nějaké činnosti
Church-Turingova teze Univerzální Turingův stroj Diagonalizace
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
Formální jazyky a gramatiky
Abeceda a formální jazyk
Sémantická analýza Jakub Yaghob
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Číselným oborem rozumíme číselnou množinu, na které jsou definovány bez omezení početní operace sčítání a násobení, tj. číselný obor je vzhledem k těmto.
1IT D OTAZOVACÍ JAZYKY V RELAČNÍCH DATABÁZÍCH Ing. Jiří Šilhán.
Predikátová logika.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Pre-algebra Antonín Jančařík.
Algebra II..
Výroková logika.
AUTOMATY Bori · Brkos Formální jazyk {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb} nad abecedou {a, b}
Úvod do předmětu Opakování
Vztah bezkontextových jazyků a ZA
Regulární výrazy Regulární výrazy představují další možnost popisu regulárních jazyků (právě od nich dostaly své jméno). Definice: Množina všech regulárních.
Markovovské řetězce. Andrej Andrejevič Markov
Konečné automaty Vít Fábera.
Formální modely výpočtu Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
Turingův stroj.
Automaty a gramatiky.
Číselné posloupnosti.
2. Vybrané základní pojmy matematické statistiky
Konečné automaty a vyhledávání
Formální definice Konečná množina vnitřních stavů Q Konečná vstupní abeceda A Počáteční stav q 0 Množina přijímacích stavů K.
Systémy. Definice systému Systém je množina navzájem souvisejících prvků a vztahů mezi nimi.
Miroslav Beneš Dušan Kolář
© Institut biostatistiky a analýz INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ ANALÝZA A KLASIFIKACE DAT prof. Ing. Jiří Holčík, CSc.
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
Překladače 4. Lexikální analýza © Milan Keršlágerhttp:// Obsah: ● vstupní formáty,symboly.
MNOŽINY RNDr. Jiří Kocourek. Množina: skupina (souhrn, soubor) nějakých objektů.
Funkce Funkce je zobrazení z jedné číselné množiny do druhé, nejčastěji Buď A a B množiny, f zobrazení. Potom definiční obor a obor hodnot nazveme množiny:
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Definiční obor a obor hodnot
Výukový materiál zpracován v rámci projektu
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
1 Lineární (vektorová) algebra
Zásobníkový automat Konečný automat i nedeterministický konečný automat umí řešit tytéž úlohy, akorát s různou efektivitou. Nazývají se regulární úlohy.
MNOŽINY RNDr. Jiří Kocourek.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Predikátová logika.
Vyhodnocování aritmetického výrazu (1)
Transkript prezentace:

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

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) 0A 00A1 A e } je vzhledem k poslednímu pravidlu gramatika bez omezení, přičemž L(G) = {0 n1 n| n 1}

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

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}

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

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)

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

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

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řechodu pro q1,q2Q, wT*, aT následovně: (q1,aw) (q2,w), jestliže (q1,a)=q2  

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)  

Další definice DEF: Nechť M=(Q,T,,q0,F) je konečný automat. Potom stav qQ je 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)  

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ů. 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}  

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        

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

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) = ?

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}

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í.