T-79.48 Tietojenkäsittelyteorian perusteet Tentti 25..23 mallivastaukset. Tehtävä: Kuvaa seuraavat kielet sekä säännölisten lausekkeiden että determinististen äärellisten automaattien avulla: (a) L = {w {, } w sisältää osajonon }; () L = {w {, } w ei sisällä osajonoa } (a) Muodostetaan suoraan kieltä vastaavasäännöllinen lauseke: ( ) ( ) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen äärellinen automaatti suoraan käyttämättä apuna säännöllistä lauseketta:,, q q q 2 q3 Automaatin tilansiirtotaulukko on: Tila q {q,q } {q } q {q 2 } q 2 {q 3 } q 3 {q 3 } {q 3 } Determinisoidaan automaatti: Tila Nimi {q } {q,q } {q } q A {q,q } {q,q } {q,q 2 } q {q,q 2 } {q,q,q 3 } {q } q C {q,q,q 3 } {q,q,q 3 } {q,q 2,q 3 } q D {q,q 2,q 3 } {q,q,q 3 } {q,q 3 } q E {q,q 3 } {q,q,q 3 } {q,q 3 } q F Taulukossa ristillä merkityt tilat ovat hyväksyviä lopputiloja. Tilakaaviona determinisoitu kone on: q A q q C qd q E q F Automaattia ei ole minimoitu, minimointi yhdistäisi kaikki kolme hyväksyvää lopputilaa.
() Koska tehtävän kieli on (a)-kohdan komplementtikieli, saadaan sitä vastaava automaatti vaihtamalla edellisestä automaatista hyväksyvät ja hylkäävät tilat keskenään:, q A q q C q D Rakennetaan kieltä vastaavasäännöllinen lauseke ylläolevan automaatin avulla:, q A q q q D C ( ) 2. Tehtävä: Viimeisestä lausekeautomaatista nähdään, että haluttu säännöllinen lauseke on: ( ) ( ( )). (a) Laadi yhteydetön kielioppi, joka tuottaa kielen: S = {a m n m+n m, n }. Anna kielioppisi mukaiset jäsennyspuut lauseille a ja. () Osoita (täsmällisesti!), että (a)-kohdan kieltä eivoikuvatasäännöl- lisellä lausekkeella. (a) Kielen tuottaa kielioppi: Halutut jäsennyspuut ovat: S as 2
S S a S () Käytetään säännöllisten kielten pumppauslemmaa: Jos L on säännöllinen kieli, niin on olemassa jokin p siten, että kaikille lauseille x L pätee: jos x p, niin x voidaan esittää muodossa x = uvw, missä: i. uv p; ii. v > ; ja iii. uv k w L kaikilla k N. Tarkastellaan lausetta x = a p p 2p L ja yritetään osittaa se lemman ehtojen mukaisesti. Kaikille ehdon i. toteuttaville osituksille pätee: u = a i v = a j w = a p (i+j) p 2p, missä i + j < p. Ehdosta ii. seuraa, että j >. Asettamalla tällöin k =, saadaan lause: uv w = uw = a i a p (i+j) p 2p = a p j p 2p / L Koska lauseen x kaikki ositukset rikkovat ainakin yhtä pumppauslemman ehtoa, ei kieli L ole säännöllinen. 3. Tehtävä: Suunnittele standardimallinen, so. deterministinen yksinauhainen Turingin kone, joka korvaa nauhalla annetun merkkijonon a i j,i j merkkijonolla A i j C k,missäk = i j. Syötteen oikeellisuutta ei tarvitse tarkistaa, so. saat olettaa, että nauhan sisältö koneen toiminnan alussa on edellä esitettyä muotoa. Kuvaa suunnittelemasi kone tilakaaviona ja esitä sen laskennat syötteillä aa, a ja a. Annettu funktio voidaan laskea Turingin koneella, joka toimii seuraavalla periaatteella: Luetaan syötteen alusta merkki a ja muutetaan se merkiksi A. Siirretään lukupäätä oikealle, kunnes löytyy merkki, muutetaan se :ksi ja palataan alkuun. Mikäli yhtään -merkkiäeilöydetä, kirjoitetaan syötteen loppuun merkki C ja palataan alkuun. 3
Yllä olevia kolmea vaihetta toistetaan niin pitkään, että koko syöte on käsitelty ja lopuksi palautetaan lukupää nauhan alkuun. Mikäli syöte on tyhjä, lopetetaan laskenta välittömästi. A/A, L q 3 >/>, R q a /,L C/C,L </<, L a/a, R a/a, R /,R C/C,R /, L a/a, L /,L C/C,L q q </C, L q 2 A/A, R Koneen laskennat annetuilla syötteillä ovat: aa: a: a: (q,aa) (q,aa) (q,aa) (q 2,Aa) (q 2,Aa) (q,aa) (q, AA) (q, AA) (q 2, AAC) (q 2,AAC) (q, AAC) (q 3,AAC) (q 3,AAC) (q 3,AAC) (q a,aac) (q,a) (q,a) (q 2,A) (q,a) (q 3,A) (q 3,A) (q a,a) (q,a) (q,a) (q 2,AC) (q,ac) (q 3,AC) (q 3,AC) (q a,ac) 4. Tehtävä: (a) Määrittele käsitteet rekursiivinen ja rekursiivisesti numeroituva kieli. Mikä onnäiden kahden käsitteen tärkein ero? () Anna jokin esimerkki kielestä, joka on rekursiivisesti numeroituva mutta ei rekursiivinen. (Kielen määrittelyn tulee olla täsmällinen, mutta sen ominaisuuksia ei tarvitse todistaa.) () Osoita, että joskielil Σ on rekursiivisesti numeroituva mutta ei rekursiivinen, niin sen komplementtikieli L =Σ L ei ole rekursiivisesti numeroituva. (Saat käyttää väitteen todistuksessa hyväksesi mitä tahansa luennolla tai luentomonisteessa esitettyjä aputuloksia.) (a) Kieli L on rekursiivisesti numeroituva, mikäli se voidaan tunnistaa jollakin Turingin koneella, eli mikäli on olemassa Turingin kone M siten, että: w Σ : w L w L(M). 4
Kieli L on rekursiivinen, mikäli se voidaan tunnistaa jollakin totaalisella Turingin koneella, eli koneella, joka pysähtyy aina lopulta kaikilla syötteillä. Jos kieli on rekursiivinen, voidaan tarkistaa kuuluko lause kieleen vai ei, sillä totaalinen Turingin kone antaa aina lopulta oikean vastauksen. Mikäli kieli on rekursiivisesti numeroituva, mutta ei rekursiivinen, voi kielen tunnistava Turingin kone joutua ikuiseen silmukkaan kieleen kuulumattomalla syötteellä, jolloin hylkäävää vastausta ei koskaan saada. () Määritellään aakkoston Σ = {, } kieli: U = { M w w L(M)}, missä M on Turingin koneen M koodaus ittijonoksi opetusmonisteen kohdassa 6.3 esitetyllä tavalla. KieleenU kuuluvat kaikki ne merkkijonot, joiden alussa on jonkin Turingin koneen kuvaus ja lopussa koneen tunnistamaan kieleen kuuluva sana. Kieli U on todistettu rekursiivisesti numeroituvaksi opetusmonisteen lauseessa 6.6 ja ei-rekursiiviseksi lauseessa 6.7. () Opetusmonisteen lauseen 6.3 perusteella kieli A on rekursiivinen, jos ja vain jos kielet A ja A ovat rekursiivisesti numeroituvia. Jos kielen L komplementti L olisi rekursiivisesti numeroituva, niin L olisi lauseen perusteella rekursiivinen. Koska L on määritelty ei-rekursiiviseksi, ei sen komplementti voi olla rekursiivisesti numeroituva. Siis: L RE ja L RE L REC, joten L/ REC L/ RE tai L/ RE Koska L/ REC ja L RE, niin L/ RE. 5