2 utomaty a gramatiky Roman Barták, KTML bartak@ktiml.mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Na zopakování Víme, co je konečný automat = (Q,X,δ,q,F) Umíme konečné automaty charakterizovat (Myhill-)Nerodova věta co dnes? Proč se jazyky jmenují regulární? iterační (pumping) lemma Jak automaty zjednodušit? redukce automatů X* c d u v X*/~ uw vw L Pravidelnost regulárních jazyků Konečný automat kóduje pouze konečnou informaci. Přesto můžeme rozpoznávat nekonečné jazyky! Můžeme přijímat libovolně (ale konečně) dlouhá slova! Pozorování: L = {w w {,}* w = 3k+} L potom také: L řetězec jsme zdvojili L řetězec jsme ztrojili L řetězec jsme vypustili Lze takovouto operaci provést s každým slovem libovolného regulárního jazyka? NO (pokud je slovo dostatečně dlouhé) terační (pumping) lemma Nechť L je regulární jazyk. Potom existuje přirozené číslo n takové, že libovolné slovo z L, z n lze psát ve tvaru uvw, kde: uv n, v a pro všechna i uv i w L. ůkaz: za n vezměme počet stavů příslušného automatu při zpracování slova délky n se automat nutně musí dostat do jednoho stavu dvakrát (krabičkový princip) vezměme takový stav p, který se opakuje jako první potom δ(q,u) = p poprvé jsme se dostali do p δ(q,uv) = p podruhé jsme se dostali do p zřejmě uv n (pouze p se opakuje tj. maximálně n+ stavů) v (smyčka obsahuje alespoň jedno písmeno) smyčku mezi prvním a druhým průchodem p (odpovídá jí slovo v) nyní můžeme vypustit nebo projít vícekrát tj. i uv i w L q p q F u w v 2-
Použití iteračního lemmatu ůkaz neregulárnosti jazyka L= { i i i } není regulární jazyk sporem: nechť L je regulární, potom lze pumpovat ( n tž. ) vezměme slovo n n (to je určitě delší než n) pumpovat můžeme pouze v části n potom, ale n+i n L (i > je délka pumpované části), což je spor Jazyk a přijímající automaty Je automat pro daný jazyk určen jednoznačně? NENÍ! POZOR! terační lemma představuje nutnou podmínku regulárnosti jazyka, nedává podmínku postačující. Existuje jazyk, který není regulární a lze pumpovat. L= {u u = a + b i c i u = b i c j } vždy lze pumpovat první písmeno L není regulární (Nerodova věta) L = {w w {}* w = 3k} Ekvivalence automatů a homomorfismus Jak zjistit, zda dva automaty přijímají stejný jazyk? Říkáme, že konečné automaty a B jsou ekvivalentní, jestliže rozpoznávají stejný jazyk, tj. L() = L(B). Nechť a 2 jsou konečné automaty. Řekneme, že zobrazení h: Q Q 2 je (automatovým) homomorfismem, jestliže: ) h(q ) = q 2 stejné počáteční stavy 2) h(δ (q,x)) = δ 2 (h(q),x) stejné přechodové funkce 3) q F h(q) F 2 stejné koncové stavy Homomorfismus prostý a na nazýváme isomorfismus. Věta o ekvivalenci automatů Existuje-li homomorfismus konečných automatů do 2, pak a 2 jsou ekvivalentní. ůkaz: konečnou iterací h(δ *(q,w)) = δ 2 *(h(q),w) w X* w L( ) δ *(q,w) F h(δ *(q,w)) F 2 δ 2 *(h(q ),w) F 2 δ 2 *(q 2,w) F 2 w L( 2 ) 2 q F w q q 2F w q 2 2-2
Homomorfismus automatů Trochu motivace L = {w w = * w = 3k} o dělá tento automat? L = {w w {,}* w = 3k} osažitelné stavy Hledání dosažitelných stavů = (Q,X,δ,q,F) je konečný automat a q Q. Řekneme, že stav q je dosažitelný, jestliže w X* δ*(q,w)=q Věta: Nechť P jsou dosažitelné stavy automatu. Potom B = (P,X,δ,q,F ) je konečný automat ekvivalentní s (F = F P, δ = δ ). P X terační algoritmus (dosažitelnost po i krocích): M = {q } repeat M i+ = M i {q q Q, p M i x X δ(p,x) = q} until M i+ = M i Korektnost M M Q (algoritmus je konečný) každé M i obsahuje pouze dosažitelné stavy Úplnost nechť q je libovolný dosažitelný stav, tj. w X* δ*(q,w) = q vezměme nejkratší takové w = x..x n tž. δ*(q,x..x n ) = q zřejmě δ*(q,x..x i ) M i (dokonce M i - M i- ) tedy δ*(q,x..x n ) M n q M n 2-3
Ekvivalentní stavy Nechť = (Q,X,δ,q,F) je konečný automat. Stavy p,q jsou ekvivalentní, značíme p~q, jestliže: w X* δ*(p,w) F δ*(q,w) F Výpočty startující z ekvivalentních stavů nelze rozlišit! Ekvivalence po krocích Ekvivalence po i krocích p ~ i q w X* tž. w i δ*(p,w) F δ*(q,w) F p ~ q i p ~ i q terativní konstrukce ~ i p ~ q... p F q F p ~ i+ q... p ~ i q x X δ(p,x) ~ i δ(q,x) Je to v pořádku? p ~ q δ*(p,λ) = p F δ*(q,λ) = q F p ~ i+ q... p ~ i q tj. platí pro slova w tž. w i slova délky i+, w = xu, u = i δ(p,x) ~ i δ(q,x) tj. δ*(δ(p,x),u) F δ*(δ(q,x),u) F dohromady δ*(p,xu) F δ*(q,xu) F Vlastnosti ekvivalence po krocích Hledání ekvivalence stavů ) i je ~ i ekvivalence na Q, označme R i = Q/~ i 2) R i+ zjemňuje R i 3) R i+ = R i t> R i+t = R i 4) nechť Q =n, potom k n- R k+ = R k 5) R k+ = R k (p~q p ~ k q) ůkaz: ) a 2) přímo z definice 3) p ~ i+ q p ~ i q x X δ(p,x) ~ i δ(q,x) p ~ i+2 q p ~ i+ q x X δ(p,x) ~ i+ δ(q,x) 4) přímo z max. počtu tříd rozkladu (n) 5) p~q i p ~ i q i k p ~ i q i>k p ~ i q p ~ k q terační algoritmus (ekvivalence po i krocích): sestroj R repeat sestroj R i+ z R i until R i+ = R i Příklad: c b b c c c d d d e e e f f f g g g b R R R 2 2-4
utomatová kongruence Nechť je relace ekvivalence na Q. Říkáme, že je automatovou kongruencí, jestliže: p,q Q p q (p F q F) x X (δ(p,x) δ(q,x)) Podílový automat = (Q,X,δ,q,F) je konečný automat a je automatová kongruence. Potom / = (Q/, X, δ, [q ], {[q] q F}), kde δ ([q],x) = [δ(q,x)] je konečný automat (nazvěme ho podílovým automatem) ekvivalentní s. Q Q/ p q δ(p,x) δ(q,x) Tvrzení: Ekvivalence stavů ~ je automatovou kongruencí. ůkaz: nechť p~q, potom: p F q F (položme w = λ, δ*(p,λ) = p) nechť p~q, potom: x X u X* (δ*(p,xu) F δ*(q,xu) F) F x X u X* (δ*(δ(p,x),u) F δ*(δ(q,x),u) F) x X δ(p,x) ~ δ(q,x) ) Je / skutečně konečný automat? Množiny Q/ a X jsou neprázdné a konečné. δ je definována korektně (vlastnosti automatové kongruence) 2) Jsou oba automaty ekvivalentní? Stačí najít homomorfismus do / (věta o ekvivalenci automatů)! efinujme h: Q Q/ takto h(q) = [q] h(q ) = [q ] h(δ(q,x)) = [δ(q,x)] = δ ([q],x) = δ (h(q),x) q F h(q) = [q] F (F jsou koncové stavy automatu / ) Podílový automat a ekvivalence stavů je konečný automat a ~ je ekvivalence stavů. Potom /~ je konečný automat ekvivalentní s a žádné stavy /~ nejsou ekvivalentní. ) Ekvivalence stavů ~ je automatová kongruence, a tedy víme, že /~ je konečný automat ekvivalentní s. 2) V /~ nejsou ekvivalentní stavy. Sporem: nechť [p] ~ a [q] ~ jsou různé ekvivalentní stavy (tj. p~q) vezměme libovolné w X*: δ ~ ([p] ~,w) F ~ δ ~ ([q] ~,w) F ~ ([p] ~ a [q] ~ jsou ekvivalentní) δ ~ (h(p),w) F ~ δ ~ (h(q),w) F ~ (h(p)= [p] ~ ) h(δ(p,w)) F ~ h(δ(q,w)) F ~ (h je homomorfismus) δ(p,w) F δ(q,w) F p~q spor Redukce automatu Konečný automat je redukovaný, jestliže: - nemá nedosažitelné stavy, - žádné dva stavy nejsou ekvivalentní. Konečný automat B je reduktem automatu, jestliže: - B je redukovaný, - a B jsou ekvivalentní. Věta: Ke každému konečnému automatu existuje nějaký jeho redukt. Konstruktivní důkaz (dvě možné metody): ) vyřazení nedosažitelných stavů faktorizace podle ekvivalence stavů (nezpůsobí nedosažitelnost) nebo 2) faktorizace podle ekvivalence stavů vyřazení nedosažitelných stavů (nezpůsobí změnu ekvivalence) 2-5
Příklad redukce automatů o dělá tento automat (jaký jazyk přijímá)? 2 3 2 2 4 3 3 5 4 2 7 5 6 3 6 6 6 7 7 4 8 2 3 9 9 4 R Redukovaný automat R Nedosažitelné stavy L = {w w=bu, u {a,b}*} R 2 Redukce automatu v kostce 2. Najít ekvivalentní stavy. Vyřadit nedosažitelné stavy 3. Sestrojit podílový automat 2-6