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

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

Konečné automaty Vít Fábera. Konečný automat matematický model chování prvku systému nejčastější použití: –konstrukce digitálních obvodů první krok návrhu.

Podobné prezentace


Prezentace na téma: "Konečné automaty Vít Fábera. Konečný automat matematický model chování prvku systému nejčastější použití: –konstrukce digitálních obvodů první krok návrhu."— Transkript prezentace:

1 Konečné automaty Vít Fábera

2 Konečný automat matematický model chování prvku systému nejčastější použití: –konstrukce 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

3 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,…)

4 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 Q 0  Q... počáteční vnitřní stav

5 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“ onu 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

6 –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é

7 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í – 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“: Q t+1 =  (Q t ) –takový automat může být modelem při návrhu autonomních čítačů Stochastický automat –má definovány jednotlivé přechody pomocí pravděpodobnosti Fuzzy automat

8 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ů

9 Příklad Mooreův automat 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 X={X 1, X 2 }, Y={Y 0, Y 1, Y 2 }, Q={Q 0, Q 1, Q 2 }

10 Příklad Mealyho automat

11 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

12 Podmínky sekvenčního zobrazení Sekvenční zobrazení musí: 1.zachovat délku posloupnosti –výstupní posloupnost má stejnou délku jako vstupní posloupnost 2. 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é

13 A nyní konečně smysluplné a praktické příklady dva z oblasti hardware dva z oblasti software

14 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: výstupní posloupnost:

15 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

16 Q 0 /0 Q 1 /1 Q 2 / Q = { Q 0, Q 1, Q 2 } počáteční vnitřní stav: Q 0

17 1Q2Q2 Q0Q0 Q1Q1 0Q2Q2 Q0Q0 Q2Q2 0Q1Q1 Q0Q0 Q0Q0 Y10 Automat vyjádřený ve formě tabulky přechodů a výstupů

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

19 Příklad 2 Navrhněte automatový model řídicí jednotky, která řídí čerpání vody do rezervoáru. Rezervoár má tři senzory h 2, h 1 a h 0. 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 h 2 nebo klesne mezi senzory h 2 a h 1, voda se nedoplňuje. Jakmile klesne hladina pod úroveň h 1, 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ň h 0, spouští se druhé čerpadlo a čerpá se oběma čerpadly až do naplnění nádoby nad senzor h 2. 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čů.

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

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

22 Příklad 3 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ě.

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

24 Příklad 4 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 vypocet 5 –l text.txt vypocet 1 –l tisk.txt –p

25 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č

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

27 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

28 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; end; atd. Cislo1: if je_cislo(vstup)=true then begin Stav=Cislo2; a = cislo(vstup); end; atd.

29 Ukázka v jazyce C i=2; // index prveho nepovinneho parametru stav = PREPINAC; // pocatecni stav while(i


Stáhnout ppt "Konečné automaty Vít Fábera. Konečný automat matematický model chování prvku systému nejčastější použití: –konstrukce digitálních obvodů první krok návrhu."

Podobné prezentace


Reklamy Google