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:

Slides:



Advertisements
Podobné prezentace
Grafové algoritmy.
Advertisements

Pro začátek něco lehčího
Lekce - Automaty a regularní výrazy
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Digitální učební materiál
Posuvné registry.
Rozdělení registrů.
CIT Sekvenční obvody Díl VI.
Programovací jazyk Prolog
Cvičení #3 *39TUR 2013/2014 Testování uživatelského rozhraní Adam J. Sporka.
Varianty Turingova stroje Výpočet funkcí pomocí TS
Registry obyčejný posuvný kruhový
Tato prezentace byla vytvořena
Paměťové registry.
Lexikální a syntaktická analýza Jakub Yaghob
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Informační systémy Modelování dynamiky objektového modelu. Koncepce modelu v programu MS Visio.
Proces řízení projektu
Autor:Jiří Gregor Předmět/vzděláva cí oblast: Digitální technika Tematická oblast:Digitální technika Téma:Multiplexery Ročník:2. Datum vytvoření:únor 2012.
Analýza informačního systému
Příklady použití zásobníkového automatu
Paměťové registry.
ÚVOD DO UDRŽITELNÉ SPOTŘEBY A VÝROBY Ekonomické hodnocení podniku.
Teplo (Učebnice strana 53 – 55)
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
 Diskrétní  Abstraktní  Sekvenční  Deterministický  Dynamický.
KEG Použití vzorů při vyhledávání na webu Václav Snášel.
Hodnocení rizik v procesu EIA/SEA Část 5 Samostatná práce účastníků semináře Zadání.
Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S)
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Digitální učební materiál
trojúhelník n-úhelník použití zdroje
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Rozdělení registrů.
Základy ekonomie Téma č. 4: Nabídková strana trhu výstupu
CHOVÁNÍ FIRMY V DOKONALÉ KONKURENCI
Dokonalá konkurence předpoklady DoKo
ČÍSLICOVÁ TECHNIKA synchronní čítače
Digitální výukový materiál zpracovaný v rámci projektu „EU peníze školám“ Projekt:CZ.1.07/1.5.00/ „SŠHL Frýdlant.moderní školy“ Škola:Střední škola.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Vztah bezkontextových jazyků a ZA
Dokumentace informačního systému
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.
Seznamy, aritmetika. Aritmetika v Prologu Predikát is – soucet (A,B,C) :- C is A+B. – soucin (A,B,C) :- C is A*B.
Analýza infromačního systému. Matice afinity ISUD matice – Insert (vkládání dat) – Select (výběr dat) – Update (aktualizace dat) – Delete (vymazání dat)
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
State Transition Diagram a model řízení 5.Cvičení IS/IT.
JADEGen Nástroj pro generování chování z prostředí Agent Studio Implementace (ver0.1)
Turingův stroj.
Úvod do teorie konečných automatů
Automaty a gramatiky.
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
Konečné automaty a vyhledávání
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
Struktura přednášky Rozhodování jedince za rizika
Seznamy, aritmetika. Aritmetika v Prologu Predikát = – A=1 – A=1+1 Predikát is – soucet (A,B,C) :- C is A+B. – soucin (A,B,C) :- C is A*B.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
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.
FEL ČVUT, katedra ekonomiky, manažerství a humanitních věd © Oldřich Starý, 2012 Finanční management Analýza projektu.
Číslo projektuCZ.1.07/1.5.00/ Název školyGymnázium, Soběslav, Dr. Edvarda Beneše 449/II Kód materiáluVY_62_INOVACE_21_02 Název materiáluRozpočet.
Číslo projektuCZ.1.07/1.5.00/ Název školyGymnázium, Soběslav, Dr. Edvarda Beneše 449/II Kód materiáluVY_62_INOVACE_22_07 Název materiáluOsobní rozpočet.
Překladače 4. Lexikální analýza © Milan Keršlágerhttp:// Obsah: ● vstupní formáty,symboly.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Slovní úlohy – řešení soustavou – 1
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
PROLOG strategie vyhodnocení dotazu
Podprogramy.
Analýza informačního systému
Transkript prezentace:

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: delta(stav1, vstup, stav2) Pokud ze stavu stav1 vede přechod do stavu stav2 při vstupním symbolu vstup. Tímto způsobem nadefinujeme všechny přechody. 2.Definice koncových stavů koncovy(stav) 1. Popis struktury automatu

Implementace konečného automatu v Prologu Nadefinujeme, jak pracuje konečný automat. Tato část bude pro všechny automaty stejná. Základem bude predikát prijme(Stav, Seznam), který bude odpovídat YES/NO na otázku, zdali automat přijme vstupní řetězec, který je reprezentován seznamem Seznam. Stav je počáteční stav, ze kterého automat startuje. Použijeme rekurzivní definici. 2. Specifikace práce automatu

Implementace konečného automatu v Prologu prijme(Stav, []) :- koncovy(Stav). % Prázdný vstupní řetězec je přijat, pokud je automat v koncovem stavu prijme(Stav1, [X|Zbytek]) :- delta(Stav1,X, Stav2), prijme(Stav2,Zbytek). % Řetězec skládající se z prvního symbolu X a zbytku je přijat automatem nacházejícím se ve stavu Q1 právě tehdy, když 1. existuje přechod ze stavu Q1 při tomto vstupním symbolu, 2. je přijat i zbytek řetězce. 2. Specifikace práce automatu

Implementace konečného automatu v Prologu Prolog nám díky možnostem svého vyhodnocování poskytuje několik možností práce s automatem: 1. Dotaz, jestli automat přijme zadaný řetězec z počátečního stavu, např.: ?- prijme(poc_stav, [1,0,1,1,1]). Prolog odpoví YES/NO 2. Dotaz, z kterých stavů lze přijmout zadaný řetězec: ?- prijme(Stav, [1,0,1,1,1]). Prolog vypíše všechny takové stavy. 3. Dotaz, které řetězce lze ze zadaného stavu přijmout, tedy např. ?- prijme(poc_stav, Vstup). vypíše všechny řetězce, které automat přijímá. 3. Použití automatu

Implementace konečného automatu v Prologu Automat Mealyho typu (tj. s výstupem při přechodu) jednoduše zrealizujeme úpravou přechodové funkce: delta(stav1, vstup, stav2):- write(‘Vystup BLA BLA’). Moorův automat provádí výstup ve stavech, je tedy třeba definovat tuto výstupní funkci pro každý stav vystup(stav1) :- write(‘Vystup BLA BLA’). vystup(stav2) :- write(‘Vystup2 BLA BLA’).... a zajistit její zavolání při navštívení stavu úpravou chování automatu: Výstup umístíme na první místo do prvního pravidla, které se nalezne při požadavku na přijetí řetězce, čímž zajistíme, že se vždy provede výstup, jakmile se dostaneme do příslušného stavu, tedy prijme(Stav, []) :- vystup(Stav), koncovy(Stav). 3. Automaty s výstupem

Implementace konečného automatu v Prologu Jako příklad si uvedeme automat na kávu, který přijímá mince 1 Kč, 2 Kč, 5 Kč a káva stojí 5 Kč. Výstupem automatu je množství vrácených peněz. Automat si nadefinujeme tabulkou (pro lepší pochopení funkce doporučujeme si automat překreslit graficky). Počáteční stav je označen šipkou a koncový stav je tučný. Příklad: automat na kávu – zadání

Implementace konečného automatu v Prologu Příklad: automat na kávu – tabulka přechodů StavVstup (Kč)Nový stavVýstup Q01Q1 Q0Q02Q2 Q05Q5Dávám kávu, vracím 0 Kč. Q11Q2 Q12Q3 Q15Q5Dávám kávu, vracím 1 Kč. Q21Q3 Q22Q4 Q25Q5Dávám kávu, vracím 2 Kč. Q31Q4 Q32Q5Dávám kávu, vracím 0 Kč. Q35Q5Dávám kávu, vracím 3 Kč.

Implementace konečného automatu v Prologu Příklad: automat na kávu– tabulka přechodů StavVstup (Kč)Nový stavVýstup Q41Q5Dávám kávu, vracím 0 Kč. Q42Q5Dávám kávu, vracím 1 Kč. Q45Q5Dávám kávu, vracím 4 Kč.

Implementace konečného automatu v Prologu delta(q0,1,q1). delta(q0,2,q2). delta(q0,5,q5) :- write('Davam kavu, vracim 0 Kc.'). delta(q1,1,q2). delta(q1,2,q3). delta(q1,5,q5) :- write('Davam kavu, vracim 1 Kc.'). delta(q2,1,q3). delta(q2,2,q4). delta(q2,5,q5) :- write('Davam kavu, vracim 2 Kc.'). delta(q3,1,q4). delta(q3,2,q5) :- write('Davam kavu, vracim 0 Kc.'). delta(q3,5,q5) :- write('Davam kavu, vracim 3 Kc.'). delta(q4,1,q5) :- write('Davam kavu, vracim 0 Kc.'). delta(q4,2,q5) :- write('Davam kavu, vracim 1 Kc.'). delta(q4,5,q5) :- write('Davam kavu, vracim 4 Kc.'). koncovy(q5). prijme(Stav, []) :- koncovy(Stav). prijme(Stav1, [X|Zbytek]) :- delta(Stav1,X, Stav2), prijme(Stav2,Zbytek). Příklad: automat na kávu – program v Prologu

Implementace konečného automatu v Prologu U konkrétních automatů je možné program rozšířit o další vhodnou funkcionalitu, např. u automatu na kávu bychom mohli ošetřovat situace, kdy je vhozena nedovolená mince, upozornit, že mince nestačily na vydání kávy a vypsat finanční rozdíl, atd... Příklad: automat na kávu – další možnosti