ICS-C2 Tietojenkäsittelyteori Kevät 2 Kierros,. 5. helmikuut Demonstrtiotehtävien rtkisut D: Sievennä seurvi säännöllisiä lusekkeit (so. konstruoi yksinkertisemmt lusekkeet smojen kielten kuvmiseen): () (/ )( ) ( ) () ( ) / ( ) (c) ( )( ) Rtkisu: () () (c) (/ )( ) ( ) = (ε )( ) ( ) = (ε ) ( ) (( ) ) = ( ) = ( ) ((ε ) ) = ( ) ( ) / ( ) = ( ) Sievennyksen tuloksen näkee suorn siitä, että (( ) ) = Σ, joten jo ensimmäinen liluseke generoi kikki kkoston merkkijonot. ( )( ) = ( ) Tässä huomtn, että liluseke R 2 = ( ) generoi kikki merkkijonot, jotk R = ( ) generoi j ε (R ), joten R voidn poist. D2: Rtkise, kuvvtko säännölliset lusekkeet r = ( ) j r 2 = ( ) ( ) smn kielen, muodostmll lusekkeit vstvt minimliset deterministiset äärelliset utomtit. Rtkisu: 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 Poistetn utomtist tyhjät siirtymät: 5 3 9 2 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 Poistetn seurvksi tyhjät siirtymät: 9 3 Huomtn, että konett voidn sieventää yhdistämällä kikki lopputilt yhdeksi tilksi: 9 Determinisoidn tämä tilkone: det. til vst. tilt A {} {,9} {} B {, 9} {, 9} {, 9} C {} {,9} {} D {, 9} {, 9} {, 9} B A C D 3
Minimointi muutt utomtin muotoon:, Kosk tulokseksi stiin sm tilkone kummllekin lusekkeelle, r j r 2 ovt ekvivlentit. D3: Osoit, että jos L on säännöllinen kieli, niin myös kieli L = {xy x L,y / L} on säännöllinen. Rtkisu: Kielen todistminen säännölliseksi onnistuu yleensä helpoiten muodostmll kielen tunnistv äärellinen utomtti. Tehtävässä on nnettun 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 tämänkltisisss todistuksiss on 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öllisyyden 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 t- 5
pn: q ε q 2 Seurvksi poistetn q 2 : q (ε ) 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