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

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

Lekce - Automaty a regularní výrazy Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti.

Podobné prezentace


Prezentace na téma: "Lekce - Automaty a regularní výrazy Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti."— Transkript prezentace:

1 Lekce - Automaty a regularní výrazy Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

2 Automat Hrací skřínka, Leopold Aucac Aine, Paris

3 Řídicí automat typu Moore M = Z Následující stav S* SmSm SzSz SmSm * SzSz * SmSm SzSz δ PaměťPaměť ω XtXt Vzorkování, měření vstupů Zápis výstupů X vnitřní proměnné automatu X ZtZt

4 Definice konečného automatu FSM – Finite State Machine  δ - přechodová funkce - zobrazení δ: X x S -> S  ω - výstupní funkce - zobrazení ω: ω: S -> Z (Moore) ω: X x S -> Z (Mealy)  X - konečná množina všech vstupních vektorů  Z - konečná množina všech výstupních vektorů  S - konečná množina všech vnitřních stavů Uspořádaná šestice M =  s 0 - počáteční stav S 0  S

5 Příklad: Synchronní kódový zámek  Odemkne, pokud vstup začíná: 0011, jinak ne.  Generuje výstup A (Accepted=přijato) ve stavu Q 5 Takový automat se někdy nazývá konečný akceptor, nebo rozpoznávací či klasifikační automat (Finite State Acceptor or Acceptor Finite State Machine) 0 Q1Q1 1 Q1Q1 Q2Q2 Q3Q3 Q4Q4 A 100 QEQE ,1 Accepted Start

6 Příklad2: Synchronní kódový zámek  Chceme nyní odemknout, pokud vstupní posloupnost začíná 00 a končí ABCDE

7 Příklad: Synchronní kódový zámek NFA – Nondeterministic Finite Automat/Acceptor DFA – Deterministic Finite Automat/Acceptor ABCDE 0, Nedeterministický přechod ABCDE

8 NFA- animace 1/2 NFA – Nondeterministic Finite Automat/Acceptor 0, Nedeterministický přechod ABCDE backtracking stack

9 NFA – animace 2/2 NFA – Nondeterministic Finite Automat/Acceptor 0, Nedeterministický přechod ABCDE stack Accepted

10 Nedeterministické chování není náhodné  Deterministické: f(1) → 1vždy  Náhodné: f(1) → 1 v 50% případů, f(1) → 2 v ostatních situacích  Nedeterministické chování f(1) → 1 nebo f(1) → 2, ale nepovíme, kdy tomu tak bude.  Nedeterministické chování může vypadat deterministicky, náhodně, nebo i hůře

11 Definice konečného akceptoru  δ - přechodová funkce  pro DFA - zobrazení δ: X x S -> S  pro NFA – zobrazení δ: {X + ε} x S -> množina S, kde ε je prázdný vstup  X - konečná množina všech vstupních vektorů  S - konečná množina všech vnitřních stavů Uspořádaná pětice M =  s 0 - počáteční stav s 0  S  F – množina (i prázdná) koncových stavů F  S

12 DFA versus NFA  NFA se dají mnohem rychleji sestavit, ale obtížněji se prochází jejich stavovým diagramem – musíme si pamatovat stavy a případně se vracet.  NFA s více koncovými stavy lze vždy převést na NFA s jedním koncovým stavem.  NFA lze vždy převést na DFA, ale odpovídající DFA reprezentace může mít exponenciální nárůst počtu stavů nebo přechodů.

13 Jakákoliv posloupnost a b končící a b AB C a b a,ba,b AA,B a b b A,C a b a NFA DFA NFA a DFA

14 Jazyky The Tower of Babel, Pieter Brueghel, c. 1563, Kunsthistorisches Museum, Vienna

15 Automaty rozpoznávají jazyk  Abeceda (Alphabet) – konečná množina znaků  Slovo (String) – konečná posloupnost znaku – může být prázdná , (prázdné slovo se v některých textech označuje i jako  )  Jazyk (Language) – množina, případně i nekonečná, všech slov utvořených z abecedy – množina může být i prázdný { }, tj. prázdný jazyk.

16 Příklady jazyků Předpokládejme  = {a, b, c}, pak lze z  utvořit například jazyky:  {aa,ab,ac,bb,bc,cc}  {ab,abc,abcc,abccc,...}  {  }  { }  {a, b, c, 

17 Regulární jazyky  Regulární jazyky jsou jazyky rozpoznávané pomocí NFA nebo DFA.  Akceptory, které rozpoznávají regulární jazyky, se popisují regulárními výrazy.  Java, PHP, Python, C# a další, implementují regulární výrazy zpravidla pomocí NFA, která se dá rychleji sestavit.

18 Příklady jazyků a jejich DFA

19 Sjednocení (Union) jazyků

20 Příklad sjednocení

21 Spojení (Concatenation)

22 Příklad spojení

23 Operace * (Kleene star)

24 Příklad *

25 Příklad na doplněk jazyka F neg = S-F, slovy: invertujeme koncové stavy

26 Regulární výrazy

27 Příklad: Automat → regulární výraz 1/5 a db c d 0 da d b b c d[abc]d 0 da db [bc] [abc] - jeden znak ze seznamu znaků. V uvedeném příkladu jde o znak a nebo b nebo c.

28 Příklad: Automat → regulární výraz 2/ d[abc]d 0 da db [bc] 345 d[abc]dd 0 a b[bc]d

29 Příklad: Automat → regulární výraz 3/5 345 d[abc]dd 0 a b[bc]d b(b|c)da 345 d[abc]dd 0 a b[bc]da

30 Příklad: Automat → regulární výraz 4/5 345 d[abc]dd 0 a b[bc]da 345 d[abc]d 0 a(b[bc]da)*d

31 Příklad: Automat → regulární výraz 5/5 5 0 d[abc]da(b[bc]da)*d 345 d[abc]d 0 a(b[bc]da)*d * - 0 nebo více znaků ze seznamu. V uvedeném příkladu jde o skupinu (b[bc]da)

32 Neregulární jazyky  Pro neregulární jazyky nelze navrhnout NFA nebo DFA. Nelze je ani popsat regulárním výrazem.  Příklad: jazyk W = {a n b n | n>0}

33 Regulární výrazy: Metacharacters  Začátečníkům pomůže knihovna regulárních výrazů  Některé "character-class" metacharacters  \d – libovolné číslo\D – nečíselný znak  \w – libovolný znak slova\W – neslovní znak  \s – oddělovač "whitespace"\S – není "whitespace" \d\d\d\s nalezne: " "  Příklad \d\d\d\s nalezne: " "

34 Některé uživatelské znaky. Jeden znak s výjimkou konce řádku "newline". Např. a.a určuje aea, aia, aca, and a a [XY] Jeden znak ze seznamu znaků. V uvedeném příkladu jde o znak X nebo Y [A-Z] Jeden znak z rozsahu od A do Z (v příkladu pouze velká písmena). [A-Za-z] Jeden znak, malá nebo velká písmena A až Z [^AB] Jeden znak různý od A nebo B

35 Modifikátory výrazu \ Následující znak je literal, ne "metacharacter" ^ Následující výraz se musí se objevit na začátku textu $ Následující výraz se musí objevit na konci textu "^Kolo" nalezne "Kolohnát", ale nikoliv "Moje Kolo" "stroj$" matches "Nástroj", ale ne "stroje"

36 Kvantifikátory * Určuje 0 or více výskytů předchozího + Určuje 1 or více výskytů předchozího ? Určuje 0 or 1 výskytů předchozího {n} Určuje přesně n výskytů předchozího {n,} Určuje nejméně n výskytů {n,m} Určuje nejméně n, ale maximálně m výskytů () Označení skupiny pro kvantifikátor, chceme-li, aby se vztahoval na více prvků

37 Jaká je správná odpověď?

38 Ukázka programu v |Java import java.util.regex.Matcher; import java.util.regex.Pattern; public class DateMatcher { public DateMatcher() { String aDate = "date: "; Pattern datePattern = Pattern.compile( "date: (\\d{2})-(\\d{2})-(\\d{4})"); Matcher dateMatcher = datePattern.matcher(aDate); if (dateMatcher.find()) { System.out.println("Month is: " + dateMatcher.group(1)); System.out.println("Day is: " + dateMatcher.group(2)); System.out.println("Year is: " + dateMatcher.group(3)); } } public static void main(String[] args) { new DateMatcher(); } }

39 Podmnožinu regulárních výrazů umí i MS-Word  Regulární výrazy se skrývají pod zástupnými znaky  Nabídku operátorů najdete pod Speciální


Stáhnout ppt "Lekce - Automaty a regularní výrazy Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti."

Podobné prezentace


Reklamy Google