Algoritmi SimulteNFA tulkk epädeterministisen lskennn deterministiseksi. Yksittäinen syötemerkki käsitellään (phimmss tpuksess) jss O( Q ). Tästä tulkkuksest päästään eroon kääntämällä lskent deterministiseksi, eli muodostmll NFA:st M DFA M jok tunnist smn kielen, eli lskemll etukäteen NFA:n M siirtymätulukost DFA:n M siirtymätulukko. Hvitn: muuttujn NykyisetTilt rvot kuuluvt potenssijoukkoon P(Q). Siten muuttujll NykyisetTilt on korkeintn P(Q) = 2 Q mhdollist rvo joten voimme muodost äärellisenä pysyvän deterministisen utomtin littmll kukin sen mhdollinen rvo omksi tilkseen j siirtymät kuten SimulteDFA ne lskisi. Siis muodostmme NFA:st M DFA:n M seurvsti: Akkosto on molemmill sm Σ. Tiljoukko Q cm = P(Q M ). Siirtymäfunktio koostuu siirtymistä NykyisetTilt merkki SeurjTilt joss nämä muuttujt NykyisetTilt, merkki j SeurjTilt ovt kuten tulkkilgoritmin SimulteNFA riveillä 4 7. Eli kun nnetn til NykyisetTilt Q cm ( P(Q M )), niin käydään läpi jokinen merkki Σ, j lsketn sille vstv SeurjTilt P(Q M ) ( Q cm ). Alkutil on kuten sen rivillä 1. Eli E(DFA:n M lkutil q 0 ). Hyväksyvät tilt ovt kuten sen rivillä 9. Eli ne tilt, joihin sisältyy inkin yksi DFA:n M lopputil. 1 lust tulos M sisältämään luksi pelkän lkutiln nimeltä E(DFA:n M lkutil q 0 ) eikä yhtään krt j merkitse se uudeksi 2 while tuloksess M on yhä uusi tiloj 3 do NykyisetTilt ot jokin niistä j merkitse se vnhksi 4 if joukkoon NykyisetTilt kuuluu inkin yksi epädeterministisen utomtin M hyväksyvä til 5 then merkitse NykyisetTilt hyväksyväksi tilksi 6 else merkitse NykyisetTilt hylkääväksi tilksi 7 for merkki Σ 8 do lske SeurjTilt kuten tulkkilgoritmin SimulteNFA riveillä 4 7 9 if til nimeltä SeurjTilt puuttuu yhä tuloksest M 10 then luo sellinen j merkitse se uudeksi 11 Lisää tulokseen M siirtymä NykyisetTilt merkki SeurjTilt 12 lopuksi voit vielä minimoid tuloksen M jos thdot 46
Esimerkki 17. Determinisoidn epädeterministinen utomtti M q 0 q 1 q 2 q 3 Esimerkiksi tiln s 2 = {q 0, q 2 } seurj syötemerkillä on til s 3 = {q 0, q 1, q 3 }, sillä s 3 sisältää täsmälleen kikki joukkoon s 2 kuuluvien lkioiden seurjt merkillä : s 3 s 2 q 0 q 2 q 0 q 3 q 1 1. Aloitetn lisäämällä lkutil {q 0 } j lskemll siitä lähtevät siirtymät. {q 0 } = s 0 {q 0, q 1 } {q 0 } 2. Stiin uusi til {q 0, q 1 } j jtketn sillä. {q 0 } = s 0 {q 0, q 1 } {q 0 } {q 0, q 1 } = s 1 {q 0, q 1 } {q 0, q 2 } 3. Stiin uusi til {q 0, q 2 } j jtketn sillä. {q 0 } = s 0 {q 0, q 1 } {q 0 } {q 0, q 1 } = s 1 {q 0, q 1 } {q 0, q 2 } {q 0, q 2 } = s 2 {q 0, q 1, q 3 } {q 0 } 4. Stiin uusi til {q 0, q 1, q 3 } j jtketn sillä... 5.... j iknn sdn lopputulos: {q 0 } = s 0 {q 0, q 1 } {q 0 } {q 0, q 1 } = s 1 {q 0, q 1 } {q 0, q 2 } {q 0, q 2 } = s 2 {q 0, q 1, q 3 } {q 0 } {q 0, q 1, q 3 } = s 3 {q 0, q 1, q 3 } {q 0, q 2, q 3 } {q 0, q 2, q 3 } = s 4 {q 0, q 1, q 3 } {q 0, q 3 } {q 0, q 3 } = s 5 {q 0, q 1, q 3 } {q 0, q 3 } 47
q 0 q 0, q 1 q 0, q 2 q 0, q 1, q 3 q 0, q 2, q 3 q 0, q 3 Esimerkki 18. Determinisoidn kkoston Σ = {M, I, U} seurv epädeterministinen utomtti: M,I,U M,I,U M I 0 1 2 U 3 Rtkisu: Kun generoidn koko potenssijoukko eli käytetään suor mtemttist määritelmää eikä while-lgoritmi niin sdn tulokseksi: joss M I U A {0} {0, 1}=E {0}=A {0}=A B {1} {2}=C C {2} {3}=D D {3} {3}=D {3}=D {3}=D E {0, 1} {0, 1}=E {0, 2}=F {0}=A F {0, 2} {0, 1}=E {0}=A {0, 3}=G G {0, 3} {0, 1, 3}=L {0, 3}=G {0, 3}=G H {1, 2} {2}=C {3}=D I {1, 3} {3}=D {2, 3}=J {3}=D J {2, 3} {3}=D {3}=D {3}=D K {0, 1, 2} {0, 1}=E {0, 2}=F {0, 3}=G L {0, 1, 3} {0, 1, 3}=L {0, 2, 3}=M {0, 3}=G M {0, 2, 3} {0, 1, 3}=L {0, 3}=G {0, 3}=G N {1, 2, 3} {3}=D {2, 3}=J {3}=D O {0, 1, 2, 3} {0, 1, 3}=L {0, 2, 3}=M {0, 3}=G S P(Q) ovt svutettvt tilt ne jokt myös while-lgoritmi tuottisi P(Q) \ S ne muut eli svuttmttomt tilt. Tulos tilsiirtymäkvion johon on piirretty vin svutettvt tilt: 48
I U,I M I, U A M E I F U G U M M M L U M I I, U M Se minimoitun: U,I M I M,I,U A M U E I F U G M Tehtävä 17. Determinisoi seurv utomtti:, 1 2 Esimerkki 19. Determinisoidn seurv utomtti: 0 0 c 0 1 1 d 49
Siinä on sekä -siirtymiä että tvllinen epädeterministinen siirtymä (tilst merkillä 0). 1. Alkutilksi sdn E({}) = {,...} = {, c,...} = {, c,d}. 2. Tästä lkutilst päästään tiloihin δ({, c,d}, 0) = E(δ(, 0) δ(c, 0) δ(d, 0)) = E({, } {c} ) = E({,,c}) = {,, c, d} ensimmäinen uusi til δ({, c,d}, 1) = {d} toinen uusi til. 3. Käsitellään nämä uudet tilt vikkp niiden luontijärjestyksessä. Siten: δ({,,c, d}, 0) = {,,c, d} δ({,,c, d}, 1) = {c, d} sm vnh til kolms uusi til. 4. Sitten: 5. Sitten: δ({d}, 0) = δ({d}, 1) = δ({c, d}, 0) = {c, d} neljäs uusi til. sm vnh til δ({c, d}, 1) = {d} toinen vnh til. 6. Kikki syntyneet tilt on nyt käsitelty, j sdn lopputulos: til 0 1 {, c,d} {,,c, d} {d} {,,c, d} {,,c, d} {c, d} {c, d} {c, d} {d} {d} {, c,d} 0 1 0 {,,c, d} {d} 1 1 0 1 0 {c, d} 0 1 50
Tehtävä 18. Determinisoi seurv utomtti: 1 2 3, Tehtävä 19. Determinisoi seurv utomtti: 1 2, 3 Hhmontunnistuksest Epädeterministisellä utomtill voi helposti kuvt hhmontunnistusongelmi: esiintyykö nnettu merkkijono y syötteessä x? Mikä thns yksittäinen merkkijono (eli yksilkioinen kieli) y = y 1 y 2 y 3...y m Σ voidn tunnist yksinkertisell epädeterministisellä utomtill: y 1 y 2 y 3 y m... Σ Σ Kun tällinen utomtti determinisoidn, tilojen lukumäärä m+1 ei muutu. Tällisen epädeterministisen utomtin kikki lskentpolkuj voi myös simuloid tehokksti, jos m = O(tietokoneen ittisyys eli nykyään 32 ti 64) ns. shift-or/shift-nd lgoritmill. Mutt yleisessä tpuksess (eli kun kyseessä on mielivltinen säännöllinen kieli) voi tilojen määrä ksv phimmilln eksponentiliseksi, onhn P(Q) = 2 Q. Toislt yksinkertiselle hhmontunnistusongelmlle deterministinen utomtti ostn muodost suornkin jss O(m), ns. Knuth-Morris-Prtt lgoritmi. 51
Ensimmäinen ekskursio: NFA:n simulointi Olkoon pitkä teksti t j lyhyt merkkijono p ASCII-kkoston merkkijonoj, j n = t, m = p, j m w, missä w on ittien lukumäärä int-muuttujss (esim. 32 ti 64). Seurv C-kielinen funktio kertoo kikki kohdt missä p esiintyy t:ssä. Algoritmi perustuu NFA:n simuloimiseen, j se toimii jss O(n) (nyt kun m w). Yleisesti otten mielivltisen NFA:n tehoks simuloiminen on kuitenkin voin ongelm. Miten lgoritmi toimii??? Tämä ei kuulu kurssiin. Ongelm on mhdollist rtkist myös keskimääräisessä jss O(n log Σ (m)/m)... Toinen ekskursio: Knuth Morris Prtt Olkoot edelleen t j p ASCII kkoston merkkijonoj, j n = t, m = p. Seurv C-kielinen funktio kertoo kikki kohdt missä p esiintyy t:ssä. Algoritmi perustuu deterministiseen utomttiin. Tässä on kuitenkin -siirtymiä, mutt näitä ei seurt jos on toinenkin vihtoehto, joten hrutumist ei tphdu... Algoritmi toimii jss O(n+m). Miten se täsmällisesti otten toimii??? Tämäkään ei kuulu kurssiin. Epädeterminismin sovelluksi Näemme pin, että epädeterminismi yksinkertist huomttvsti moni utomttikonstruktioit. Sillä on käyttöä tietojenkäsittelytieteessä ljemminkin, esim. Rinnkkisjärjestelmät: Asynkronisess lskennss eri prosessien suoritusjärjestys ei ole tiuksti kontrolloitviss. Ajttelemme siis, että suoritusjärjestys määräytyy epädeterministisesti j vdimme esim. että järjestelmä ei s lukkiutu millään suoritusjärjestyksellä. Lskennn vtivuus: Monille tärkeille etsintä- j optimointiongelmille on helppo esittää epädeterministinen rtkisu, mutt sen tehoks simuloiminen deterministisellä (eli oikell) tietokoneell on voin ongelm. Vrt. edellä: NFA:n muuntminen DFA:ksi stt iheutt tilojen lukumäärän eksponentilisen ksvun. (Mutt ei in, kuten nähtiin.) 4.8 Säännölliset lusekkeet j kielet Säännöllisellä lusekkeell (regulr expression) voi kuvill, minkä muotoisi merkkijonoj hyväksytään. Unix-komennoll grep (=glol regulr expression prser) voidn etsiä tiedostost säännöllisellä lusekkeell kuviltuj osi. Esim. Etsi tekstitiedostost lp.txt rivit, joill esiintyy sn utomtti : egrep utomtti lp.txt 52
Etsi tekstitiedostost lp.txt rivit, joill esiintyy sn utomtti ti sn kieli : egrep \(utomtti\ kieli\) lp.txt Etsi tekstitiedostost lp.txt rivit, joill esiintyy äärellinen utomtti ti khviutomtti : egrep \(äärellinen \ khvi\)utomtti lp.txt Etsi tekstitiedostost tiedosto.txt osoitteit, jotk ovt muoto [xktu ti xtie ][sunnon egrep [A-ZÅÄÖ][-zåäö]*\(ktu\ tie\) [0-9][0-9]* tiedosto.txt Monien editoreiden serch j serch & replce -komennot sllivt myös säännölliset lusekkeet; smoin jotkut ohjelmointikielet sisältävät regexp kirjstoj. Eräs mhdollisuus grep-toiminnon toteuttmiseksi olisi seurv: 1. Muodostetn äärellinen utomtti, jok hyväksyy tsn selliset merkkijonot, joiss esiintyy nnettu hhmo. 2. Seltn syöte rivi kerrlln käyttämällä tätä utomtti, j tulostetn hyväksytyt rivit. Kysymys: Kuink monimutkisi hhmoj tällä peritteell voidn käsitellä? Esim. edellä muodostettiin hhmoist utomtti j kieli uusi hhmo ti-operttorill. Smoin sllittiin hhmon ktenointi itsensä knss ([0-9]*). Kuink voimkkt operttorit voidn siis slli? Kielten yhdiste, tulo j sulkeum Olkoot A j B kkoston Σ kieliä. Muistetn, että kielet ovt merkkijonojoukkoj Σ. Kielten A j B yhdiste on kieli suorn joukko-opist. A B = {x Σ : x A ti x B} Jos yhdistettä jttelee eräänlisen yhteenlskun niin sen noll on kosk sen lisäämisellä ei ole vikutust: X = X = X x + 0 = 0 + x = x. Kielten A B tulo on kieli AB = {xy Σ : x A, y B} eli ne merkkijonot xy jotk lkvt jollkin kielen A merkkijonoll x j jtkuvt jollkin kielen B merkkijonoll y. 53
Jos tulo jttelee eräänlisen kertolskun niin sen ykkönen on {} kosk {} X = X {} Vstvsti nollll kertominen noll : = X 1 x = x 1 = x. X = X = 0 x = x 0 = 0. Tyhjä kieli j tyhjä merkkijono ovt eri sioit, niillähän on eri tyyppikin. Kielessä {} on yksi lkio, nimittäin, joten se ei ole tyhjä. Kielen A potenssit A k, joss k N, määritellään itertiivisesti: A 0 = {} A k = AA k 1 Kielen A sulkeum on kieli = AAA...A }{{} k kert = {x 1 x 2 x 3...x k : x i A i = 1,...,k} (k 1) A = k=0 A k = {} A AA AAA... = {x 1...x k : k 0, x i A i = 1,...,k} Tässä vihdoin on moniss pikoissä käyttämämme merkinnän potenssiin trkoitettu sisältö: (...) koostuu niistä merkkijonoist, jot sdn liimilemll yhteen äärellisen mont tämän kuvuksen (...) mukist merkkijono. Erikoistpuksen = {}... = {} kosk noll(kin) potenssiin noll on yksi. Esimerkki 20. Trkstelln kkoston {,...z, 0,...,9} kieliä A = {, } j B = {01, 02}. Nyt A B = {,, 01, 02} AB = {01, 02, 01, 02} A = {,,,,,,,,,,,,...} 54
Säännöllinen luseke Määritelmä 3. Akkoston Σ säännölliset lusekkeet (regulr expressions) määritellään induktiivisesti säännöillä: Vkiot j ovt jokisen kkoston säännöllisiä lusekkeit; kkoston jokinen merkki Σ on sen säännöllinen luseke; jos r j s ovt kkoston Σ säännöllisiä lusekkeit, niin myös (r s), (rs) j r ovt sen säännöllisiä lusekkeit; j muit kkoston Σ säännöllisiä lusekkeit ei ole. Akkoston Σ säännöllinen luseke r kuv kielen L(r) Σ : L( ) = L() = {} L() = {} kikill Σ L((r s)) = L(r) L(s) L((rs)) = L(r)L(s) L(r ) = (L(r)) Esimerkki 21. Akkoston {, } säännöllisiä lusekkeit ovt esimerkiksi r 1 = (()), r 2 = (), r 3 = ( ), r 4 = (( ())). näiden lusekkeiden kuvmt kielet ovt L(r 1 ) = ({}{}){} = {}{} = {}; L(r 2 ) = {} = {,,,,...} = {() i i 0}; L(r 3 ) = {}({}) = {,,,,...} = { i i 0}; L(r 4 ) = ({}{, }) = {, } = {,,,,,...} = {x {, } kutkin -kirjint x:ssä seur 1 ti 2 -kirjint } Lyhennysmerkintäsopimuksi Sulkumerkkejä voidn vähentää seurvill säännöillä: Operttoreist sitoo vhvimmin, sitten tulo, j heikoimmin. Yhdiste- j tulo-opertioiden ssositiivisuus: L(((r s) t)) = L((r (s t))) L(((rs)t)) = L((r(st))). 55
Käytetään tvllisi kirjsimi mikäli seknnuksen vr merkkijonoihin ei ole. Esim. edellisen esimerkin 21 lusekkeet r 1 = (()), r 2 = (), r 3 = ( ), r 4 = (( ())) yksinkertisemmin: r 1 =, r 2 = (), r 3 =, r 4 = (( )) Lyhennysmerkintä r + trkoitt toist r inkin kerrn. Siten r + = rr = r r. Esim. jos d = (0... 9), niin d + (ti dd ) trkoitt, että merkkijono koostuu yhdestä ti usemmst numeromerkistä. Säännöllinen kieli Snomme, että kieli on säännöllinen, jos se voidn kuvt jollkin säännöllisellä lusekkeell. Toisin snoen, kieli A on säännöllinen, jos on jokin säännöllinen lusele r joll L(r) = A. Esimerkki 22. Olkoon kkosto Σ = {,, c,...}. Säännöllisen lusekkeen Σ utomttiσ kuvm kieli on niiden merkkijonojen joukko jotk sisältävät osmerkkijonon utomtti. Siis tämä kieli on säännöllinen. Esimerkki 23. Olkoon Σ = {A,B,C,...,Ö,,,c,...,ö,0,1,2,...,9, }. Osoite on muoto (Ll )(ktu tie) dd (l )(dd ) ddddd Ll joss d on lyhenne lusekkeelle (0 1 2... 9) l on lyhenne lusekkeelle ( c... ö) eli pienille kirjmille ( letters ), j L on lyhenne lusekkeelle (A B C... Ö) eli suurille kirjimille ( LETTERS ). Huom: Monet regexp -kirjstot j -työklut lisäävät ominisuuksi jotk eivät ole säännöllisiä (kuten esimerkiksi rjoittmttomt viitteet tksepäin, NP-täydellinen ongelm...). Tällä kurssill esitetellään nämä idot säännölliset lusekkeet ilmn sellisi lisäyksiä. Esimerkki 24. Ohjelmointikielen C etumerkittömät liukuluvut (jotk ovt tyyppiä flot, doule ti long doule) määritellään seurvsti: (kokonisos).(desimlios) (e ti E) [+ ti ] (eksponentti) [suffiksi] merkintä [...] trkoitt että kyseinen os voi myös puuttu kokonisos j desimlios koostuvt digiteistä joko kokonisos ti desimlios voi puuttu (mutt eivät molemmt) 56
joko (i) desimlipiste ti (ii) (e ti E) j eksponentti voivt puuttu (mutt eivät molemmt) suffiksi: F ti f: flot, L ti l: long doule, muuten doule Säännöllinen luseke (ilmn suffiksej): (d +.d.d + )( ((e E)(+ )d + )) d + (e E)(+ )d + Kieleen kuuluvt esim. seurvt merkkijonot: 12.,.12, 1.2, 1.2E3, 1.2e3, 1.2E-3, 1E2, 1e23. Tehtävä 20. Trkstelln seurvi kkoston Σ = {, } kieliä. Ann kustkin kielestä kksi merkkijono, jotk kuuluvt kieleen, j kksi, jotk eivät kuulu kieleen! 1. 2. () 3. 4. () 5. ( ) 6. Σ Σ Σ Σ Tehtävä 21. Etsi lyhyin merkkijono, jok kuuluu seurvn lusekkeen kuvmn kieleen! 1. ( ) 2. ( () ) 3. ( )( ) Tehtävä 22. Muodost seurvi kieliä vstvt säännölliset lusekkeet: 1. {w {, } : w:n kolmnneksi viimeinen merkki on } 2. {w {, } : w sisältää joko merkkijonon ti } 3. {w {, } : w sisältää prillisen määrän merkkiä } 4. {w {, } : w:n pituus on priton} 5. {w {, } : w:ssä on 3:ll jollinen määrä merkkiä } Tehtävä 23. Esitä yksinkertisemmss muodoss seurvt lusekkeet (eli nn luseke, jok yhä kuv smn kielen, mutt joss on vähemmän operttoreit): 1. (0 1 01 11) 2. (0 10 ) 3. 1 (011 ) 1 (011 ) 0 57
Säännöllisten lusekkeiden sieventäminen Säännöllisillä kielillä on yleensä useit vihtoehtoisi kuvuksi, esim.: Σ = L(( ) ) = L(( ) ) = L( ( ) ( ) ) =... Merkitään r s, kun L(r) L(s), eli kun säännollisen lusekkeen r kuvm kieli on os säännöllisen lusekkeen s kuvm kieltä. Säännölliset lusekkeet r j s ovt ekvivlentit, merkitään r = s, silloin kun r s j s r, eli kun L(r) = L(s). Lusekkeen sievennys = yksinkertisimmn ekvivlentin lusekkeen määritys. Tässä luontev yksinkertisuuden mitt on sen sisältämien operttoreiden lukumäärä sen pituus kirjoitettun. Sievennyssääntöjä Muistisääntö: on hiemn kuin yhteenlsku, j on hiemn kuin 0. Tulo on hiemn kuin kertolsku, j on hiemn kuin 1. r r = r (mutt rr r kun r, ) r (s t) = (r s) t r(st) = (rs)t r s = s r r(s t) = rs rt (r s)t = rt st r = r = r r = r (mutt r r kun r ) = r = r r = r + r = (r ) (r ) = r Jos L(s) niin kielten välisen yhtälön x = xs t pienin rtkisu (osjoukkoreltion suhteen) on kieli x = ts. Itse siss tämän yhtälön pienin rtkisu rvoll t = onkin opertion s lgerllinen määritelmä. 58
Tvlliset joukko-opertiot vs. säännöllisten kielten opertiot Olkoot A = {, } j B = {c, d}. Joukot Kielet A B = {,,c, d} A B = {,,c, d} krteesinen tulo A B = tulo AB = {(, c), (, d), (, c), (, d)} {c, d,c, d} potenssijoukko P(A) = sulkeum A = {, {}, {}, {, }} {,,,,,,,,,,,,,,,,,,,...} P(X) = 2 n, kun X = n X =, kun X =n Miten osoitt, että L(r) = L(s)? Mtemttinen rtkisutp on osoitt, että 1. L(r) L(s) eli r s, j 2. L(s) L(r) eli s r. Ti helpommin (mutt ehkä työläämmiin) vstvill utomteill: 1. Muodost minimliset ääreelliset deterministiset utomtit lusekkeille s j r. 2. Jos utomtit ovt (tilojen nimiä lukuunottmtt) smt, niin kieletkin ovt smt onhn minimlinen deterministinen utomtti on yksikäsitteinen). (Johdttelev) kysymys: miten lusekkeest voidn muodost utomtti? (Vstus: selviää pin...) 4.9 Säännöllisten kielten sulkeumominisuudet Mtemtiikss snotn että jokin joukko X on suljettu jonkin opertion (kuten lskutoimituksen) suhteen, jos soveltmll opertiot joukon X lkioihin sdn tulokseksi in joukon X lkioit eli jos opertio ei vie pois joukost X. Esimerkiksi luonnollisten lukujen joukko N on suljettu yhteenlskun suhteen, kosk m + n N jokisell m, n N. Se ei kuitenkn ole suljettu vähennyslskun suhteen, kosk esimerkiksi 5 8 N, vikk 5, 8 N. Olkoon joukko X = kikki säännölliset kielet (eli se on merkkijonojoukkojen joukko). Minkälisten opertioiden suhteen se on suljettu? Luse 3. Olkoot L 1 j L 2 kkoston Σ säännöllisiä kieliä. Tällöin myös yhdiste L 1 L 2 leikkus L 1 L 2 ktentio eli tulo L 1 L 2 59
komplementti L 1 = Σ \ L 1 erotus L 1 \ L 2 (Kleenen) sulkeum (L 1 ) (Stephen Kleene oli jälleen yksi merkittävä loogikko.) käänteiskieli (L 1 ) R = {w R : w L 1 } eli joss kikki kielen L 1 merkkijonot on kirjoitettu tkperin ovt myös smn kkoston Σ säännöllisiä. Toisin snoen, säännöllisten kielten joukko on suljettu kikkien näiden opertioiden suhteen. Todistus: Jtkoss niitä osoitetn vstvien utomttien j/ti De Morgnin lkien vull. Huom että luse 3 on yksisuuntinen: Esimerkiksi yhdiste L 1 L 2 voi oll säännöllinen, vikk sen ost L 1 j L 2 eivät ole. Esimerkiksi säännöllinen kieli voidn muodost osist j L( ) = L 1 L 2 L 1 = { i j : i j} L 2 = { i j : j i} joist kumpikn ei ole säännöllinen (mikä voidn osoitt pumppuslemmll). Esimerkki 25. Lditn utomtti, jok tunnist kielen L(M) = {w {, } : w ei sisällä merkkijono }. Lditn ensin sen komplementtikielen tunnistv deterministinen utomtti, jok siis tunnist kielen L(M) = {w {, } : w sisältää merkkijonon }. Siitä sdn hluttu utomtti vihtmll hyväksyvät tilt hylkääviksi j päinvstoin.,, 0 1 2 3 0 1 2 3 Huom: tämä komplementti-konstruktio edellyttää, että mhdolliset virhetilt on eksplisiittisesti esitetty, kosk komplementtiutomtiss niistäkin tulee hyväksyviä tiloj. 60
Sulkeum yhdisteen suhteen Kysymys: Miten voimme osoitt, että khden säännöllisen kielen L 1 j L 2 yhdiste L 1 L 2 on myöskin säännöllinen kieli? Vstus: Automtin vull, jok tunnist kielen L 1 L 2. Esim. utomtit jotk hyväksyvät merkkijonot jotk loppuvt 0, j jotk loppuvt 01: 0-utomtti 01-utomtti Kysymys: Miten muodostetn utomtti jok hyväksyy merkkijonot, jotk loppuvt 0 ti ti 01? Erityisesti: Miten sellinen utomtti voidn muodost näistä khdest nnetust utomtist? Vstus: Esimerkiksi -siirtymiä käyttäen. pltn siihen tuonnempn... Trkstelln merkkijono 00101. Ensimmäinen utomtti hylkää sen: Toinen utomtti hyväksyy sen: 0 0 1 0 1. A 0 B 0 B 1 C 0 B 1 C. Siis se kuuluu kielten yhdisteeseen, joten se pitää hyväksyä. Kysymys: Voisiko lskennt litt peräkkäin? Vstus: Ei voi, kosk jokinen syötemerkki luetn vin kerrn, eikä siihen pääse enää uudestn käsiksi. Kysymys: Entä rinnkkin ti päällekkäin? Miten? Vstus: Siten, että sdn hyväksyvä lskent (, A) 0 (, B) 0 (, B) 1 (, C) 0 (, B) 1 (, C) joss pri (p, q) trkoitt 0-utomtti on tilss p j 01-utomtti tilss q. Vlitn yhdisteutomtille tiljoukoksi lkuperäisten utomttien tiljoukkojen krteesinen tulo siinähän ovt juuri kikki tälliset prit: {, } {A, B, C} = {(, A), (, B), (, C), (, A), (, B), (, C)} 61
Kuv 12: Khden utomtin tilojen krteesinen tulo. Määritellään siirtymäfunktio näiden prien välillä komponenteittin: yhdisteutomtiss on (p, q) (r, s) kun 0-utomtiss on p r j 01-utomtiss q s silloinhn ne toimivt yhtä ik. Grfisesti (kuvss 12) tämän voi esittää littmll yhdisteutomtin tilt tulukoksi, joss ensimmäisen utomtin tilt vstvt rivejä toisen utomtin tilt vstvt srkkeit. Vstvsti ensimmäinen utomtti nt siirtymien pystykomponentin j toinen utomtti vkkomponentin. Alkutilksi tulee (, A) eli lkuperäisten utomttien lkutilojen pri. Kosk kyseessä on unioni, hyväksyviä tiloj ovt kikki, joiss esiintyy ti C eli inkin toisen lkuperäisen utomtin hyväksyvä til. Sm uudestn mutt toisell tvll. Voimme yhdistää utomtit suorn -siirtymillä. Nyt utomtti rv luksi epädeterministisesti, kumpn kielistä L 1 viko L 2 syötettä verrtn. 62
Aikisemmt hyväksyvät tilt muuttuvt hylkääviksi mutt niistä on on - siirtymä uuteen hyväksyvään tiln. 1 0 0 1 X 1 0 Y 0 1 A B C 0 1 1. Voimme vielä determinisoid utomtin: 2. J minimoid: 3. Lopputulos: 0 1 {X,, A} {, B, Y } {, A} {, A} {, B, Y } {, A} {, B, Y } {, B, Y } {, C, Y } {, C, Y } {, B, Y } {, A} 0 1 {, A} {, B, Y } {, A} {, B, Y } {, B, Y } {, C, Y } {, C, Y } {, B, Y } {, A} 1 {, A} 0 0 1 {, B, Y} {, C, Y} 0 1 Sm yleisemmin. Yhdistetään utomtit M s j M t utomtiksi jok tunnist kielen L(M s ) L(M t ): 63
M s M t Trvitsemme vielä utomtit kielelle L(M)... M s...j kielelle L(M s )L(M t ): M s M t 64
Muistutus: De Morgnin säännöt Tuttuj koulumtemtiikst j/ti diskreeteistä rkenteist j/ti mtemttisest logiikst. Ilmisevt joukko-opiss, että komplementointi kääntää yhdisteet leikkuksiksi j päinvstoin: A B = A B A B = A B. Esimerkiksi jos A j B ovt säännöllisiä kieliä, niin: 1. Myös niiden komplementit A j B ovt (hyväksyvät tilt hylkääviksi j päinvstoin -konstruktion vull esimerkistä 25). 2. Siten niiden yhdiste A B on (kuten edellä nähtiin khdellkin eri tvll). 3. Siten De Morgnin säännön nojll myös A B on. 4. Siten myös A B on (kuten skel 1). 4.10 Äärelliset utomtit j säännölliset kielet Osoitetn seurv tärkeä tulos: Kieli on säännöllinen Kieli voidn tunnist äärellisellä utomtill. Ide: 1. Kieli L(r) on säännöllinen L(r) voidn tunnist äärellisellä utomtill M: Muodostetn säännöllistä lusekett r vstv (epädeterministinen) - utomtti. Hluttess tämä epädeterministinen utomtti voidn vielä determinisoid (j minimoid). 2. Kieli L(M) voidn tunnist äärellisellä utomtill M L(M) on säännöllinen: Trkstelln äärellisten utomttien ljennost, lusekeutomttej. Jos väite pätee lusekeutomteille, se pätee myös tvllisille äärellisille utomteille. Redusoidn lusekeutomtti korkeintn 2-tiliseksi utomtiksi, jost voidn luke suorn vstv säännöllinen luseke. 4.10.1 Säännöllisestä lusekkeest utomtti Luse 4. Jokinen säännöllinen kieli voidn tunnist äärellisellä utomtill. Todistus: Annetn kuvn 13 eräs menetelmä, joll voidn muodost mielivltist säännöllistä lusekett r vstv -utomtti M r, joll L(M r ) = L(r). (Moni muitkin menetelmiä on.) Esimerkki 26. Muodostetn säännöllistä lusekett (( ) ( )) vstv äärellinen utomtti. (Vert tulost tehtävään 13.) 65
r = : r = s t: r = : M s r =, Σ M t r = st: r = s : M s M t M s Kuv 13: Säännöllisestä lusekkeest äärelliseksi utomtiksi. M M ( ) ( ) M, Tehtävä 24. Muodost säännöllistä lusekett (0 1) 0 (0 1) 01 = (0 1) (0 01) = (0 1 ) (0 01) vstv äärellinen utomtti. 66
Tehtävä 25. Muodost C-kielen liukuluvut tunnistv utomtti säännöllisestä lusekkeest (d +.d.d + )( ((e E)(+ )d + )) d + (e E)(+ )d + joss d = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ovt 10-järjestelmän numeromerkit. Toislt ekvivlentti säännöllinen luseke voidn esittää monell tp, j osutomtit jost lopullinen rtkisu sdn voivt oll erilisi. Eli rtkisuj on erilisi (siihen skk kunnes on determinisoitu j minimoitu). 4.10.2 Lusekeutomtit Ide: Sllitn siirtymät yhden syötemerkin Σ sijn kokonisell kkoston Σ säännöllisellä lusekkeell r. Otimme jo iemmin ensiskeleen tähän suuntn slliessmme -siirtymät. Tällinen siirtymä q r q siirtyy tilst q tiln q kuluttmll syötteestä seurvksi jonkin merkkijonon s L(r). Kyeessä on siis epädeterministinen utomtti se s kulutt minkä thns sellisen s Σ. Esimerkiksi δ(q, ( ) ) = q sllii siirtymän tilst q tiln q millä thns kkoston Σ = {, } merkkijonoll. Määritelmä 4. Merkitään kkoston Σ säännöllisten lusekkeiden joukko RE Σ. Lusekeutomtti on viisikko M = (Q, Σ, δ,q 0, F) joss siirtymäfunktio δ onkin äärellinen kuvus δ : Q RE Σ P(Q). Yhden skelen tilnnejohto määritellään nyt seurvsti: (q, w) (q, w ) M jos q δ(q, r) jollkin sellisell r RE Σ, että w = zw, z L(r). Muut määritelmät ovt smt kuin iemmin. Automtist säännöllinen luseke Luse 5. Jokinen äärellisellä utomtill tunnistettv kieli on säännöllinen. Todistus: Riittää osoitt, että jokinen lusekeutomtill tunnistettv kieli on säännöllinen. (Toinen suunthn on trivili.) Ide: Eliminoidn lusekeutomtist M tiloj, kunnes siitä voidn luke vstv säännöllinen luseke sen hyväksymälle kielelle L(M). 67
q i r q s q j q i rs q j t q i r s rt s q q i q j q j Kuv 14: Reitin oikisu lusekeutomtiss. 1. Yhdistä utomtin M lopputilt yhdeksi uudeksi lopputilksi -siirtymillä: 2. Tiln q välittömät edeltäjät ovt ne tilt q i joist on jokin siirtymä siihen eli q r i q seurjt ovt ne tilt q j joihin on jokin siirtymä siitä eli q s q j. 1 while jäljellä on muitkin kuin lku- j lopputil 2 do q vlitse jokin (mikä vin) sellinen til poistettvksi 3 for jokiselle tiln q välittömälle edeltäjälle q i 4 do for jokiselle tiln q välittömälle seurjlle q j 5 do oikise reitti q i r q s q j ohittmn q kuvn 14 mukn 6 yhdistä rinnkkiset siirtymät q i r q j j q i s q j kuvn 15 mukn Huom: On sllittu että q i = q j. Silloin syntyy silmukoit. 68
q i r q j q i r s q j s Kuv 15: Rinnkkisten siirtymien yhdistäminen lusekeutomtiss. r r r 1 r 2 r 3 r 1r 2 (r 3 r 4 r 1r 2 ) r 4 Kuv 16: Yksinkertisest utomtist säännölliseksi lusekkeeksi. 69
3. Lue lopputuloksen jäljelle jääneestä yksinkertisest utomtist sitä vstv säännöllinen luseke kuvn mukn. Esimerkki 27. Luetn säännöllinen luseke seurvst utomtist: Tehtävä 26. Lue säännöllinen luseke seurvst utomtist:, 1 2 3 70
4.11 Säännöllisten kielten rjoituksist Kysymys: Kuink voidn hvit, ettei ongelm rtkekn äärellisisllä utomteill? Eli ettei vstv formlikieli olekn säännöllinen? Esimerkki 28. Onko tspinoisten sulkujonojen muodostm kieli L mtch = {( k ) k : k 0} säännöllinen? Yritetään tehdä sille utomtti: ( ( ( ( q 0 q 1 q n 1 q n ) ) ) ) q 2n q n+2 q n+1 q 2n 1 ) ( ( ( ( q 0 q 1 q n 1 q n ) ) ) ) Mutt entäpä jos sisäkkäisiä sulkuprej onkin n + 1 kpl.? Automttien rjllinen muisti Ääärellinen utomtti muist merkkijonon lkuosn vin tilojens vull. Se ei siis voi pitää kirj kikist tpmistn merkeistä. Ääretön kieli voi oll säännöllinen vin jos siinä on jokin toistuv rkenne. Automtiss silmukk, säännöllisessä lusekkeess sulkeum (...). Säännöllisten kielten pumppuslemm formlisoi tämän hvinnon. Kielen osoittminen säännölliseksi ei ole lskennllisesti rtkev ongelm, vn siihen trvitn ihmisen mtemttist intuitiot on keksittävä sille utomtti ti luseke ti todistettv se sulkeumominisuuksien vull säännöllisiksi tiedetyistä kielistä ti... Stt näyttää ilmeiseltä, että äärellisen muistin jtuksen soveltminen olisi jotenkin intuitiivisesti selvää, eli että muistivtimukset näkisi jotenkin suorn. Kieli A = {w {0, 1} : w sisältää yhtä mont noll j ykköstä} ei ole säännöllinen (todistetn pin...). Mutt kieli onkin säännöllinen. B = {w {0, 1} : w:ssä esiintyy 01 j 10 yhtä mont kert} 71
Tehtävä 27. Todist että tämä kieli B on säännöllinen. Vihje: Mieti merkkijonon w ensimmäistä j viimeistä merkkiä... Luse 6. Kieltä C = {0 n 1 n : n N} ei voi tunnist äärellisellä utomtill. Todistus: Tehdään vstoletus, eli oletetn, että C voitisiin tunnist jollin äärellisellä utomtill M, eli siis L(M) = C. Olkoon tässä tuntemttomss utomtiss M k = Q til, j m = k/2. Kosk L(M) = C, niin silloin myös syöte s = 0 m 1 m L(M). Tämän syötteen s pituus s = 2m k. Merkitään sen merkkejä s = s 1 s 2...s 2m. Syötteellä s utomtti käy yhteensä 2m + 1 tilss, mukn lukien lkutil (joist os (ti kikki) voivt oll smoj). Toisin snoen, utomtti käy tiloiss: r 1 0 r 2 0 0 r 1 m+1 r 1 1 m+2 r 2m+1. Eli lkutil q 0 = r 1 j δ(r i, s i ) = r i+1, missä r i Q. Hvinto: Q = k < 2m + 1 joten jonoss r 1...r 2m+1 inkin yksi til esiintyy usemmin kuin kerrn, eli r i = r j jollin i < j. Siis merkkijonoll s i...s j 1 utomtti tekee silmukn tilst r i tkisin tiln r i = r j : x = s 1...s i 1 r i = r j z = s j...s 2m r 1 r 2m+1 y = s i...s j 1 Automtti siis hyväksyy lkuperäisen jonon s = xyz = xy 1 z kiertämällä silmukn yhden kerrn. Merkitään vstv hyväksyvää lskent lyhyesti: r 1 x r i y ri z r 2m+1. Silmukn sisältävästä hyväksyvästä lskennst sdn uusi hyväksyvä lskent ohittmll silmukk: r 1 x r i z r 2m+1 Siis utomtti hyväksyy myös merkkijonon xy 0 z = xz. 72
Silmukk voidn myös toist mielivltisen mont kert: r 1 x r i y ri y ri z r 2m+1. r 1 x r i y ri y ri y ri z r 2m+1. Siis utomtti hyväksyy myös merkkijonot xy 2 z = xyyz, xy 3 z = xyyyz, xy 4 z = xyyyyz,... Kysymys: Kuuluuko merkkijono xy l z kieleen C = {0 n 1 n : n N} jokisell mhdollisell toistokertojen lukumäärällä l N? Trkstelln silmukn erilisi mhdollisi sijintej merkkijonon s keskikohdn suhteen: 1. i < j m + 1: nyt y = 0 j i. 2. i < m + 1 < j: nyt y = 0 m+1 i 1 j m 1. 3. m + 1 i < j: nyt y = 1 j i. Missään näistä tpuksist esimerkiksi xy 2 z ei kuulu kieleen C: tpuksess 1 siinä on liik nolli tpuksess 2 se on muoto 0...01...10...01...1 tpuksess 3 siinä on liik ykkösiä. Kosk utomtti kuitenkin hyväksyy merkkijonon xy 2 z, tämä on ristiriit oletuksen C = L(M) knss. Siis kieltä C ei voi tunnist k-tilisell äärellisellä utomtill millään k, eli kieli C ei ole säännöllinen. Edellisen todistuksen peruside oli osoitt, että jos M on k-tilinen utomtti, niin kielellä L(M) on pumppuspituus k: Määritelmä 5. Kielellä A on äärellinen pumppusominisuus, jos on olemss sellinen p, että mikä thns s A, joll s p, voidn esittää muodoss s = xyz, missä 1. xy i z A kun i = 0, 1, 2,..., 2. y > 0 j 3. xy p. Tällöin p on (eräs) kielen A pumppuspituus. Siis x = j z = ovt sllittuj, mutt y (ehto 2, muuten pumpttvuus olisi trivili). Kun kielellä on äärellinen pumppusominisuus, millä thns riittävän pitkällä merkkijonoll s on epätyhjä keskios y, jot pumppmll sdn uusi kieleen kuuluvi merkkijonoj xy 2 z,xy 3 z,... Luse 7 (Säännöllisten kielten pumppuslemm). Jokisell säännöllisellä kielellä on äärellinen pumppusominisuus. 73
Todistus: Sivuutetn, ide on kuten edellisen luseen todistuksess yleistettynä mille thns säännölliselle kielelle. Intuitiivisesti, sm suomeksi: Äärettömän säännöllisen kielen tunnistvss utomtiss on silmukk siten, että 1. xy i z A: silmukk voidn kiertää mielivltisen mont kert i, j silti voidn päästä jonoll z hyväksyvään tiln. 2. y > 0: silmukk ei voi oll tyhjä, vn siihen pitää kuulu vähintään yksi ei-tyhjä siirtymä. 3. xy p: lskennn täytyy joutu silmukkn ennen kuin utomtist loppuvt tilt. Siis pumpputuvuusehto 2 trkoitt, että kieli sisältää merkkijonot xz, xyz, xyyz, xyyyz,... Ehdost 2 seur, että nämä jonot ovt toinen toistn pidempiä. Siis merkkijono y pumppmll sdn rjttomsti uusi kieleen kuuluvi merkkijonoj. Jos merkkijono s on pumpputuv, se kuuluu kieleen, kosk s = xy 1 z. Lisäksi se sisältää osjonon y, jonk poistminen ti monistminen tuott uusi kielen merkkijonoj. Ehdon 3 nojll tämä osjono y löytyy jonon s lkuosst, jonk pituus on p. Kielen pumpputuvuus trkoitt, että jokinen trpeeksi pitkä kieleen kuuluv merkkijono on pumpputuv. Äärellisellä kielellä voidn (j täytyy) vlit pumppuspituus p, jok on suurempi kuin kielen pisimmään merkkijonon pituus. Tällöin kielessä ei siis ole yhtään trpeeksi pitkää merkkijono... Pumppuslemmn soveltminen Kiinnostv vin äärettömille kielille (äärelliset kielet ovt in säännöllisiä). Pumppuslemmn mukn millä thns säännöllisellä kielellä A on pumppusominisuus, toisin snoen jollkin p N mille thns selliselle s A jok on riittävän pitkä eli s p on olemss jko s = xyz joll pumppusehdot 1 3 toteutuvt. Pumppuslemmll ei voi osoitt kielen säännöllisyyttä, vin epäsäännöllisyyden. (Eikä sitäkään in, kosk on olemss epäsäännöllisiä kieliä, joill on äärellinen pumppuspituus...) Iden todistus kontrpositioll, eli lemm käytetään käänteisesti ; A on säännöllinen A on pumpttviss A ei ole pumpttviss A ei ole säännöllinen Toisin snoen, on osoitettv, että mille thns p N on olemss sellinen s A, että s p j 74
mille thns sen jolle s = xyz jokin pumppusehdoist 1 3 jää toteutumtt. Siis luksi voimme itse vlit s sopivsti helpottmn todistust, mutt sitten meidän pitää käydä läpi kikki mhdolliset tvt jk vlitsemmme s osiin x, y j z j osoitt, että mikään ei toteut pumppusehtoj. Toisin snoen, kun hlutn todist kieli epäsäännölliseksi, tehdään vstoletus, eli oletetn se säännölliseksi, j osoitetn että tästä seur ristiriit...... jonk voi osoitt käyttämällä pumppuslemm......mutt jonk voi osoitt muutenkin: Esimerkiksi sulkeumominisuuksien vull ( plutetn ongelm tunnettuun kieleen). Esimerkki 29. Kieli C = {0 n 1 n : n N} ei ole säännöllinen. Todistus: Tehdään vstoletus että C olisikin säännöllinen. Silloin sillä olisi äärellinen pumppusominisuus, eli jokin vkio p siten, että jokinen inkin niin pitkä merkkijono s C (eli s p) jkutuu jotenkin osiin s = xyz jotk täyttävät ominisuuden 3 ehto. Me emme tiedä vkion p rvo, mutt me smme vlit sellisen merkkijonon s kuin hlumme (kunhn vlitsemme trpeeksi pitkän). Kun olemme vlinneet merkkijonomme s, niin me emme tiedä sen jost s = xyz muut kuin nämä 3 ominisuutt. Kosk tvoittelemme ristiriit, niin useimmiten knntt vlit s siten, että ehdot 2 j 3 ovt voimss, j osoitt että silloin ehto 1 ei enää sdkn voimn. Tässä todistuksess knntt vlit s = 0 p 1 p (ti jokin vielä pidempi) kosk silloin ehdot 2 j 3 kertovt meille pljon osien xy rkenteest: joss k > 0 mutt j + k p. x = 0 j y = 0 k z = 0 p (j+k) 1 p Kosk tämä järkeilymme ei olet näistä rvoist j j k yhtään mitään muut, niin olemme todellkin tulleet käyneeksi läpi smll kert kikki mhdolliset jot. Nyt ehdon 3 mukn (vikkp) i = 0 kert pumpttu merkkijono 0 j 0 p (j+k) 1 p = 0 p k 1 p C. Mutt toislt kielen C määritelmän mukn pitäisi oll kosk k > 0. smll merkkijonoll 0 p k 1 p C Tässä on etsimämme ristiriit jok todist, että vstväite olikin väärin, eli että lkuperäinen väite olikin oikein. 75
Pumppuslemmn ohell käytössämme ovt myös säännöllisten kielten sulkeumominisuudet (luse 3) j muut säännöllisiksi tunnetut kielet. Esimerkki 30. Osoit, että D = {w {0, 1} : w sisältää yhtä mont noll j ykköstä} ei ole säännöllinen. Todistus: Tehdään ts vstoletus: D on säännöllinen. Kieli 0 1 on säännöllinen (kosk se voidn tunnist kksitilisell utomtill). Siten kieli (0 1 ) D on säännöllinen (tunnettu sulkeumominisuus). Tämä on ristiriit, kosk (0 1 ) D on sm kuin C = {0 n 1 n : n N}, jok on iemmin todistettu epäsäännölliseksi esimerkissä 29. Esimerkki 31. Osoit, että kieli D = {w {0, 1} : w sisältää yhtä mont noll j ykköstä} ei ole säännöllinen. Todistus: Tehdään jälleen se vstoletus että D on säännöllinen. Edetään pumppuslemmll: Vlitn s = 0 p 1 p. Olkoon s = xyz D. Siis y j xy p, joten y koostuu yhdestä ti usemmst nollst. Kosk xyz D, niin xyyz sisältää nolli enemmän kuin ykkösiä, joten xyyz D. Ristiriit. Miten vlitn sopiv s? Jos olisi vlittu s = (01) p, ei olisi stu ristiriit, kosk tätä voidn pumpt (esim. x =, y = 01, z = (01) p 1 ). Pitäisi siis keksiä (sille tuntemttomlle) utomtille hnkli tpuksi. Heuristisi ohjeit epäsäännöllisyystodistuksiin Mikä ominisuus tekee kielen epäsäännölliseksi?. Usein ominisuus koskee kht snn os, joiden välillä vllitsee jokin ehto. Tämä ominisuus voi koske esim. tiettyjen merkkien lukumäärien keskinäistä suhdett, esim. L 1 = { k m c m : k,m = 0, 1, 2,...} L 2 = { m 2m : m = 0, 1, 2,...} snn eri osi, esim. snn lku- j loppuos riippuvt jotenkin toisistn: L 3 = {ww R : w Σ } L 4 = {ww: w Σ }. 76
Mikä on yksinkertisin, mielivltisen pituinen merkkijono, joss tämä ominisuus esiintyy? Joskus kielessä on todistuksen knnlt täysin turhi (säännöllisiä) osi, esim. kielessä L 1 merkin lukumäärällä ei ole mitään väliä voidn vlit merkkijono m c m. Mutt jos ehdon ospuolten välissä on tuollinen säännöllinen os, se stt oll trpeen ospuolien erottmiseen toisistn, esim. kielessä L 5 = { m k m : m, k = 0, 1, 2,...} trvitn inkin yksi erottmn lkuosn j loppuos merkit. Vlitn esim. m m. Jos kielen lku- j loppuos riippuvt jotenkin toisistn, mutt muuten ne svt oll mitä thns, riittää erott lku- j loppuos toisistn. Esim. kielen L 4 kohdll voidn vlit m m ti m m. Vlitse p siten, että eheysehdon toinen ospuoli kuuluu ensimmäiseen p merkkiin j sitä päästään pumppmn. Toinen tvoite on, että merkkijonon mhdollisi erilisi jkoj osiin xyz olisi mhdollisimmn vähän. Tätä käytimme esimerkin 29 todistuksessmme, ettei kieli C = {0 n 1 n : n N} ole säännöllinen: vlitsimme merkkijonon s niin pitkäksi, että lkuos x j pumpputuv os y olivt molemmt 0-jonoj. Test kikki pumppuslemmn mukiset jot w = xyz, xy p j y. Jokisell joll kokeile pumppust kierroslskurin i rvoill 0, 2, 3,... kunnes löytyy sellinen rvo i, että xy i z ei kuulu kieleen. Säännöllisten kielten luokk on suljettu (erityisesti) leikkuksen j komplementin suhteen. On nnettu kieli A, jok pitäisi osoitt epäsäännölliseksi. Vlitn jokin säännöllinen kieli B, Jos nyt A B ei ole säännöllinen, niin myöskään A ei ole säännöllinen. (On kuitenkin oltv trkkn, esim. khden epäsäännöllisen kielen leikkus voi oll säännöllinen.) Jos A (komplementti) on epäsäännöllinen, niin myös A on epäsäännöllinen. Voitisiin siis sovelt pumppuslemm kieliin C = A B ti D = A, mutt joskus C ti D voi oll jokin tunnetusti epäsäännöllinen kieli, jolloin erillistä pumppuslemm-todistust ei trvit. Pikkertus: tähän mennessä... Deterministinen äärellinen utomtti (DFA): yksinkertinen lskentlite, muisti vin vkiomäärä, syötteen pituudest riippumtt. Säännölliset kielet: niiden kielten luokk, jok voidn tunnist DFA:ll. 77
Epädeterministinen äärellinen utomtti (NFA): kieli voidn tunnist DFA:ll jos j vin jos se voidn tunnist NFA:ll. NFA on hyödyllinen kuvusformlismi. DFA voi vti eksponentilisesti enemmän tiloj kuin NFA. Kieli voidn tunnist DFA:ll jos j vin jos se voidn esittää säännöllisellä lusekkeell. Kikki kielet eivät ole säännöllisiä. Pumppuslemm voidn käyttää kielen epäsäännöllisyyden osoittmiseen. Eräs esimerkki epäsäännöllisestä kielestä on {w: w = w R, w {, } } Tähän mennessä: säännölliset kielet, tunnistus äärellisellä utomtill Seurvksi tällä LAP-kurssill: kontekstittomt kielet, tunnistus pinoutomtill Myöhemmin (LAT-kurssill): kontekstilliset j rekursiiviset kielet: tunnistus Turingin koneell ( tietokoneell ) Kikki muut kielet: vin osittin rtkevi ( kyllä -tpuksess) ti täysin rtkemttomi. Koetehtäviä? Yleisesti, smntyylisiä kuin luentojen esimerkit j kotitehtävät. Perustehtäväprototyyppi: Tehtävä 28. Ldi DFA / NFA jok tunnist kielen X. Minimoi / determinisoi utomtti käyttäen luennoill nnettu menetelmää. Mikä on utomtti / kieltä vstv säännöllinen luseke? Muunn säännöllinen luseke / utomtti utomtiksi / lusekkeeksi käyttäen luennoill nnettu menetelmää. Jne... Soveltvmp: Tehtävä 29. Säännöllinen kieli A voidn tunnist deterministisellä äärellisellä utomtill M A. Kielen A komplementtikieli A voidn tunnist utomtill M A, jok sdn utomtist M A vihtmll hyväksyvät tilt ei-hyväksyviksi, j ei-hyväksyvät hyväksyviksi. Toisin snoen säännöllisten kielten luokk on suljettu komplementin suhteen. Edelleen, olkoon M A epädeterministinen utomtti, jok tunnist kielen A. Voidnko utomtist M A viht hyväksyvien j ei-hyväksyvien tilojen roolit edellä kuvtull tvll, j sd tulokseksi epädeterministinen äärellinen utomtti jok tunnist kielen A? Ovtko epädeterministisen utomttien tunnistmt kielet suljettu komplementin suhteen? Tehtävä 30. Miten mielivltisest NFA:st sdn NFA joss on vin yksi hyväksyvä til? Tehtävä 31. Voiko säännöllistä kieltä 0 1 tunnist deterministisellä äärellisellä utomtill, joss on vin yksi hyväksyvä til? Perustele. Tehtävä 32. Osoit, että säännöllisten kielten luokk on suljettu leikkuksen suhteen. 78
Tehtävä 33. Olkoon A säännöllinen kieli. Osoit, että myös A R = {w R : w A} on säännöllinen. Tehtävä 34. Olkoot kielet A j B säännöllisiä. Onko kieli C = A B = (A B) (B A) säännöllinen? (Siis w C, jos w kuuluu joko kieleen A ti B, mutt ei molempiin.) Perustele. Tehtävä 35. Mitkä seurvt kkoston Σ = {, } kielistä ovt säännöllisiä? 1. E = { n n : n N} 2. F = {wuw R : w, u Σ + } 3. G = {ww: w Σ } 4. H = { i j : i j} 79