5 Automty grmtiky Romn Brták, KTIML rtk@ktiml.mff.cuni.cz http://ktiml.mff.cuni.cz/~rtk Co ylo minule Množinové operce s jzyky sjednocení, pr nik, rozdíl, dopln k uzv enost opercí (lgoritmus p evodu) et zcové operce nd jzyky z et zení, mocniny, pozitivní/oecná iterce, zrcdlový orz kvocienty derivce (zlev, zprv) uzv enost opercí (lgoritmus p evodu) Sustituce homomorfismus jzyk Regulární jzyk jko slou enin elementární jzyky (prázdný, jednopísmenný) + operce sjednocení, z et zení, iterce Kleeneov v t Jzyk je regulární práv když je rozpozntelný kone ným utomtem. Automty grmtiky, Romn Brták
D kz Kleeneovy v ty v ty jzyky rozpozntelné kone nými utomty jsou regulární máme utomt A=(Q,X,δ,q,F), který definuje jzyk L(A) chceme ukázt, že L(A) dostneme z elementárních jzyk opercí definujme R ij = {w X* δ*(q i,w)=q j } slov p evád jící stv q i n q j potom L(A) = qi F R i slov p evád jící po áte ní stv q n n jký koncový stv q i jsou jzyky R ij regulární pokud no, potom L(A) je tké regulární, protože zchovává regulárnost definujme R k ij =slov p evád jící stv q i n q j ez mezipr chodu stvy q m m>k z ejm R ij = R n ij (n je po et stv utomtu) jsou jzyky R k ij regulární R 0 ij je regulární (žádné mezistvy, tj. mximáln jednopísmenná slov) R k+ ij = Rk ij Rk i,k+.(rk k+,k+ )*. Rk k+,j je regulární (sjednocení iterce regulárních jzyk ) i k+ j Automty grmtiky, Romn Brták Alterntivní d kz Kleeneovy v ty jzyky rozpozntelné kone nými utomty jsou regulární Indukcí podle po tu hrn v nedeterministickém utomtu A = (Q,X,δ,S,F) pro dný jzyk L(A) žádná hrn pouze jzyky neo {} (n+) hrn vyereme si jednu hrnu: p q tj. q δ(p,) sestrojíme ty i utomty ez této hrny (δ ) A = (Q,X,δ,S,F) A = (Q,X,δ,S,{p}) A = (Q,X,δ,{q},{p}) A 4 = (Q,X,δ,{q},F) Potom L(A) = L(A ) (L(A ).).(L(A ).)*L(A 4 ) Jzyky L(A ), L(A ), L(A ), L(A 4 ) jsou regulární (n hrn) p q 4 Automty grmtiky, Romn Brták
Regulární výrzy Množin regulárních výrz RV(X) nd kone nou neprázdnou ecedou X={x,,x n } je nejmenší množin slov v eced {x,,x n,,, +,.,*, (,)}, která: oshuje výrz výrz RV(X), RV(X) pro kždé písmeno x X oshuje výrz x x RV(X) α,β RV(X) (α+β) RV(X) α,β RV(X) (α.β) RV(X) α RV(X) α* RV(X) P íkld: ((+((.c)+d)*)+e) Konvence: vn jší závorky lze vynecht (+((.c)+d)*)+e závorky lze vynecht u. + díky socitivit +((.c)+d)*+e te ku lze vynecht +((c)+d)*+e priorit opercí (nejvyšší) *,., + (nejnižší) +(c+d)*+e Automty grmtiky, Romn Brták Hodnot regulárního výrzu Hodnotou regulárního výrzu α RV(X) je množin slov [α] (jzyk) definovná následovn : [] =, [] ={}, [x] = {x} [(α+β)] =[α] [β] [(α.β)] = [α]. [β] [α*] = [α]* Regulární výrzy odpovídjí regulárním jzyk m hodnotou regulárního výrzu je regulární jzyk kždý regulární jzyk lze reprezentovt pomocí regulárního výrzu (jzyk je hodnotou tohoto výrzu) P íkldy: [(+)* + (+)*(+)* + (+)*] = = { w w=u w=uv w=u, u,v {,}* } [(0*0*0*)*0*] = = {w w {0,}*, w =k } Automty grmtiky, Romn Brták
Použití regulárních výrz Prktický p ehledný zápis jzyk Teoretický zjednodušení n kterých d kz V t: L F, x X σ(x) F σ (L) F L σ(x) jsou regulární jzyky, lze je tedy reprezentovt regulárními výrzy kždý výskyt x ve výrzu pro L st í nhrdit výrzem pro σ(x) Rozší ené regulární výrzy máme i dlší regulární operce, np. pr nik (α & β) Ekvivlence regulárních výrz α β jestliže [α] = [β] (tj. výrzy reprezentují stejné jzyky) P íkld: (0*)* + (0+)* Jk to zjistíme Automty grmtiky, Romn Brták P evod regulárního výrzu n kone Metod (inkrementální): p eve elementární jzyky (prázdný, jednopísmenné) spoj použitím regulárních opercí podle výrzu ný utomt Metod (p ímá) +(c+d)*+ o ísluj symoly ve výrzu (zlev do doprv) +( c +d 4 )*+ 5 zjisti všechny možné páry symol, které se c, c d 4, c, mohou vyskytovt z seou d 4 d 4, d 4 zjisti symoly, které mohou ýt první ve slov,, d 4, 5 zjisti symoly, které mohou ýt poslední ve slov, c, d 4, 5 zjisti, zd jzyk oshuje prázdné slovo ANO vytvo nedeterministický utomt stvy: s + o íslovné symoly po átek = s konec = poslední symoly (+s pro ) p echody: s první symol x i x j, pokud je pár x i x j s d 4 5 c c d d d Automty grmtiky, Romn Brták 4
Od utomtu k regulárnímu výrzu 4, Pomocí Kleeneovy v ty: R 0 ij R k+ ij = Rk ij Rk i,k+.(rk k+,k+ )*. Rk k+,j Pozn.: uzel 4 m žeme ignorovt (nevedou p es n j žádné cesty do osttních uzl ) R 0 R R R ( ) * ( ) * ( ) * ( ) * + ( ) * ( ) * Automty grmtiky, Romn Brták Od utomtu k regulárnímu výrzu (p íkld ) Pomocí Kleeneovy v ty: R 0 ij R k+ ij = Rk ij Rk i,k+.(rk k+,k+ )*. Rk k+,j R 0 + + R * * + + * R * * + * * + * R (+)* (+)* + * + * + Automty grmtiky, Romn Brták 5
Od utomtu k regulárnímu výrzu jink Ohodnocení hrn regulárním výrzem α Nejprve vytvo íme utomt s jedním vstupem jedním výstupem q 0 A F spojení hrn α α+β β elimince smy ek α β α * β β n α * β n elimince vrchol α α m β β n α m β α β α β n α m β n Automty grmtiky, Romn Brták Od utomtu k regulárnímu výrzu v p íkld 4, T St í p idt pouze nový koncový stv. Eliminujeme smy ku 4. Eliminujeme uzel 4. Eliminujeme uzel. T Eliminujeme smy ku. ( ) * T Eliminujeme uzel. ( ) * T Automty grmtiky, Romn Brták 6
M žeme kone né utomty ješt zoecnit Kone ný utomt provádí následující innosti: p e te písmeno zm ní stv vnit ní jednotky posune tecí hlvu doprv tecí hlv se nesmí vrcet! Co když utomtu povolíme ovládání hlvy Pozor! Automt n pásku nic nepíše! Automty grmtiky, Romn Brták Dvousm rné (dvoucestné) kone né utomty Dvousm rným (dvoucestným) kone ným utomtem nzýváme p tici A = (Q,X,δ,q 0,F), kde: Q - kone ná neprázdná množin stv (stvový prostor) X - kone ná neprázdná množin symol (vstupní eced) δ - zorzení Q X Q {-,0,+} (p echodová funkce) p echodová funkce ur uje i pohy tecí hlvy q 0 Q (po áte ní stv) F Q (množin koncových stv ) Reprezentce: stvový digrm, tulk, stvový strom Automty grmtiky, Romn Brták 7
Po ítání s dvousm rnými utomty Kdy dvousm rný utomt p ijímá slovo Co se d je, je-li hlv mimo tené slovo Slovo w je p ijto dvousm rným kone ným utomtem, pokud: výpo et z l n prvním písmenu slov w vlevo v po áte ním stvu tecí hlv poprvé opustil slovo w vprvo v n kterém koncovém stvu mimo tené slovo není výpo et definován (výpo et zde kon í slovo není p ijto) q 0 w q F Automty grmtiky, Romn Brták P íkld dvousm rného utomtu Nejprve poznámk: ke slov m si m žeme p idt speciální koncové znky # X je-li L(A)= {#w# w L X*} regulární, potom i L je regulární L = # R # (L(A) #X*#) P íkld: L(B) = {#u# uu L(A)} Pozor! Toto není levý ni prvý kvocient! Nech A= (Q,X,δ,q,F), definujme dvousm rný kone ný utomt B=(Q Q Q {q 0, q N,q F }), X, δ, q 0, {q F }) tkto: δ x # poznámk q 0 q 0,- q,+ q p,+ q,- p= δ(q,x) q q,- q,+ q p,+ q F,+ q F, p= δ(q,x) q p,+ q N,+ q F, p= δ(q,x) q N q N,+ q N,+ q F q N,+ q N,+ # q 0 q u # q q q q N q F Automty grmtiky, Romn Brták 8