Konečné automaty V rámci předmětu Řízení v komplexních systémech

Slides:



Advertisements
Podobné prezentace
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Advertisements

Programování v C jazyku - SEMINÁŘ
1 – Informatika Nauka (tj. věda) o informacích, tj. o zápisu (kódování (angl.)), přenosu (transfer (angl.)), zpracování (procesování (angl.)) informací.
Pascal - příklady.
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Sekvenční logický obvod-úvod
Vytváření, použití dávkových souborů
CIT Sekvenční obvody Díl VI.
ALGO – Algoritmizace 1. cvičení
ENVIRONMENTÁLNÍ INFORMATIKA A REPORTING
Otázky k absolutoriu HW 1 - 5
Klopný obvod JK.
Klopné obvody RS JK D asynchronní K.O. základní klopné obvody
Tato prezentace byla vytvořena
Programování PA - 2.
Zpracování programu programovatelným automatem. Zpracování programu na PA se vykonává v periodicky se opakujícím uzavřeném cyklu, tzv. scanu. Nejprve.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace
UČÍME V PROSTORU Název předmětu: Název a ID tématu: Zpracoval(a): Stavba a programování mikropočítačů Programovatelné automaty (EL 55) (algoritmizace)
Název školyIntegrovaná střední škola technická, Vysoké Mýto, Mládežnická 380 Číslo a název projektuCZ.1.07/1.5.00/ Inovace vzdělávacích metod EU.
Název projektu: Moderní výuka s využitím ICT
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Seminář – Základy programování
Informatika I 2. přednáška
LOGICKÉ ŘÍZENÍ GEORGE BOOLE
 Diskrétní  Abstraktní  Sekvenční  Deterministický  Dynamický.
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
Modelování a simulace MAS_02
Predikátová logika.
JavaScript Podmínky, cykly a pole.
Cvičení.
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,
Sekvenční logické obvody
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.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Název školyIntegrovaná střední škola technická, Vysoké Mýto, Mládežnická 380 Číslo a název projektuCZ.1.07/1.5.00/ Inovace vzdělávacích metod EU.
Konečné automaty Vít Fábera.
Autor:Ing. Peter Podoba Předmět/vzdělávací oblast:Elektrotechnická zařízení Tematická oblast:Údržba elektrických zařízení Téma:PLC LOGO! Siemens - funkce.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
SIGNÁLY A SOUSTAVY V MATEMATICKÉ BIOLOGII
Turingův stroj.
Úvod do teorie konečných automatů
Automaty a gramatiky.
Autor:Jiří Gregor Předmět/vzdělávací oblast: Digitální technika Tematická oblast:Digitální technika Téma:Statické paměti RWM – RAM 2. část Ročník:3. Datum.
Konečné automaty a vyhledávání
Nesinusové oscilátory s klopnými obvody
David Rozlílek.  Hodnoty výstupních proměnných y závisejí nejen na okamžitých hodnotách vstupních proměnných x, ale i na jejich …………hodnotách To znamená.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Programování v MATLABu © Leonard Walletzký, ESF MU, 2000.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_ENI-2.MA-18_Rozdělení logických obvodů Název školyStřední odborná škola a Střední odborné.
VY_32_INOVACE_CIT_01. Logická proměnná – nabývá dvou hodnot log 0 a log 1 (L, H) Logická funkce – vzájemná závislost vstupních a výstupních proměnných.
Algoritmizace a programování Algoritmy 2 – Vývojové diagramy (sekvence)
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Znázornění dopravní sítě grafem a kostra grafu Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
Číslicová technika.
Číslicová technika.
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
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.
Číslicová technika.
Číslicová technika.
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Informatika pro ekonomy přednáška 4
Číslicová technika.
Číselné soustavy a kódy
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Informatika pro ekonomy přednáška 4
Konečné automaty V rámci předmětu Automatizace a měření
Transkript prezentace:

Konečné automaty V rámci předmětu Řízení v komplexních systémech Vít Fábera

Konečný automat automaton, finite state machine matematický model chování prvku systému nejčastější použití: konstrukce (sekvenčních) digitálních obvodů první krok návrhu je sestavení automatového modelu funkce obvodu programování konečný automat je modelem některých softwarových částí, např. lexikálního analyzátoru překladače, lze jím popsat chování (téměř) libovolné sw. části – viz UML – stavový diagram

konečný automat je modelem chování prvku s diskrétními vstupy a výstupy a s pamětí tj. výstup prvku závisí jednak na aktuální hodnotě vstupních proměnných a také na hodnotě vstupních proměnných v předchozích časových okamžicích návod na vytvoření automatu neexistuje, automatový model vytváří návrhář (konstruktér obvodu, programátor,…)

Definice Konečný automat KA je šestice kde X ... vstupní abeceda (konečná množina vstupních písmen) Y ... výstupní abeceda (konečná množina výstupních písmen) Q ... konečná množina vnitřních stavů  ... stavově přechodová funkce, X  Q  Q  ... výstupní funkce, X  Q  Y Q0  Q ... počáteční vnitřní stav

ve vnitřním stavu si automat „pamatuje“ historii vstupních písmen Poznámky: někdy se automat definuje pouze jako pětice bez počátečního stavu, což není příliš vhodné pro praxi po uvedení zařízení do chodu (po zapnutí) většinou požadujeme, aby se chovalo vždy stejně, neboli byl definován počáteční stav ve vnitřním stavu si automat „pamatuje“ historii vstupních písmen výstupní funkce určuje výstupní písmeno automatu podle aktuálního vstupu a vnitřního stavu

podle tvaru výstupní funkce rozlišujeme stavově přechodová funkce určuje nový vnitřní stav podle aktuálního vstupního písmene a aktuálního vnitřního stavu, tj. automat si ukládá v nové hodnotě vnitřního stavu novou informaci o historii vstupů podle tvaru výstupní funkce rozlišujeme Mealyho automat  : X  Q  Y Mooreův automat  : Q  Y oba typy jsou navzájem převoditelné

Existují i další varianty automatů Medvěděvův automat nemá množinu výstupních písmen ani definovánu výstupní funkci. Po zpracování vstupní posloupnosti automatem nás zajímá, v jakém vnitřním stavu se automat nachází (tzv. transducer) tohoto modelu se využívá např. jako lexikálního analyzátoru v překladačích programovacích jazyků Autonomní automat nemá množinu vstupních písmen a přechody jsou definovány pouze „ze stavu do stavu“: Qt+1 = (Qt) takový automat může být modelem při návrhu autonomních čítačů

Existují i další varianty automatů Stochastický automat má definovány jednotlivé přechody pomocí pravděpodobnosti Fuzzy automat stavově přechodová a výstupní funkce jsou definovány pomocí operací fuzzy logiky (průnik) stavy, vstupy a výstupy jsou definovány jako fuzzy množiny (pomocí měr příslušnosti)

Zobrazování automatů grafem přechodů a výstupů orientovaný graf uzly = stavy, hrany = přechody mezi stavy Mooreův automat ohodnocení hran: vstupy - podmínky přechodů ohodnocení uzlů: výstupy odpovídající stavům Mealyho automat ohodnocení hran: vstupy - podmínky přechodů a výstupy tabulkou přechodů a výstupů

Příklad Mooreova automatu jde o zcela hypotetický automat, který není modelem konkrétního prvku (ale mohl by být) množiny X,Y,Q mají pouze symbolické prvky

Příklad Mooreova automatu X = {X1, X2}, Y = {Y0, Y1, Y2}, Q = {Q0, Q1, Q2}

Příklad Mealyho automat

Sekvenční zobrazení jiným modelem chování automatu je sekvenční zobrazení (zobrazuje vstupní posloupnost na výstupní posloupnost): vstupní posloupnost výstupní posloupnost

Podmínky sekvenčního zobrazení Sekvenční zobrazení musí: zachovat délku posloupnosti výstupní posloupnost má stejnou délku jako vstupní posloupnost zachovat počáteční podposloupnost mají-li dvě vstupní posloupnosti ξ1 a ξ2 shodnou počáteční (!) podposloupnost délky k > 0, musí být počáteční úseky alespoň délky k výstupních posloupností η1 a η2 stejné

A nyní konečně smysluplné a praktické příklady tři z oblasti hardware tři z oblasti software jeden si necháme na příští přednášku

Příklad 1 Navrhněte obvod, který zkracuje vstupní impuls libovolné délky na impuls v délce trvání jednoho hodinového taktu podle obrázku. jinak zapsáno: vstupní posloupnost: 0111101000001110 výstupní posloupnost: 0010000100000100

omezíme se pouze na tvorbu modelu obvodu - konečného automatu; budeme navrhovat Mooreův automat (návrhářská intuice) 1. Množiny vstupních a výstupních písmen jsou zřejmé: X = {0,1} Y = {0,1} 2. Množina vnitřních stavů a funkce  a  „vyplynou“ při konstrukci automatového modelu

počáteční vnitřní stav: Q0 1 Q1/1 Q0/0 1 Q2/0 1 Q = {Q0, Q1, Q2} počáteční vnitřní stav: Q0

Automat vyjádřený ve formě tabulky přechodů a výstupů 1 Q2 Q0 Q1 Y

pro zájemce: sekvenční logický obvod konstruovaný podle tohoto modelu má následující podobu: vnitřní stavy Q0, Q1, Q2 jsou zobrazeny dvojkovými čísly 00,01,10 (dvěma bity q1q0) a jsou uloženy v paměťových členech 74LS74 (klopných obvodech)

Ekvivalentní Mealyho automat 1/1 1/0 0/0 Q1 Q0 0/0 vstupní posloupnost: 0111101000001110 výstupní posloupnost: 0100001000001000 Výstupní posloupnost může mít při realizaci synchronním sekvenčním obvodem podle Mooreova automatu o jeden takt zpožděnou výstupní posloupnost oproti Mealyho modelu (jako v tomto případě).

Příklad 2 Navrhněte automatový model řídicí jednotky, která řídí čerpání vody do rezervoáru. Rezervoár má tři senzory h2, h1 a h0. Voda se vypouští kohoutem, k naplnění slouží dvě čerpadla. Ponořený senzor dává na výstupu hodnotu 1, chod čerpadla se také spíná výstupem s hodnotou 1. Pokud je hladina nad senzorem h2 nebo klesne mezi senzory h2 a h1, voda se nedoplňuje. Jakmile klesne hladina pod úroveň h1, aktivuje se jedno čerpadlo a čerpá se jím, dokud není rezervoár doplněn. V případě velkého odtoku, kdy jedno čerpadlo nestačí a hladina klesne až pod úroveň h0, spouští se druhé čerpadlo a čerpá se oběma čerpadly až do naplnění nádoby nad senzor h2. Obě čerpadla zaručí větší přítok vody, než je odtok při plném otevření kohoutu. Pro jednoduchost neuvažujte při návrhu poruchy snímačů.

množina vstupních písmen X = {111, 011, 001, 000} (jednotlivé bity vstupního písmene představují stavy senzorů v pořadí h2, h1 a h0) množina výstupních písmen Y = {00, 01, 11}

Mooreův automat řídicí jednotky Mealyho automat řídicí jednotky

Schéma obvodu (Mooreův automat)

Simulace

Synchronní vs. asynchronní sekvenční obvody okamžiky přechodů jsou určeny synchronizačním (hodinovým – clock) signálem asynchronní sekvenční obvody nemají zpětné vazby přerušené klopnými obvody, nemají hodinový signál reaguje "okamžitě" po změně vstupu obtížný návrh, nutnost speciálního kódování vnitřních stavů, nebezpečí vzniku hazardů

Čerpání vody jako asynchronní obvod zde problémy nejsou díky jednoduchému obvodu a vhodnému zakódování vnitřních stavů a vhodné posloupnosti vstupních písmen

Co se může stát? příklad konečného automatu

Schéma

Poznámky hradla U1 a U2 zajistí RESET (stav Q0) díky různě dlouhým větvím se šíří změny signálů x, q0, q1 na vstup hradel U1 U2 (nový vnitřní stav) různě dlouhou dobu díky přímé i negované formě ve výrazu některé větve obsahují invertor navíc nejprve přiložíme na vstup x=1 (automat zůstává ve stavu Q0) a pak x=0 (automat by měl přejít přes stav Q1 do stavu Q2 obvod se rozkmitá místo toho, aby zůstal ve stavu Q2

Simulace Signály q0’ a q1’ jsou negace q0 a q1 (výstupy invertorů U10 a U11)

Čítače synchronní sekvenční obvody, které na výstupu generují nějakou posloupnost (dvojkových) čísel konstruují se jako autonomní – čítají hodinové pulsy s povolujícím signálem zastavuje/spouští čítání je možné i řídit i směr čítání

Autonomní čítač mod 8 graf přechodů schéma

Autonomní čítač mod 8 kódování vnitřních stavů a zakódovaná tabulka přechodů

Příklad 3 Navrhněte automatový model obvodu, který řídí zapínání a vypínání zdroje ATX. Vstupem obvodu je signál z tlačítka (stisknuté tlačítko = log. 1), výstupem signál ovládající spínací tranzistor (zapnutý zdroj = log. 1). Po stisku tlačítka dojde k zapnutí zdroje (výstup obvodu log. 1), při uvolnění tlačítka je zdroj stále zapnut. Další stisk tlačítka signalizuje vypnutí zdroje: je-li tlačítko drženo alespoň 4 sekundy, zdroj je vypnut, pokud je tlačítko uvolněno dříve, zdroj zůstává zapnut. Poznámka: Čas 4 sec. je měřen čítačem. Čítač má 1 vstupní signál povol (log. 1 = povolení čítání, log. 0 = zastavení čítače a vynulování). Čítač má 1 výstupní signál vrchol (log. 1, jestliže uplynuly 4 sekundy).

Řídicí obvod Čítač Konečný automat Vcc Zdroj ATX tlačítko x o Řídicí obvod Čítač Vcc povol vrchol Konečný automat x o

Automatový popis úmluva v označení vstupů a výstupů v grafu přechodů 00/00 x vrchol o povol Poznámka: 1x/00 - na vstupním signálu vrchol přechod automatu nezávisí

Mooreův automat 0x 1x Q1/10 1x Q0/00 0x Q2/10 0x 0x 01 00 1x Q4/00 11

Mealyho automat 0x/00 1x/10 Q1 1x/10 Q0 0x/10 0x/00 01/00 00/10 Q3 Q2 10/11 1x/00 11/00

Dokončíme příště, až budeme probírat gramatiky a jazyky. Příklad 4 Lexikální symboly v programovacích jazycích jsou konstanty, proměnné, operátory atd. V programovacím jazyce C je možné celočíselné konstanty zapsat v desítkové, osmičkové nebo šestnáctkové soustavě. Číslo zapsané v desítkové soustavě začíná cifrou 1 až 9, číslo zapsané v osmičkové soustavě začíná cifrou 0, číslo zapsané v šestnáctkové soustavě začíná 0x nebo 0X. Příklad: desítkově: 12, 25, 95 osmičkově: 05, 0123 šestnáctkově: 0x2F, 0X11 Navrhněte automatový model části lexikálního analyzátoru, který rozpozná, zda je číslo na vstupu zapsáno v desítkové, osmičkové nebo šestnáctkové soustavě. Dokončíme příště, až budeme probírat gramatiky a jazyky.

navržený automat bude bez výstupní funkce; po zpracování vstupního čísla nás zajímá, ve kterém stavu automat končí; nejsou uvažovány chyby (doplňte sami příslušné stavy a přechody)

Příklad 5 Máme napsat program vypocet, který se spouští z příkazové řádky a má jeden povinný číselný parametr a dva nepovinné přepínače –p a –l. Přepínače mohou být zapsány různém pořadí, nemusí být přítomny vůbec. Za přepínačem –p následují povinně dvě desetinná čísla, první se uloží do proměnné a, druhé do proměnné b; za přepínačem –l následuje text – jméno souboru, který se uloží do proměnné soubor. Zároveň se do booleovské proměnné pp, resp. pl, zapíše, zda byl přítomen přepínač –p, resp. –l. Např: vypocet 20 –p 1.5 2 vypocet 5 –l text.txt vypocet 1 –l tisk.txt –p 10.5 4.5

Navrhněte automatový model té části programu, který bude zpracovávat nepovinné parametry příkazové řádky. Řešení: automat si bude ve vnitřním stavu uchovávat, zda očekává na vstupu přepínač, 1. nebo 2. číslo, či jméno souboru vstup budeme v modelu reprezentovat obecným popisem, např. číslo, text –p atd. výstup budeme reprezentovat v grafu přiřazovacími příkazy (popis akcí, které se mají provádět) budeme navrhovat Mealyho automat počáteční stav je Přepínač

„Za –l musí být jméno souboru“ Konec nic / - číslo / b=číslo Přepínač text –p /pp=true Číslo1 číslo / a=číslo Číslo2 text nebo nic /vypiš chybu „Za –p musí být číslo“ text –l / pl=true text / soubor=text jiný text /vypiš chybu „Očekávám přepínač –p nebo –l“ Soubor text nebo nic /vypiš chybu „Za –p musí být 2 čísla“ Chyba nic /vypiš chybu „Za –l musí být jméno souboru“

softwarově se konečný automat implementuje takto: vnitřní stav ukládáme do proměnné, zpravidla výčtového datového typu činnost automatu představuje cyklus s příkazem větvení v jeho těle nejprve se přepínáme podle stavů a pak podle vnitřních proměnných

stav = Prepinac; while(není konec) { case stav of Prepinac: if vstup=“-p” then begin stav=Cislo1; pp = true; end; if vstup=“-l” then begin stav=Soubor; pl = true; atd. Cislo1: if je_cislo(vstup)=true then begin Stav=Cislo2; a = cislo(vstup);

Ukázka v jazyce C i=2; // index prveho nepovinneho parametru stav = PREPINAC; // pocatecni stav while(i<argc && stav != CHYBA) { switch(stav) case PREPINAC: if(strcmp(argv[i],"-p")==0) {stav=CISLO1; pp=1;} else if(strcmp(argv[i],"-l")==0) { stav=SOUBOR; pl = 1; } else { printf("Po parametru pocet iteraci ocekavam " "prepinac -p nebo -l.\n"); stav = CHYBA; continue; } break; case CISLO1: if(sscanf(argv[i],"%f",&a)<1) printf("Po parametru –p musi byt cislo\n"); stav = CHYBA; continue; stav = CISLO2; break; case CISLO2: if(sscanf(argv[i],"%f",&b)<1) printf("Po param. –p musi byt dve cisla\n"); stav = CHYBA; continue; stav = PREPINAC; break; case SOUBOR: jmeno_souboru = argv[i]; stav = PREPINAC; break; i++; // posuv na dalsi parametr if (stav != PREPINAC || stav == CHYBA) printf("Neuplne zadane parametry u prepinacu.\n");

Příklad 6 (neřešený) Vytvořte konečně-automatový model programu, který zjistí, zda je celé číslo zadané jako řetězec dělitelné třemi. Nepoužívejte operaci zbytek po dělení 3, analyzujte číslo po jednotlivých cifrách (jako znaky) a využijte vlastnost, že ciferný součet je také dělitelný třemi. Ciferný součet však nepočítejte.

Příklad 7 (neřešený) Vytvořte konečně-automatový model programu pro jednočipový mikropočítač, který řídí nabíjení baterií. Podrobné zadání bude specifikováno na cvičení.

Spolupracující automaty producent-konzument se sdílenou pamětí o velikosti 1 položky producent ukládá data do sdílené paměti je-li prázdná konzument čte data ze sdílené paměti, je-li plná

Spolupracující automaty Producent Konzument Sdílená paměť stavy paměti stavy paměti Q0 Q0 Q0 / prázdná prázdná/- plná/- Q1 Q1 Q1 / plná prázdná/piš x piš x čti x operace operace plná/čti x Q2 Q2

Stochastický konečný automat stochastický konečný automat je šestice KAS = (X, Y, Q, M, N, q0), kde X ... konečná množina vstupních písmen Y ... konečná množina výstupních písmen Q ... konečná množina vnitřních stavů M ... matice pravděpodobností přechodů N ... matice pravděpodobností výstupů q0… počáteční stav

Matice pravděpodobností přechodů prvek pij(a) matice M určuje pravděpo-dobnost přechodu ze stavu i do stavu j při vstupním písmenu a Příklad: Q = {A, B, C}, X = {0, 1}, Y = {a, b}, 0 = [1,0,0]

Matice pravděpodobností přechodů a výstupů

Matice pro prvky matic musí platit tj. součet prvků v řádku musí být roven 1

Využití simulace stochastických systémů modelování Markovovských procesů syntaktická analýza stochastických jazyků rozpoznávání

Markovovský proces Dnes Zítra déšť 40% déšť 60% bez deště bez deště

Odpovídající stochastický automat 0,6 0,4 bez deště 0,8 déšť 0,2

Fuzzy automaty fuzzy automat je fuzzy relační systém FA = <X, Y, Q, T, R, q0>, kde X ... konečná množina vstupních písmen Y ... konečná množina výstupních písmen Q ... konečná množina vnitřních stavů T ... přechodová fuzzy relace R ... výstupní fuzzy relace q0… fuzzy podmnožina Q (fuzzy počáteční stav)

Fuzzy automat nechť Xt, Yt, Spt, Snt jsou fuzzy množiny charakterizující vstupní písmeno, výstupní písmeno, současný a následný stav v čase t zřejmě Sp0 = q0 a Spt+1 = Snt T je fuzzy relace mezi [E] [SP] [SN] R je fuzzy relace mezi [SP] [Y], resp. [E] [SP] [Y]

Přechody a výstupy automatu výstupní fuzzy množina je dána max – min kompozicí ternární fuzzy relaci T konvertujeme na binární relaci

Přechody fuzzy množina následných stavů je pak dána max-min kompozicí Poznámka: existují aplikace, kdy automat je deterministický (relace přechodů jsou singletony) a vstupem je fuzzy množina

Aplikace technologické procesy lékařství řízení (např. motoru) sledování stavu pacienta

Příklad mějme množiny vstupních písmen, výstupních písmen a vnitřních stavů X = {e1, e2} Y = {a1, a2, a3} Q = {s1, s2, s3, s4}

Matice relací

Příklad přechodu vstupní písmeno: X1 = [1, 0.4] počáteční stav Qp1 = [1, 0.8, 0.6, 0,4]

Příklad přechodu

Následný stav a výstup

Literatura Jáneš V., Douša J.: Logické systémy, skripta FEL Fábera V.: Hardware počítačů, skripta FD McNeill F. M.: The Intelligence Crafter: a Fuzzy State Machine Builder Program Ydo Wexler Y., Geiger D.: Markov Chains Tutorial #5