1 / 39

Lekce - Automaty a regularní výrazy

Lekce - Automaty a regularní výrazy. Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti. Automat. Hrací skřínka, Leopold Aucac Aine , Paris. X. X t. P a m ě ť. Vzorkování, měření vstupů. X. *. S z. Následující stav S*. S z. S z. Z. ω. Z t. *.

Download Presentation

Lekce - Automaty a regularní výrazy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. X Xt P a m ě ť Vzorkování,měření vstupů X * Sz Následující stav S* Sz Sz Z ω Zt * Sm Sm Sm Zápis výstupů δ vnitřní proměnné automatu Řídicí automat typu Moore M = < X, S=Sz∪Sm,Z,ω, δ,S0>

  4. Definice konečného automatuFSM – Finite State Machine • δ - přechodová funkce - zobrazení δ: X x S -> S • ω - výstupní funkce - zobrazení ω: ω: S -> Z (Moore)ω: X x S -> Z (Mealy) Uspořádaná šestice M = < X, S, Z,ω, δ,s0> • 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ů • s0 - počáteční stav S0 S

  5. Q1 Q1 Q2 Q3 Q4 QE 0 0 1 1 A 1 0 0 1 Accepted Start 0,1 Příklad: Synchronní kódový zámek • Odemkne, pokud vstup začíná: 0011, jinak ne. • Generuje výstup A (Accepted=přijato) ve stavu Q5 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)

  6. 0 1 0 0 1 A B C D E 0 Příklad2: Synchronní kódový zámek • Chceme nyní odemknout, pokud vstupní posloupnost začíná 00 a končí 11

  7. 0 1 Nedeterministický přechod 0 0 1 0,1 A B C D E 0 0 1 1 0 A B C D E Příklad: Synchronní kódový zámek NFA – Nondeterministic Finite Automat/Acceptor DFA – Deterministic Finite Automat/Acceptor

  8. Nedeterministický přechod 0,1 0 0 1 1 A B C D E stack stack NFA- animace 1/2 NFA – Nondeterministic Finite Automat/Acceptor 0 0 1 0 1 1 backtracking

  9. Nedeterministický přechod 0,1 0 0 1 1 A B C D E stack NFA – animace 2/2 NFA – Nondeterministic Finite Automat/Acceptor Accepted 0 0 1 0 1 1

  10. Nedeterministické chování není náhodné • Deterministické: f(1) → 1vždy • Náhodné: f(1) → 1v 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 Uspořádaná pětice M = < X, S, δ,s0, F> • δ - 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ů • s0 - počáteční stav s0 S • F – množina (i prázdná) koncových stavů F  S

  12. DFA versus NFA • NFAse 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. • NFAs více koncovými stavy lze vždy převést naNFAs jedním koncovým stavem. • NFAlze vždy převést naDFA, ale odpovídajícíDFAreprezentace může mít exponenciální nárůst počtu stavů nebo přechodů.

  13. NFA a DFA Jakákoliv posloupnosta bkončícía b C A B b a NFA a,b A A,B A,C b a DFA b a a b

  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áe, (prázdné slovo se v některých textech označuje i jakol) • 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ádejmeS = {a,b,c}, pak lze zS utvořit například jazyky: • {aa,ab,ac,bb,bc,cc} • {ab,abc,abcc,abccc,. . .} • { e } • { } • {a,b,c,e}

  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 Fneg = S-F , slovy: invertujeme koncové stavy

  26. Regulární výrazy http://www.dotnetcoders.com/web/Learning/Regex/default.aspx

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

  28. d[abc]d a d 0 3 4 5 b[bc]d Příklad: Automat → regulární výraz 2/5 d [abc] d a d 0 1 2 3 4 5 d b [bc] 6 7

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

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

  31. d[abc]d a (b[bc]da)*d 0 3 4 5 d[abc]da(b[bc]da)*d 0 5 Příklad: Automat → regulární výraz 5/5 * - 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 = {anbn | n>0}

  33. Regulární výrazy: Metacharacters • Začátečníkům pomůže knihovna regulárních výrazů http://regexlib.com/ • 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" • Příklad \d\d\d\s nalezne: "123 456"

  34. Některé uživatelské znaky

  35. Modifikátory výrazu • "^Kolo" nalezne "Kolohnát",ale nikoliv "Moje Kolo" • "stroj$" matches "Nástroj",ale ne "stroje"

  36. Kvantifikátory

  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: 12-15-2003"; 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í

More Related