Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Samankaltaiset tiedostot
Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Rajoittamattomat kieliopit

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

1. Universaaleja laskennan malleja

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Turingin koneen laajennuksia

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

5.3 Ratkeavia ongelmia

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

Lisää pysähtymisaiheisia ongelmia

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Täydentäviä muistiinpanoja laskennan rajoista

Säännöllisen kielen tunnistavat Turingin koneet

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Rekursiiviset palautukset [HMU 9.3.1]

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

2. Laskettavuusteoriaa

2. Laskettavuusteoriaa

1. Universaaleja laskennan malleja

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Muita universaaleja laskennan malleja

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Rajoittamattomat kieliopit (Unrestricted Grammars)

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Chomskyn hierarkia ja yhteysherkät kieliopit

Algoritmin määritelmä [Sipser luku 3.3]

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Yhteydettömän kieliopin jäsennysongelma

Turingin koneet. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Kertausta 1. kurssikokeeseen

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

Ratkeavuus ja efektiivinen numeroituvuus

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

4.3. Matemaattinen induktio

6.1 Rekursiiviset palautukset

ICS-C2000 Tietojenkäsittelyteoria

Laskennan teoria

Muita vaativuusluokkia

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Formalisoimme nyt edellä kuvatun laskennan.

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Laskennan teoria

uv n, v 1, ja uv i w A kaikilla

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

Laskennan teoria

Laskennan teoria

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

S BAB ABA A aas bba B bbs c

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Automaatit. Muodolliset kielet

Output. Input Automaton

3. Turingin koneet. osaa esittää yksinkertaisia algoritmeja täsmällisesti käyttäen Turingin konetta ja sen muunnelmia

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

Tietotekniikan valintakoe

Ratkaisu: a) Kahden joukon yhdisteseen poimitaan kaikki alkiot jotka ovat jommassakummassa joukossa (eikä mitään muuta).

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

Laskennan teoria

Tietojenkäsittelyteorian alkeet, osa 2

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

1. Esitä rekursiivinen määritelmä lukujonolle

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

Algoritmit 1. Luento 1 Ti Timo Männikkö


Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Laskennan mallit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

Säännöllisten kielten sulkeumaominaisuudet

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Transkriptio:

581336 Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 1. S! axc X! axc X! by c Y! by c Y! " 2. (a) Tehtävänä on konstruoida rajoittamaton kielioppi, joka tuottaa kielen f0 n 1 n jn 1g. Vaihe1: alkutilanteen tuottaminen Vaiheessa 1 tuotetaan lähtösymbolista muotoa x[q 0 x] oleva merkkijono, missä x 2 f0; 1g. Vaiheen 1 toteuttava kielioppi: S! T [q 0 ] T! T! 0T A T! 1T B A[q 0! [q 0 A A0! 0A A1! 1A A]! 0] B[q 0! [q 0 B B0! 0B B1! 1B B]! 1] Vaihe2: siirtymien simulointi Vaiheessa 2 simuloidaan turingin koneen toimintaa vaiheessa 1 generoidulla syötteellä. Jokaista Turingin koneen siirtymää kohti tulee yksi tai useampia kieliopin produktioita.

Siirtymä vastaava(t) produktio(t) (q 0 ; 0) = (q 1 ; X; R) q 0 0! Xq 1 (q 0 ; Y ) = (q 3 ; Y; R) q 0 Y! Y q 3 (q 1 ; 0) = (q 1 ; 0; R) q 1 0! 0q 1 (q 1 ; Y ) = (q 1 ; Y; R) q 1 Y! Y q 1 (q 1 ; 1) = (q 2 ; Y; L) 0q 1 1! q 2 0Y 1q 1 1! q 2 1Y Xq 1 1! q 2 XY Y q 1 1! q 2 Y Y [q 1 1! [q 2 #Y (q 2 ; Y ) = (q 2 ; Y; L) 0q 2 Y! q 2 0Y 1q 2 Y! q 2 1Y Xq 2 Y! q 2 XY Y q 2 Y! q 2 Y Y [q 2 Y! [q 2 #Y (q 2 ; 0) = (q 2 ; 0; L) 0q 2 0! q 2 00 1q 2 0! q 2 10 Xq 2 0! q 2 X0 Y q 2 0! q 2 Y 0 [q 2 0! [q 2 #0 (q 2 ; X) = (q 0 ; X; R) q 2 X! Xq 0 (q 3 ; Y ) = (q 3 ; Y; R) q 3 Y! Y q 3 (q 3 ; #) = (q 4 ; #; R) q 3 ]! #q 4 ] Vaihe3: lopputilanteen siistiminen Vaiheessa 3 "siistitään"pois Turingin koneen tilannetta kuvaava osa. Jäljelle jää "arvattu"merkkijono x. Siistimisvaihe käynnistyy vain, jos simulointi on hyväksyvässä lopputilassa. q 4! X 0 Y 0 #X 0! X 0 XX 0! X 0 Y X 0! X 0 0X 0! X 0 1X 0! X 0 [X 0! Y 0 #! Y 0 Y 0 X! Y 0 Y 0 Y! Y 0 Y 0 0! Y 0 Y 0 1! Y 0 Y 0 ]! 2

(b) Johto Merkkijonolle "01": (vaihe 1) S T [q 0 ] 0T A[q 0 ] 01T BA[q 0 ] 01BA[q 0 ] 01B[q 0 A] 01[q 0 BA] 01[q 0 B0] 01[q 0 0B] 01[q 0 01] (vaihe 2) 01[Xq 1 1] 01[q 2 XY ] 01[Xq 0 Y ] 01[XY q 3 ] 01[XY #q 4 ] (vaihe 3) 01[XY #X 0 Y 0 ] 01[XY X 0 Y 0 ] 01[XX 0 Y 0 ] 01[X 0 Y 0 ] 01Y 0 ] 01 3. (a) Merkkijono w 21 saadaan muodostamalla luvun 21 binääriesitys 10101 ja poistamalla siitä ensimmäinen ykkönen. Merkkijono on siis 0101. (b) Muodostetaan koodi kielen f0 n 1 n j n 1g tunnistavalle koneelle M = (fq 0 ; q 1 ; q 2 ; q 3 ; q 4 g; f0; 1g; f0; 1; X; Y; #g; ; q 0 ; #; fq 4 g): Koneen esitys ei ole vaaditun kaltainen, sillä tyhjä merkki # on aakkoston viimeinen merkki (pitäisi olla kolmas), tilojen numerointi alkaa nollasta (pitäisi alkaa yhdestä) ja hyväksyvä lopputila on q 4 (pitäisi olla q 2 ). Huomioidaan nämä seikat suoraan koodauksen yhteydessä. Tiloille, merkeille ja nauhapään siirroille saadaan seuraavat koodit: q 0 7! 0 q 1 7! 000 q 2 7! 0000 q 3 7! 00000 q 4 7! 00 0 7! 0 1 7! 00 X 7! 0000 Y 7! 00000 # 7! 000 L 7! 0 R 7! 00 3

Sen jälkeen koodataan siirtymät: (q 0 ; 0) = (q 1 ; X; R) 7! 010100010000100 (q 0 ; Y ) = (q 3 ; Y; R) 7! 0100000100000100000100 (q 1 ; 0) = (q 1 ; 0; R) 7! 00010100010100 (q 1 ; 1) = (q 2 ; Y; L) 7! 0001001000010000010 (q 1 ; Y ) = (q 1 ; Y; R) 7! 0001000001000100000100 (q 2 ; 0) = (q 2 ; 0; L) 7! 000010100001010 (q 2 ; X) = (q 0 ; X; R) 7! 0000100001010000100 (q 2 ; Y ) = (q 2 ; Y; L) 7! 00001000001000010000010 (q 3 ; Y ) = (q 3 ; Y; R) 7! 00000100000100000100000100 (q 3 ; #) = (q 4 ; #; R) 7! 0000010001001000100 Koneelle M saadaan koodi luettelemalla siirtymien koodit mielivaltaisessa järjestyksessä merkkijonoilla 11 eroteltuina. Yksi mahdollinen koodi on esimerkiksi 010100010000100110100000100000100000100110001010001010011000100 100001000001011000100000100010000010011000010100001010110000100 001010000100110000100000100001000001011000001000001000001000001 00110000010001001000100 4. Jos v; w 2, niin merkitään v < w jos merkkijono v on leksikograsessa järjestyksessä ennen merkkijonoa w. Olkoon w i aakkoston leksikograsessa järjestyksessä i:s merkkijono, toisin sanoen = f w 1 ; w 2 ; : : : g missä w 1 < w 2 < : : :. (a) Oletuksen mukaan siis A = f f (w 1 ); f(w 2 ); : : : g ja f on laskettava. Tarkastellaan seuraavaa algoritmia, joka saa syötteenä merkkijonon x 2 : 1. i := 1; 2. jos f (w i ) = x niin hyväksy; 3. i := i + 1 4. palaa kohtaan 2. Jos x 2 A, niin oletuksen mukaan x = f (w i ) jollain i, jolloin algoritmi hyväksyy. Muuten x 6= f (w i ) kaikilla i, ja algoritmi jää ikuiseen silmukkaan. Algoritmi voidaan toteuttaa esim. kolmenauhaisella Turingin koneella seuraavasti: Nauha 1 sisältää syötteen x. Nauha 2 on työnauha. Nauha 3 sisältää käsittelyvuorossa olevan merkkijonon w i. Olkoon M f funktion f laskeva yksinauhainen Turingin kone, joka siis oletuksen mukaan on totaalinen. Kielen A tunnistavan koneen toiminta on seuraava: 0. (Alussa nauhat 2 ja 3 ovat tyhjiä.) 1. Simuloi konetta M f nauhalla 2. 2. Kun M f pysähtyi, vertaa nauhan 2 sisältöä nauhan 1 sisältöön. Jos ne ovat samat, niin hyväksy. 3. Vaihda nauhan 3 ei-tyhjä osuus leksikograsessa järjestyksessä seuraavaan merkkijonoon. 4. Kopioi nauhan 3 sisältö nauhan 2 sisällöksi. 5. Palaa kohtaan 1. (b) Nyt siis A = f f (w 1 ); f(w 2 ); : : : g, missä f (w 1 ) < f(w 2 ) < : : :. Siis jos x < f(w k ) jollakin k, niin varmasti x 6= f (w i ) kaikilla i > k, ja x 2 A jos ja vain jos x = f (w i ) jollakin i < k. Kieli A voidaan tunnistaa seuraavalla algoritmia, joka saa syötteenä merkkijonon x 2 : 4

1. i := 1; 2. jos f (w i ) = x niin hyväksy; 3. jos f (w i ) > x niin hylkää; 3. i := i + 1 4. palaa kohtaan 2. Koska merkkijonot f (w i ) muodostavat kasvavan jonon, algoritmi pysähtyy millä tahansa x. Edellä esitetyn perusteella algoritmi hyväksyy jos ja vain jos x 2 A, ja hylkää jos ja vain jos x 62 A. (c) Oletetaan, että A on rekursiivinen ja ääretön. (Äärettömyysoletus oli virheellisesti jäänyt pois tehtävästä.) Olkoon A = f a 1 ; a 2 ; : : : g, missä a 1 < a 2 < : : :. Kun määritellään f (w i ) = a i, niin selvästi A = f f (w) j w 2 g ja f on monotoninen. Funktio f argumentilla x voidaan laskea seuraavasti: 1. määritä k, jolla x = w k ; 2. p := 0; % montako A:n alkiota on löytynyt 3. toista arvoilla i = 1; 2; : : :: 4. jos w i 2 A niin p := p + 1; 5. jos p = k niin palauta w i. Syötteellä w k algoritmi siis palauttaa sen merkkijonon w, joka on joukon A leksikograsessa järjestyksessä k:s alkio. Koska A on rekursiivinen, algoritmin jokainen yllä esitetty askel voidaan toteuttaa äärellisessä ajassa. Koska A on ääretön, laskuri p saavuttaa jossain vaiheessa arvon k, ja algoritmi pysähtyy. Se siis laskee totaalisen funktion, jolla on haluttu ominaisuus. 5