ochu motivce L = { w w=u w=uv w=u, u,v {,}* } Automty gmtiky Romn Bták, KIML tk@ktiml.mff.cuni.cz htt://ktiml.mff.cuni.cz/~tk L = L L L, kde L = { w w=u, u {,}* }, L = { w w=uv, u,v {,}* } L = { w w=u, u {,}* } Můžeme jít ještě dál! L = {}. {,}* L = {,}*. {}. {,}* L = {,}*. {} Pojďme ještě dál L = ({} {})*. {}.{}.{} Nešlo y všechny egulání jzyky oskládt z nějkých tiviálních jzyků Regulán ní jzyky říd eguláních jzyků RJ(X) nd konečnou neázdnou ecedou X je nejmenší tříd jzyků, kteá: oshuje ázdný jzyk o kždé ísmeno x X oshuje jzyk {x} A,B RJ(X) A B RJ(X) uzvřená n sjednocení A,B RJ(X) A.B RJ(X) uzvřená n zřetězení A RJ(X) A* RJ(X) uzvřená n iteci Vlstně lgeický ois jzyků! Seciálně: {} RJ(X) otože {} = * X RJ(X) otože X = x X {x} (ozo! je to konečné sjednocení) {x i,,x ik } RJ(X) X* RJ(X) Kleeneov vět Liovolný jzyk je egulání ávě když je ozozntelný konečným utomtem. Konečnými utomty lze ozoznávt jen tiviální jzyky (ázdný jednoísmenné) jzyky, kteé z nich lze složit oecemi sjednocení, zřetězení itece. Důkz RJ F egulání jzyky jsou ozozntelné konečnými utomty tiviální jzyky jsou ozozntelné konečným utomtem oece sjednocení, zřetězení iteci dávjí oět jzyk ozozntelný konečným utomtem
Důkz Kleeneovy věty jzyky ozozntelné konečnými utomty jsou egulání máme utomt A=(Q,X,δ,,F), kteý definuje jzyk L(A) chceme ukázt, že L(A) dostneme z elementáních jzyků oecí definujme R ij = {w X* δ*( i,w)= j } slov řevádějící stv i n j otom L(A) = i F R i slov řevádějící očáteční stv n nějký koncový stv i jsou jzyky R ij egulání okud no, otom L(A) je tké egulání, otože zchovává egulánost definujme R k ij =slov řevádějící stv i n j ez meziůchodu stvy m m>k zřejmě R ij = R n ij (n je očet stvů utomtu) jsou jzyky R k ij egulání R 0 ij je egulání (žádné mezistvy, tj. mximálně jednoísmenná slov) R k+ ij = Rk ij Rk i,k+.(rk k+,k+ )*. Rk k+,j je egulání (sjednocení itece eguláních jzyků) Altentivní důkz Kleeneovy věty jzyky ozozntelné konečnými utomty jsou egulání Indukcí odle očtu hn v nedeteministickém utomtu A = (Q,X,δ,S,F) o dný jzyk L(A) žádná hn ouze jzyky neo {} (n+) hn vyeeme si jednu hnu: tj. δ(,) sestojíme čtyři utomty ez této hny (δ ) A = (Q,X,δ,S,F) A = (Q,X,δ,S,{}) A = (Q,X,δ,{},{}) A = (Q,X,δ,{},F) Potom L(A) = L(A ) (L(A ).).(L(A ).)*L(A ) Jzyky L(A ), L(A ), L(A ), L(A ) jsou egulání (n hn) i k+ j Regulán ní výzy Množin eguláních výzů RV(X) nd konečnou neázdnou ecedou X={x,,x n } je nejmenší množin slov v ecedě {x,,x n,,, +,.,*, (,)}, kteá: oshuje výz výz RV(X), RV(X) o kždé ísmeno x X oshuje výz 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ávoky lze vynecht (+((.c)+d)*)+e závoky lze vynecht u. + díky socitivitě +((.c)+d)*+e tečku lze vynecht +((c)+d)*+e ioit oecí (nejvyšší) *,., + (nejnižší) +(c+d)*+e Hodnot egulán ního výzu Hodnotou eguláního výzu α RV(X) je množin slov [α] (jzyk) definovná následovně: [] =, [] ={}, [x] = {x} [(α+β)] =[α] [β] [(α.β)] = [α]. [β] [α*] = [α]* Regulání výzy odovídjí eguláním jzykům hodnotou eguláního výzu je egulání jzyk kždý egulání jzyk lze eezentovt omocí eguláního výzu (jzyk je hodnotou tohoto výzu) Příkldy: [(+)* + (+)*(+)* + (+)*] = = { w w=u w=uv w=u, u,v {,}* } [(0*0*0*)*0*] = = {w w {0,}*, w =k }
Použit ití egulán ních výzů Pktický řehledný záis jzyk eoetický zjednodušení někteých důkzů Vět: L F, x X σ(x) F σ (L) F L σ(x) jsou egulání jzyky, lze je tedy eezentovt eguláními výzy kždý výskyt x ve výzu o L stčí nhdit výzem o σ(x) Rozšířené egulání výzy máme i dlší egulání oece, nř. ůnik (α & β) Ekvivlence eguláních výzů α β jestliže [α] = [β] (tj. výzy eezentují stejné jzyky) Příkld: (0*)* + (0+)* Jk to zjistíme Převod egulán ního výzu n konečný ný utomt Metod (inkementální): řeveď elementání jzyky (ázdný, jednoísmenné) soj oužitím eguláních oecí odle výzu Metod (římá) +(c+d)*+ očísluj symoly ve výzu (zlev do dov) +( c +d )*+ 5 zjisti všechny možné áy symolů, kteé se c, c d, c, mohou vyskytovt z seou d d, d zjisti symoly, kteé mohou ýt vní ve slově,, d, 5 zjisti symoly, kteé mohou ýt oslední ve slově, c, d, 5 zjisti, zd jzyk oshuje ázdné slovo ANO vytvoř nedeteministický utomt s stvy: s + očíslovné symoly d očátek = s konec = oslední symoly (+s o ) d d 5 c řechody: s vní symol x i x j, okud je á x i x j c d Od utomtu k egulán nímu výzu, Pomocí Kleeneovy věty: R 0 ij R k+ ij = R k ij R k i,k+.(r k k+,k+)*. R k k+,j Pozn.: uzel můžeme ignoovt (nevedou řes něj žádné cesty do osttních uzlů) Od utomtu k egulán nímu výzu (říkld ) Pomocí Kleeneovy věty: R 0 ij R k+ ij = R k ij R k i,k+.(r k k+,k+)*. R k k+,j R 0 R R 0 + + R * + * + * R + R ( ) * ( ) * ( ) * ( ) * ( ) * ( ) * R * + * + * * + * + * * + R (+)* (+)*
Od utomtu k egulán nímu výzu jink Ohodnocení hn eguláním výzem Nejve vytvoříme utomt s jedním vstuem jedním výstuem F 0 A α Od utomtu k egulán nímu výzu v říkld kldě, Stčí řidt ouze nový koncový stv. Eliminujeme smyčku. Eliminujeme uzel. Eliminujeme uzel. sojení hn α α+β elimince smyček α β β α * β ( ) * Eliminujeme smyčku. elimince vcholů α β α m β α * α β α ( ) * Eliminujeme uzel. α m α m Můžeme konečné utomty ještě zoecnit Konečný utomt ovádí následující činnosti: řečte ísmeno změní stv vnitřní jednotky osune čtecí hlvu dov Čtecí hlv se nesmí vcet! Co když utomtu ovolíme ovládání hlvy Dvousměn né (dvoucestné) ) konečné utomty Dvousměným (dvoucestným) konečným utomtem nzýváme ětici A = (Q,X,δ,,F), kde: Q - konečná neázdná množin stvů (stvový osto) X - konečná neázdná množin symolů (vstuní eced) δ -zozeníq X Q {-,0,+} (řechodová funkce) řechodová funkce učuje i ohy čtecí hlvy Q (očáteční stv) F Q (množin koncových stvů) Pozo! Automt n ásku nic neíše! Reezentce: stvový digm, tulk, stvový stom
Počítání s dvousměnými utomty Kdy dvousměný utomt řijímá slovo Co se děje, je-li hlv mimo čtené slovo Slovo w je řijto dvousměným konečným utomtem, okud: výočet zčl n vním ísmenu slov w vlevo v očátečním stvu čtecí hlv ové oustil slovo w vvo v někteém koncovém stvu mimo čtené slovo není výočet definován (výočet zde končí slovo není řijto) w F Příkld dvousměn ného utomtu Nejve oznámk: ke slovům si můžeme řidt seciální koncové znky # X je-li L(A)= {#w# w L X*} egulání, otom i L je egulání L = # R # (L(A) #X*#) Příkld: L(B) = {#u# uu L(A)} Pozo! oto není levý ni vý kvocient! Nechť A= (Q,X,δ,,F), definujme dvousměný konečný utomt B=(Q Q Q {,, F }), X, δ,, { F }) tkto: δ x # oznámk,-,+,+,- = δ(,x),-,+,+ F,+ F, = δ(,x),+,+ F, = δ(,x),+,+ F,+,+ # u # F Vět o dvousměných utomtech Jzyky řijímné dvousměnými konečnými utomty jsou ávě jzyky řijímné konečnými utomty. Možnost ohyovt čtecí hlvou o ásce nezvětšil sílu konečného utomtu! Pozo, n ásku nic neíšeme! Pokud můžeme n ásku sát, dostneme uingův stoj. Zřejmé: konečný utomt dvousměný konečný utomt dvousměný utomt vždy osouvá hlvu dov KA A=(Q,X,δ,,F) KA B=(Q,X,δ,,F), δ (,x)=(δ(,x),+) Zývá: dvousměný konečný utomt konečný utomt Důkz věty v o dvousměných utomtech () u v ) Fomální ois vlivu slov u n výočet nd slovem v (i) kdy ové oustíme slovo u vvo (v jkém stvu ové vstouíme nd v) f( 0 ) = ové řejdeme n v ve stvu f( 0 ) = 0 nikdy neoustíme u vvo (ii) okud oustíme slovo v vlevo, kdy se nd v oět vátíme f() = vátíme se nd v ve stvu f() = 0 nikdy už se nevátíme ) Výočet nd u máme osný funkcí f u f u : Q { 0 } Q {0} f u ( 0 ) oisuje situci (i): v jkém stvu ové odejdeme vvo, okud zčneme výočet vlevo v očátečním stvu f u () ( Q) oisuje situci (ii): v jkém stvu oět odejdeme vvo, okud zčneme výočet vvo v symol 0 znčí, že dná situce nenstne (odejdeme vlevo neo cyklus) u u v v
Důkz věty v o dvousměných utomtech () Po kždé slovo u máme funkci f u oisující výočet dvousměného utomtu A nd u Definujme ekvivlenci slov tkto: u~w def f u =f w tj. slov jsou ekvivlentní, okud mjí stejné výočtové funkce Vlstnosti ~: je to ekvivlence (zřejmé, definováno omocí =) má konečný index (mximální očet ůzných funkcí je (n+) n+ o n-stvový dvousměný utomt) je to vá konguence (zřejmě u~w uv~wv, otože ozhní u v w v je stejné nd v se utomt chová stejně) L(A) je sjednocením jistých tříd ozkldu X*/~ stčí si uvědomit, že w L(A) f w ( 0 ) F u~w f u ( 0 )=f w ( 0 ) (u L(A) w L(A)) Podle Neodovy věty je L(A) egulání jzyk. Převod KA n KA Konstuktivní důkz věty o dvousměných utomtech. Jk výočet s návty řevést n lineání výočet zjímjí nás jen řijímcí výočty díváme se n řechody mezi symoly (v jkém stvu se řechází n dlší olíčko). Njdeme všechny možné řezy - oslounosti stvů (je jich konečně mnoho).. Mezi řezy definujeme (nedeteministické) řechody odle čteného symolu.. Rekonstuujeme výočet skládáním řezů (jko uzzle). Pozoování: stvy se v řechodu (řezu) střídjí (dov/dolev) vní stv jde dov, oslední tké dov v deteministických řijímjících výočtech nejsou cykly vní oslední řez oshují jediný stv Fomáln lní řevod KA n KA Nechť A=(Q,X,δ,,F) je dvousměný konečný utomt. Příkld řevodu KA n KA Mějme následující dvousměný konečný utomt: Definujme ekvivlentní nedeteministický konečný utomt B=(Q,X,δ,( ),F ), kde: Q = všechny koektní řechodové oslounosti oslounosti stvů (,, k ) z Q tkové, že délk oslounosti je lichá (k=m+) žádný stv se neokuje n liché ni n sudé ozici ( i j i j ) & ( i j i+ j+ ) F = {() F} řechodové oslounosti délky oshující koncový stv δ (c,x) = { d d Q & c d je lokálně konzistentní řechod o x} x L(A)=L(B) tjektoie KA A odovídá řezům KA B c d,+,+,+,-,+,- Ukázk výočtu:.. Možné řezy jejich konzistentní řechody: Výsledný nedeteministický KA:,,,,,,