T-79.8 Syksy 22 Tietojenkäsittelyteorin perusteet Hrjoitus 5 Demonstrtiotehtävien rtkisut Säännölliset lusekkeet määritellään induktiivisesti: j kikki Σ ovt säännöllisiä lusekkeit. Mikäli α j β ovt säännöllisiä lusekkeit, niin myös (αβ), (α β) j α ovt säännöllisiä lusekkeit. Mitkään muut lusekkeet eivät ole säännöllisiä. Säännöllisestä lusekkeest käytetään lyhennysmerkintää ε (myös e j λ esiintyvät kirjllisuudess). Yleensä jätetään ylimääräiset sulut pois: (((c)) (cd )) = c cd. Säännöllinen luseke α määrittelee kielen L(α), jok on joukon Σ osjoukko. Esimerkiksi: L( c d) = {, d, cd, ccd, ccd, cccd, ccccd,... }. Mikäli sekntumisen vr ei ole, jätetään L() melkein in pois säännöllisen lusekkeen ympäriltä, j käytetään lusekett itseään trkoittmn niiden snojen joukko, jotk kuuluvt sen kuvmn kieleen. Säännölliset lusekkeet on ehkä helpoint jtell muottin. Sn kuuluu kieleen, jos sen s sovitettu lusekkeen ntmn muottiin: otetn ensin, sitten otetn joko ti otetn kuink mont :t thns (myös ).. Tehtävä: Sievennä seurvi säännöllisiä lusekkeit (so. konstruoi yksinkertisemmt lusekkeet smojen kielten kuvmiseen):. ( )( ) ( ) 2. ( ) ( ) 3. ( )( ) Vstus: () () (c) ( )( ) ( ) = (ε )( ) ( ) = (ε ) ( ) L((α ) ) = L(α ) = ( ) L((ε ) ) = L( ) ( ) ( ) = ( ) Sievennyksen tuloksen näkee suorn siitä, että L(( ) ) = Σ, joten jo ensimmäinen liluseke generoi kikki kkoston merkkijonot. ( )( ) = ( ) Tässä huomtn, että liluseke R 2 = ( ) generoi kikki merkkijonot, jotk R = ( ) generoi, joten R voidn poist. J vlitettvn usein myös silloin, kun sekntumisen vr on olemss.
5. Tehtävä: Rtkise, kuvvtko säännölliset lusekkeet r = ( ) j r 2 = ( ) ( ) smn kielen muodostmll lusekkeit vstvt (minimliset) deterministiset tilkoneet. Vstus: Kutkin säännöllistä kieltä vst tilojen nimeämistä lukuunottmtt yksikäsitteinen minimlinen deterministinen utomtti. Mikäli kht säännöllistä lusekett vstvt minimiutomtit ovt smt, ovt ne ekvivlenttej. Rkennetn viheittin säännöllistä lusekett r vstv tilkone. : : 2 3 5 7 8 9 2 3 5 Poistetn utomtist tyhjät siirtymät: 3 Huomtn, että syntynyt utomtti on jo deterministinen, joten voidn siirtyä suorn minimointiin. Minimointilgoritmi yhdistää tilt j 3 sekä tilt, j. Näin ollen pienimmäksi lusekkeen r tunnistvksi tilkoneeksi sdn:, Rkennetn viheittin r 2 : vstv utomtti: 2
( ) ( ) ( ) 2 3 5 7 8 9 2 3 5 7 8 Poistetn seurvksi tyhjät siirtymät: Huomtn, että konett voidn sieventää yhdistämällä kikki lopputilt yhdeksi tilksi: Determinisoidn tämä tilkone: det. til vst. tilt A {} {, } {} B {, } {, } {, } C {} {, } {} D {, } {, } {, } 3
B A C Minimointi muutt utomtin muotoon:, D Kosk tulokseksi stiin sm tilkone kummllekin lusekkeelle, r j r 2 ovt ekvivlentit.. Tehtävä: Olkoon L säännöllinen kieli. Osoit, että kieli L = {xy x L, y / L} on säännöllinen. Vstus: Kielen todistminen säännölliseksi onnistuu yleensä helpoiten muodostmll kielen tunnistv äärellinen utomtti. Tehtävässä on nnettun jokin säännöllinen kieli L, jonk vull muodostetn kieli: L = {xy x L j y / L} Kosk L on säännöllinen, on olemss deterministinen tilkone M, jok hyväksyy sen. Muodostetn nyt deterministinen tilkone M siten, että se on muuten smnlinen kuin M, mutt hyväksyvien j hylkäävien lopputilojen joukot vihdetn keskenään, eli M hyväksyy kikki ne snt, jotk M hylkää j päinvstoin. Yhdistetään nyt nämä tilkoneet epädeterministiseksi koneeksi M, siten, että kikist M:n lopputiloihin lisätään tyhjä siirtymä M:n lkutiln. Nyt M hyväksyy kielen L, joten L on säännöllinen. ε M M Usein on myös mhdollist käyttää kieliperheen sulkeumominisuuksi: säännöllisten kielten joukko on suljettu unionin, ktention, Kleenen tähden, komplementoinnin j leikkuksen suhteen. Kieli L on muodostettu ktention vull kielestä L j sen komplementist L (y / L y L). Kosk säännöllisten kielten joukko on suljettu ktention j komplementin suhteen j L on säännöllinen, on myös L säännöllinen. Sulkeumominisuuksien knss täytyy oll vrovinen, sillä niitä on helppo käyttää väärin. Ominisuudet tkvt säännölisyyden vin yhteen suuntn. Esimerkiksi, jos kieli A on säännöllinen j se voidn muodost kielien B j C unionin, ei B:n j C:n säännöllisyydestä void todet vielä mitään. Tämä nähdään vikkp seurvst esimerkistä: B = { n n n } A = B B = Σ Kieli A on säännöllinen, vikk B j B ovt molemmt epäsäännöllisiä. Smll tvll voi käydä myös ktention, Kleenen tähden j leikkuksen tpuksess.
Liite: säännöllisen lusekkeen generointi utomtist Muodostetn säännöllinen luseke, jok vst seurv äärellistä utomtti: q ε q q 2 Aluksi koneest poistetn kikki tilt, joist ei void svutt hyväksyvää lopputil. Näitä ei tässä koneess ole. Mikäli koneell on usempi kuin yksi hyväksyvä til, niin ne muutetn hylkääviksi tiloiksi j niihin lisätään tyhjä siirtymä uuteen hyväksyvään tiln. Kosk nnetuss koneess on jo vlmiiksi vin yksi lopputil, ei tätäkään skelt trvitse tällä kert suoritt. Seurvksi poistetn koneest lku- j lopputil lukuunottmtt kikki tilt yksi kerrlln. Poistetn ensin til q : q ε q 2 Kikki koneess olevt siirtymät, jotk eivät liity tiln q jäävät ennlleen. Kikki tiln q läpi kulkevt polut korvtn suorll siirtymällä, jonk krilusekkeeksi setetn ktentio polull olevist lusekkeist. Tässä tpuksess siirtymä q 2 q sdn yhdistämällä siirtymät q 2 q, q q j q q. Intuitiivisesti stu luseke trkoitt sitä, että lkuperäisessä koneess päästään tilst q 2 tiln q siten, että ensin luetn yksi, minkä jälkeen voidn pyöriä silmukss :tä lukien tilss q j lopuksi luetn yksi. Muit polkuj ei kulje tiln q läpi. Koneen tilst q 2 on kksi eri siirtymää tiln q. Nämä voidn yhdistää seurvn tpn: q ε q 2 Seurvksi poistetn q 2 : q (ε ) 5
Nyt voidn luke hluttu säännöllinen luseke tilkoneen siirtymistä. Iden on ktso koneest kikki mhdolliset polut lkutilst lopputiln. Lusekkeen lkuun tulee siirtymä lkutilst lopputiln j loppuun kikki mhdolliset tvt siirtyä lopputilst tkisin itseensä: ( (ε ) ) }{{}}{{} q q q q.