Nedeterministické konečné automaty Nedeterminismu Podmnožinová konstrukce 1
Nedeterminismus Nedeterministický konečný automat má schopnost být v několika stavech současně. Přechody z libovolného stavu pod libovolným symbolem mohou vést do libovolné množiny stavů. 2
Nedeterminismus (2) Začni v jednom počátečním stavu. Akceptuj, pokud jakákoliv sekvence voleb vede do koncového stavu. Intuitivně: NFA vždy hádá správně 3
Příklad: Tahy na šachovnici stavy = políčka vstupy = r (tah na sousední červené pole) a b (tah na sousední černé pole). Počáteční stav a koncový stav jsou v protějších rozích. 4
Příklad: Šachovnice (2) 1 1 2 3 4 5 6 7 8 9 r b b 2 1 4 3 5 7 5 1 3 7 9 * r b 1 2,4 5 2 4,6 1,3,5 3 2,6 5 4 2,8 1,5,7 5 2,4,6,8 1,3,7,9 6 2,8 3,5,9 7 4,8 5 8 4,6 5,7,9 9 6,8 5 Akceptuj, koncový stav dosažen 5
Formální definice NFA Konečná množina stavů Q. Vstupní abeceda Σ. Přechodová funkce δ. Počáteční stav q 0 v Q. Množina koncových stavů F Q. 6
Přechodová funkce NFA δ(q,a) je množina stavů. Rozšíření na řetezce následovně: Základní krok: δ(q,ε) = {q}q} Indukce: δ(q,wa) = sjednocení přes všechny stavy p v δ(q,w) množin δ(p,a) 7
Jazyk NFA Řetězec w je akceptován NFA, pokud δ(q 0,w) obsahuje alespoň jeden koncový stav. Jazyk NFA je množina řetezců, které akceptuje. 8
Příklad: Jazyk NFA 1 2 3 4 5 6 7 8 9 Pro náš šachový NFA jsme viděli, že rbb je akceptováno. Pokud vstup obsahuje pouze b, tak množina dosažitelných stavů alternuje mezi {q}5} a {q}1,3,7,9}, tj. pouze neprázdné řetezce b sudé délky jsou akceptovány. A co řetezce s alespoň jedním r? 9
Ekvivalence DFAs a NFAs DFA lze převést na NFA akceptující stejný jazyk. Pokud δ D (q,a)=p, NFA bude mít δ N (q,a)={q}p}. Pak je NFA vždy v množině stavů obsahující přesně jeden stav stav, ve kterém je DFA po přečtení stejného vstupu. 10
Ekvivalence (2) Překvapivě, pro každý NFA existuje DFA, který akceptuje stejný jazyk. Důkaz je podmnožinová konstrukce. Počet stavů DFA může být exponenciální vzhledem k počtu stavů NFA. Tedy NFAs akceptují přesně regulární jazyky. 11
Podmnožinová konstrukce Je dán NFA se stavy Q, vstupy Σ, přechodovou funkcí δ N, počátečním stavem q 0 a koncovými stavy F, zkonstruujeme ekvivalentní DFA se Stavy 2 Q (množina podmnožin Q). Vstupy Σ. Počátečním stavem {q}q 0 }. Koncovými stavy = všechny ty, které obsahují stav z F. 12
Kritický bod Stavy DFA mají jména, která jsou množiny stavů NFA. Ale jako stav DFA, výraz tvaru např. {q}p,q} se musí číst jako jediný symbol, ne množina. Analogie: třída objektů, jejichž hodnoty jsou množiny objektů jiné třídy. 13
Podmnožinová konstrukce (2) Přechodová funkce δ D je definována jako: δ D ({q}q 1,,q k }, a) = sjednocení přes všechna i = 1,,k množin δ N (q i, a). Příklad: Zkonstruujeme DFA ekvivalentní k našemu šachovému NFA. 14
Př.: Podm. konstrukce * r b 1 2,4 5 2 4,6 1,3,5 3 2,6 5 4 2,8 1,5,7 5 2,4,6,8 1,3,7,9 6 2,8 3,5,9 7 4,8 5 8 4,6 5,7,9 9 6,8 5 r b {q}1} {q}2,4} {q}5} {q}2,4} {q}5} Pozor: Zde děláme tzv. línou konstrukci DFA, kde konstruujeme stav pouze pokud musíme. 15
Př.: Podm. konstrukce * r b 1 2,4 5 2 4,6 1,3,5 3 2,6 5 4 2,8 1,5,7 5 2,4,6,8 1,3,7,9 6 2,8 3,5,9 7 4,8 5 8 4,6 5,7,9 9 6,8 5 r b {q}1} {q}2,4} {q}5} {q}2,4} {q}2,4,6,8} {q}1,3,5,7} {q}5} {q}2,4,6,8} {q}1,3,5,7} 16
Př.: Podm. konstrukce * r b r b 1 2,4 5 {q}1} {q}2,4} {q}5} 2 4,6 1,3,5 {q}2,4} {q}2,4,6,8} {q}1,3,5,7} 3 2,6 5 {q}5} {q}2,4,6,8} {q}1,3,7,9} 4 2,8 1,5,7 {q}2,4,6,8} 5 2,4,6,8 1,3,7,9 {q}1,3,5,7} 6 2,8 3,5,9 * {q}1,3,7,9} 7 4,8 5 8 4,6 5,7,9 9 6,8 5 17
Př.: Podm. konstrukce * r b r b 1 2,4 5 {q}1} {q}2,4} {q}5} 2 4,6 1,3,5 {q}2,4} {q}2,4,6,8} {q}1,3,5,7} 3 2,6 5 {q}5} {q}2,4,6,8} {q}1,3,7,9} 4 2,8 1,5,7 {q}2,4,6,8}{q}2,4,6,8} {q}1,3,5,7,9} 5 2,4,6,8 1,3,7,9 {q}1,3,5,7} 6 2,8 3,5,9 * {q}1,3,7,9} 7 4,8 5 * {q}1,3,5,7,9} 8 4,6 5,7,9 9 6,8 5 18
Př.: Podm. konstrukce * r b r b 1 2,4 5 {q}1} {q}2,4} {q}5} 2 4,6 1,3,5 {q}2,4} {q}2,4,6,8} {q}1,3,5,7} 3 2,6 5 {q}5} {q}2,4,6,8} {q}1,3,7,9} 4 2,8 1,5,7 {q}2,4,6,8}{q}2,4,6,8} {q}1,3,5,7,9} 5 2,4,6,8 1,3,7,9 {q}1,3,5,7} {q}2,4,6,8} {q}1,3,5,7,9} 6 2,8 3,5,9 * {q}1,3,7,9} 7 4,8 5 * {q}1,3,5,7,9} 8 4,6 5,7,9 9 6,8 5 19
Př.: Podm. konstrukce * r b r b 1 2,4 5 {q}1} {q}2,4} {q}5} 2 4,6 1,3,5 {q}2,4} {q}2,4,6,8} {q}1,3,5,7} 3 2,6 5 {q}5} {q}2,4,6,8} {q}1,3,7,9} 4 2,8 1,5,7 {q}2,4,6,8}{q}2,4,6,8} {q}1,3,5,7,9} 5 2,4,6,8 1,3,7,9 {q}1,3,5,7} {q}2,4,6,8} {q}1,3,5,7,9} 6 2,8 3,5,9 * {q}1,3,7,9}{q}2,4,6,8} {q}5} 7 4,8 5 * {q}1,3,5,7,9} 8 4,6 5,7,9 9 6,8 5 20
Př.: Podm. konstrukce * r b r b 1 2,4 5 {q}1} {q}2,4} {q}5} 2 4,6 1,3,5 {q}2,4} {q}2,4,6,8} {q}1,3,5,7} 3 2,6 5 {q}5} {q}2,4,6,8} {q}1,3,7,9} 4 2,8 1,5,7 {q}2,4,6,8}{q}2,4,6,8} {q}1,3,5,7,9} 5 2,4,6,8 1,3,7,9 {q}1,3,5,7} {q}2,4,6,8} {q}1,3,5,7,9} 6 2,8 3,5,9 * {q}1,3,7,9}{q}2,4,6,8} {q}5} 7 4,8 5 * {q}1,3,5,7,9}{q}2,4,6,8} {q}1,3,5,7,9} 8 4,6 5,7,9 9 6,8 5 21
Důkaz ekvivalence: podmnožinová konstrukce Důkaz je téměř hříčka. Ukažme indukcí k w, že δ N (q 0, w) = δ D ({q}q 0 }, w) Základ: w = ε: δ N (q 0, ε) = δ D ({q}q 0 }, ε) = {q}q 0 }. 22
Indukce Nechť IP platí pro řetezce kratší než w Nechť w = xa; IP platí pro x. Nechť δ N (q 0, x) = δ D ({q}q 0 }, x) = S. Nechť T = sjednocení přes všechny stavy p v S množin δ N (p, a). Pak δ N (q 0, w) = δ D ({q}q 0 }, w) = T. Pro NFA: rozšíření δ N. Pro DFA: definice δ D plus rozšíření δ D. tj., δ D (S, a) = T; pak rozšiř δ D na w = xa. 23
NFAs s ε-přechodpřechody Povolíme přechody mezi stavy pod vstupem ε. Tyto přechody se provádí samovolně bez ohledu na vstupní řetezec. Občas užitečné, nicméně stále akceptuje pouze regulární jazyky. 24
Příklad: ε-přechodnfa A 1 0 ε B E 1 1 C ε 0 ε 0 F D * 0 1 ε A {q}e} {q}b} B {q}c} {q}d} C {q}d} D E {q}f} {q}b, C} F {q}d} 25
Stavový uzávěr CL(q) = množina stavů dosažitelná ze stavu q hranami označenými ε. Příklad: CL(A) = {q}a}; ε CL(E) = {q}b,c,d,e}. Uzávěr množiny stavů = sjednocení jednotlivých stavových uzávěrů. A 1 0 B ε ε E 1 C 1 0 F 0 26 D
Rozšířená Delta δ Basic: (q,ε) = CL(q). δ Indukce: (q,xa) se počítá následovně: 1. Začni s δ (q,x) = S. 2. Vezmi sjednocení CL(δ(p,a)) pro všechna p v S. δ Intuice: (q,w) je množina stavů dosa-přechod žitelná z q po cestách označených w. A všimněte si, že δ(q,a) není ta množina stavů pro symbol a. 27
Příklad: Rozšířená Delta 1 C 1 0 0 F δ (A,ε) = CL(A) = {q}a}. δ(a,0) = CL({q}E}) = {q}b,c,d,e}. δ(a,01) = CL({q}C,D}) = {q}c,d}. Jazyk ε-přechodnfa je množina řetezců w takových, že δ (q 0,w) obsahuje koncový stav. A 1 0 B ε ε E ε D 28
Ekvivalence NFA a ε-přechodnfa Každý NFA je ε-přechodnfa. Prostě nemá žádné ε-přechodpřechody. Opak vyžaduje k ε-přechodnfa zkonstruovat NFA, který akceptuje stejný jazyk. To uděláme kombinací ε přechodů s následujícím skutečným vstupem. Pozor: V knize trochu odlišně. 29
Obrázek odstraňování ε-přechodpřechodů a a Přechody pod ε a Přechody pod ε 30
Obrázek odstraňování Kniha jde odtud ε-přechodpřechodů a a Sem a pak se použije podmnožinová konstrukce Přechody pod ε a Přechody pod ε 31
Obrázek odstraňování ε-přechodpřechodů Sem bez podmn. konstrukce My půjdeme odtud a a Přechody pod ε a Přechody pod ε 32
Ekvivalence (2) Vyjdeme z ε-přechodnfa se stavy Q, vstupy Σ, počátečním stavem q 0, koncovými stavy F a přechodovou funkcí δ E. Zkonstruujeme obyčejný NFA se stavy Q, vstupy Σ, počátečním stavem q 0, koncovými stavý F a přechodovou funkcí δ N. 33
Ekvivalence (3) Vypočti δ N (q,a) následovně: 1. Nechť S = CL(q). 2. δ N (q,a) = sjednocení přes všechna p v S množin δ E (p,a). F = množina stavů q takových, že CL(q) obsahuje stav z F. Intuice: δ N zahrnuje ε přechody před použitím a, ale ne po. 34
Ekvivalence (4) Dokažte indukcí k w, že CL(δ N (q 0,w)) = δ E (q 0,w). Tedy ε-přechodnfa akceptuje w právě tedy, když obyčejný NFA akceptuje w. 35
Zajimavé uzávěry: CL(B) = {q}b,d}; CL(E) = {q}b,c,d,e} Př.: Převod ε-přechodnfa na NFA * 0 1 ε A {q}e} {q}b} B {q}c} {q}d} C {q}d} D E {q}f} {q}b,c} F {q}d} ε-přechodnfa * * * Protože uzávěry B a E obsahují koncový stav D. 0 1 A {q}e} {q}b} B {q}c} C {q}d} D E {q}f} {q}c,d} F {q}d} Protože uzávěr E obsahuje B a C; ty mají přechody pod 1 do C a D. 36
Souhrn DFAs, NFAs a ε NFAs všechny akceptují přesně stejnou třídu jazyků: regulární jazyky. NFA jsou snadnější pro návrh a mohou mít exponenciálně měně stavů než DFA....ale pouze DFA lze implementovat! 37
Regulární výrazy Definice Ekvivalence s konečnými automaty 1
RE: úvod Regulární výrazy (RE) jsou algebraický způsob popisu jazyků. Popisují přesně regulární jazyky. Pokud je E regulární výraz, pak L(E) je jazyk, který definuje. Popíšeme RE a jejich jazyky rekurzivně. 2
RE: Definice Základ 1: Pokud a je libovolý symbol, pak a je RE a L(a) = {a}. Pozn.: {a} je jazyk obsahující jeden řetězec a tento řetězec je délky 1. Základ 2: ε je RE a L(ε) = {ε}. Základ 3: je RE a L( ) =. 3
RE: Definice (2) Indukce 1: Pokud jsou E 1 a E 2 regulární výrazy, pak E 1 +E 2 je regulární výraz a L(E 1 +E 2 ) = L(E 1 ) L(E 2 ). Indukce 2: Pokud jsou E 1 a E 2 regulární výrazy, pak E 1 E 2 je regulární výraz a L(E 1 E 2 ) = L(E 1 )L(E 2 ). Konkatenace: množina řetězců wx takových, že w je z L(E 1 ) a x z L(E 2 ). 4
RE: Definice (3) Indukce 3: Pokud je E RE, pak E* je RE a L(E*) = (L(E))*. Uzávěr či Kleeneho uzávěr = množina řetezců w 1 w 2 w n pro nějaké n > 0, kde každé w i je z L(E). Pozn.: pro n=0 je řetězec = ε. 5
Priorita operátorů Závorky lze použít kdekoliv, kde je potřeba ovlivnit působení operátorů. Priorita operátorů je * (nejvyšší), pak konkatenace, pak + (nejnižší). 6
Příklad: RE L(01) = {01}. L(01+0) = {01, 0}. L(0(1+0)) = {01, 00}. Všimněte si priority operátorů. L(0*) = {ε, 0, 00, 000, }. L((0+10)*(ε+1)) = všechny řetězce 0 a 1 bez dvou sousedních 1. 7
Ekvivalence RE a automatů Musíme ukázat, že pro každý RE existuje automat, který akceptuje stejný jazyk. Použijeme nejméně restriktivní typ automatů: ε-nfa.nfa. Naopak musíme ukázat, že pro každý automat existuje RE definující jeho jazyk. Použijeme nejvíce restriktivní typ: DFA. 8
Konverze RE na ε-nfa.nfa Důkaz indukcí vzhledem k počtu operátorů (+, konkatenace, *) v RE. Vždy zkonstruujeme automat speciálního tvaru (další slajd). 9
Tvar zkonstruovaných ε-nfa.nfa Poč. stav: Jediný stav s externím předchůdcem Žádné hrany z venku, žádné hrany ven Koncový stav: Jediný stav s externím následníkem 10
Od RE k ε-nfa.nfa: základ Symbol a: ε: a ε : 11
Od RE k ε-nfa.nfa: Indukce 1 Sjednocení ε pro E 1 ε ε pro E 2 ε pro E 1 + E 2 12
Od RE k ε-nfa.nfa: Indukce 2 Konkatenace ε pro E 1 pro E 2 pro E 1 E 2 13
Od RE k ε-nfa.nfa: Indukce 3 Kleeneho uzávěr ε ε pro E ε ε pro E* 14