Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Samankaltaiset tiedostot
TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

5.3 Ratkeavia ongelmia

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

Algoritmin määritelmä [Sipser luku 3.3]

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

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

Yhteydettömän kieliopin jäsennysongelma

Laskennan teoria

Algoritmit 2. Luento 13 Ti Timo Männikkö

Täydentäviä muistiinpanoja laskennan rajoista

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

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

Rajoittamattomat kieliopit

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

S BAB ABA A aas bba B bbs c

6. Approksimointialgoritmit

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM

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

Laskennan teoria

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

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

Säännöllisen kielen tunnistavat Turingin koneet

Algoritmit 1. Luento 1 Ti Timo Männikkö

2. Laskettavuusteoriaa

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

Chomskyn hierarkia ja yhteysherkät kieliopit

Muita vaativuusluokkia

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

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.

Kertausta 1. kurssikokeeseen

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

Ei-yhteydettömät kielet [Sipser luku 2.3]

Lisää pysähtymisaiheisia ongelmia

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

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

2. Laskettavuusteoriaa

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

3SAT-ongelman NP-täydellisyys [HMU ]

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

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

Turingin koneen laajennuksia

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Rekursiiviset palautukset [HMU 9.3.1]

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Algoritmit 1. Luento 2 Ke Timo Männikkö

C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:

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

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

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

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

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

1. Universaaleja laskennan malleja

4.3. Matemaattinen induktio

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

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

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

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

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

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

3. Laskennan vaativuusteoriaa

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

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

3. Laskennan vaativuusteoriaa

Diskreetin Matematiikan Paja Ratkaisuhahmotelmia viikko 1. ( ) Jeremias Berg

Säännöllisten kielten sulkeumaominaisuudet

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

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

Output. Input Automaton

Yhteydettömät kieliopit [Sipser luku 2.1]

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

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

Miten osoitetaan joukot samoiksi?

10. Satunnaisalgoritmit

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

2. Yhteydettömät kielet

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Ratkeavuus ja efektiivinen numeroituvuus

Olkoon G = (V,Σ,P,S) yhteydetön kielioppi. Välike A V Σ on tyhjentyvä, jos A. NULL := {A V Σ A ε on G:n produktio};

Algoritmi on periaatteellisella tasolla seuraava:

Muodolliset kieliopit

ICS-C2000 Tietojenkäsittelyteoria

Laskennan mallit

Transkriptio:

582206 Laskennan mallit (syksy 2008) 2. kurssikoe 11.12., ratkaisuja Tehtävän 1 tarkasti Harri Forsgren, tehtävän 2 Joel Kaasinen ja tehtävän 3 Jyrki Kivinen. Palautetilaisuuden 19.12. jälkeen arvosteluun voi tutustua ottamalla yhteyttä Jyrki Kiviseen sähköpostitse. 1. [2+2+4 pistettä] (a) Yhteydetön kielioppi, joka tuottaa aakkoston { a,b,c} merkkijonot, jotka päättyvät abc : S Xabc X ax bx cx ε. (b) Yhteydetön kielioppi, joka tuottaa kielen { 0 m 1 n 0 m m,n N }: S 0S0 A A 1A ε. (c) Yksiselitteinen yhteydetön kielioppi, joka tuottaa joukoista A, B ja C yhdisteitä ja leikkauksia muodostamalla saadut joukko-opilliset lausekkeet: S L L S L L P P P A B C (S) Arvostelu: (a) Täydellinen vastaus 2 p, helposti korjattava virhe 1 p (b) Täydellinen vastaus 2 p, helposti korjattava virhe 1 p. Tyypillisiä virheitä: n 1; jos n > 0, niin m > 0; kieli onkin { 0 m 1 n 0 k }. (c) Oikea kielioppi: 3 p. Kieli ei kata kaikkia joukko-opillisia lausekkeita: 1 tai 2p, esim. A (B C) mutta ei (A B) C. Uloimpien sulkujen puutteesta ei yksinään sakotettu. (Lähes) oikea kielioppi on yksiselitteinen: +1 p Pahoja ongelmia esim. sulkujen kanssa: 0 tai 1 p Tyypillisiä virheitä: kielioppi ei ole yksiselitteinen; sallitaan vain jonkinlaisessa normaalimuodossa olevat lausekkeet; rajoitteita sulkujen käytössä.

2. [4+4 pistettä] (a) Kieliopista S XS X X axb ε saadaan seuraava pinoautomaatti: ε,ε $ ε,x b ε,ε S ε,ε X ε,x ε a,a ε b,b ε c,c ε ε,ε a ε,s S ε,$ ε ε,ε X Merkkijonon aabbab eräs johto: S XS axbs aaxbbs aabbs aabbx aabbaxb aabbab. Pinoautomaatin hyväksyvä laskenta syötteellä aabbab: syöte jäljellä pinon sisältö aabbab aabbab $ aabbab S$ aabbab XS$ aabbab axbs$ abbab XbS$ abbab axbbs$ bbab XbbS$ bbab bbs$ bab bs$ ab S$ ab X$ ab axb$ b Xb$ b b$ $ 2

(b) On annettu Chomskyn normaalimuodossa oleva yhteydetön kielioppi G. Seuraava algoritmi ratkaisee, tuottaako se jonkin merkkijonon, jossa on merkki a : Etsitään ensin kieliopista kaikki tuottamattomat muuttujat (ks. harjoitus 8, tehtävä 5): tuottavat for kaikilla muuttujilla A do if kieliopissa on sääntö A c jollain c Σ then tuottavat tuottavat A if tuottavat = then return FALSE while muuttui do muuttui FALSE for kaikilla kieliopin säännöillä A BC do if A tuottavat and B tuottavat and C tuottavat then tuottavat tuottavat { A } Poista kieliopista kaikki säännöt, joissa esiintyy muita kuin joukkoon tuottavat kuuluvia muuttujia. Tämän jälkeen varsinainen tehtävä ratkeaa seuraavalla proceduurilla: TUOTTAA-MERKIN-A(G) a_tuottavat for kaikilla muuttujilla A do if kieliopissa on sääntö A a then a_tuottavat a_tuottavat A if a_tuottavat = then return FALSE while muuttui do muuttui FALSE for kaikilla kieliopin säännöillä A BC do if A a_tuottavat and (B a_tuottavat or C a_tuottavat) then a_tuottavat a_tuottavat { A } return S a_tuottavat Arvostelu: Kohdassa (a) merkkijonon johto 1 p, automaatin muodostaminen 2 p ja simulointi 1 p. Jos automaatti tunnistaa oikean kielen, mutta sitä ei ole muodostettu annetulla menetelmällä kieliopin pohjalta, automaatista ja simuloinnista yhteensä on saanut 1 pisteen. Kohdassa (b) jonkinlainen yritys sääntöjoukon läpikäymiseksi antoi 1 pisteen. Jos algoritmi ei käsittele oikein saavuttamattomia muuttujia tai ei aina pysähdy, pisteitä on voinut saada 2. Yleisin virhe oli tuottamattomien muuttujien jättäminen ottamatta huomioon; jos ratkaisu tällöin oli muuten oikein, siitä on saanut 3 pistettä. 3

3. [4+4 pistettä] (a) Tarkastellaan ongelmaa Syöte: Turingin kone M, koneen M tila q, merkkijono w Tuloste: kyllä jos M syötteellä w menee tilaan q; muuten ei. Muotoillaan ongelma formaalina kielenä: VISIT = { M,q,w Turingin kone M syötteellä w menee tilaan q }. Väite: Kieli VISIT ei ole ratkeava. Todistus: Tehdään vastaoletus, että ongelma VISIT on ratkeava. Turingin koneen pysähtymisongelma HALT TM voidaan nyt tunnistaa seuraavasti: i. Etsi syötteestä M,w koodit koneen M hyväksyvälle tilalle q accept ja hylkäävälle tilalle q reject. ii. Jos M,q accept,w VISIT, niin hyväksy. iii. Jos M,q reject,w VISIT, niin hyväksy. iv. Hylkää. Oletuksen mukaan ehtotestit riveillä (ii) ja (iii) osataan ratkaista. Algoritmi siis ei millään syötteellä jää silmukkaan. Siis pysähtymisongelma on ratkeava; ristiriita. Täsmällisesti ottaen olemme siis todistaneet, että Turingin koneen tilassakäyntiongelmaa ei voi ratkaista Turingin koneella. Tällöin sitä ei voi ratkaista missään muussakaan Turing-ekvivalentissa laskennan mallissa, kuten RAM-koneilla, tai Churchin-Turingin teesiin nojaten millään muullakaan realistisella laskentalaitteella kuten erityisesti oikealla tietokoneella tai yleiskäyttöisellä ohjelmointikielellä (esim. Java). Mallien ekvivalenssin perusteella tästä voisi kenties edelleen tehdä sen johtopäätöksen, että tilassakäyntiongelman vastine oikeille tietokoneille ei ole ratkaeava oikeilla tietokoneilla. Tässä on se pieni aukko, että ei ole täysin selvää, mikä on tilassakäyntiongelman vastine esim. Java-ohjelmassa. Luonteva vaihtoehto olisi samastaa ohjelman rivit ja Turingin koneen tilat. Hieman arvellen voimme siis tulkita, että Java-kielellä ei voi ratkaista ongelmaa, suorittaako annettu ohjelma annetulla syötteellä jonkin tietyn ohjelmarivin. Itse asiassa tämä mahdottomuustulos voidaan todistaa hieman täsmällisemmin jäljittelemällä edellä esitettyä Turingin koneiden todistusta (ks. harjoitus 12, tehtävä 5). (b) Valitaan esimerkiksi seuraavat kaksi ongelmaa ylimääräisistä harjoitustehtävistä: Kauppamatkustajan ongelma: Syöte: suuntaamaton painotettu verkko G, luonnollinen luku k Tuloste: kyllä jos verkossa G on polku, jonka kustannus on korkeintaan k ja joka vierailee jokaisessa solmussa tasan kerran ja palaa lähtösolmuunsa; muuten ei Joukkopeiteongelma: Syöte: perusjoukko X; kokoelma A 1,...,A n perusjoukon osajoukkoja A i X; luonnollinen luku k Tuloste: kyllä jos voidaan valita I {1,...,n}, jolla I k ja i I A i = X; muuten ei. Muita kurssilla esiintyneitä NP-täydellisiä ongelmia ovat klikkiongelma, propositiologiikan toteutuvuusongelma (SAT), Hamiltonin polku -ongelma ja repunpakkausongelma. (Ks. myös http://xkcd.com/287/; kiitos tämän viitteen osoittamisesta!) Käytännössä jos ongelma on NP-täydellinen, sille ei kannata etsiä aina polynomisessa ajassa toimivaa algoritmia, koska sellaisen löytäminen olisi tasan yhtä vaikeaa kuin todistaa P = NP. Sen sijaan ongelmalle on olemassa eksponentiaalisessa ajassa toimivia algoritmeja, jotka kenties ovat vielä käyttökelpoisia käsillä olevan sovelluksen kannalta relevanteilla syötteen ko oilla. Laajemmin 4

NP-täydellisten ongelmien algoritmit eivät kuulu kurssin alueeseen, mutta yleisesti niille käytetään esim. approksimointialgoritmeja (jotka tuottavat ei-optimaalisia ratkaisuja kuitenkin taaten, että virhe ei ole kovin suuri) ja erilaisia heuristiikkoja (jotka yleensä ovat suhteellisen nopeita, mutta eivät anna takeita tuloksen laadulle); heuristiikat voivat myös käyttää satunnaisuutta hyväkseen. Arvostelu: Kohdassa (a) todistuksesta on saanut 2 pistettä; esityksen ei ole tarvinnut olla erityisen yksityiskohtainen tai formaali, kunhan peruslogiikka on oikein. Tyypillinen virhe on ollut osoittaa, että kyseisen ongelman ratkeavuus seuraisi pysähtymisongelman ratkeavuudesta; epäsuoraa todistusta varten tämä on väärä suunta. Tällaisesta ratkaisusta on kuitenkin saanut yhden pisteen (jos se muuten osoittaa asian hallintaa), samoin ratkaisuista, joissa on vedottu simulaation voivan jäädä silmukkaan (mikä ei osoita, ettei ongelmaa voisi kenties ratkaista jollain muulla tavalla kuin simuloimalla). Käytännön johtopäätöksiin ei ole mitään yksiselitteistä oikeaa vastausta. Kaksi pistettä on saanut selityksestä, jossa on esitetty perusteluina kurssiin kuuluvia asioita (Churchin-Turingin teesi, tietokoneiden ja Turingin koneiden ekvivalenssi tms.) tai joissa muuten johtopäätökset on esitetty hyvin. Kohdan (b) arvostelussa on otettu huomioon, että NP-täydellisyyden osaaminen teknisellä tasolla ei kuulu kurssin tavoitteisiin. Oleellista on, minkä tyyppiset tehtävät ovat NP-täydellisiä (2 pistettä), että niille ei tunneta tehokkaita algoritmeja (1 p) mutta jotain kuitenkin voidaan tehdä (1 p). Vaikka teknisistä yksityiskohdista ei kohdassa (b) olekaan kovin herkästi sakotettu, seuraavat asiat olisi hyvä panna merkille: Näennäisesti pienet muutokset ongelmassa voivat muuttaa sen NP-täydellisestä helposti polynomisessa ajassa ratkeavaksi. Esim. jos repunpakkausongelmassa kaikki painot tai kaikki arvot ovat samoja, ongelma ratkeaa helposti järjestämällä esineet sopivasti. Monet polunetsimisongelmat ratkeavat polynomisessa ajassa (ks. Tietorakenteet); erityisesti Hamiltonin kehää muistuttava Eulerin kehä ( Königsbergin sillat ) on löydettävissä polynomisessa ajassa. Määritelmän mukaan NP-täydelliset ongelmat ovat kaikki päätösongelmia (kyllä/ei). Tässä tosin näkee epätäsmällistä kielenkäyttöä varsin yleisesti. 5