Laskennan teoria

Koko: px
Aloita esitys sivulta:

Download "Laskennan teoria"

Transkriptio

1 Laskennan teoria luennot syyslukukaudella 2004 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa ja bioinformatiikan ja laskennallisen biologian suuntautumisvaihtoehdossa esitiedot käytännössä Tietorakenteet, Ohjelmoinnin ja laskennan perusmallit, joitain matematiikan opintoja kurssin voi hyvin aloittaa vaikka Ohj. lask. perusmallit olisi kesken 1

2 Opetusmuodot luennot ma 10 12, ke harjoitukset (ks. opetusohjelma) 8 harjoituskertaa, 5 tehtävää per kerta 40 tehtävää kurssikoe to kello (tarkista aikanaan) harjoitukset pakollisia: ratkaistava väh. 25% tehtävistä luennoijan vast.otot ma, to huone B229a seuraava erilliskoe

3 Kurssin suorittaminen maksimi 60 pistettä: koe 54 p., harjoitukset 6 p. hyväksymisraja noin 30 p., arvosanan 3/3 raja noin 51 p. harjoituspisteet tehty pisteet hyl Hyväksymisrajaan suhtaudutaan vakavasti. Jos laskarien kertymisessä on ongelmia, selvitä ajoissa luennoijan kanssa. 3

4 Oppimateriaali Kurssikirja Hopcroft, Motwani, Ullman: Introduction to Automata Theory, Languages, and Computation (luvut 8 10; kurssikirjahyllyssä) Oheislukemisto Orponen: Laskennan teoria (luvut 4 7 kattavat kurssin asiat; myydään laitoksen monistemyynnissä) Muitakin kirjoja on paljon, esim. Sipser: Introduction to the Theory of Computation Luentomateriaali ilmestyy kurssin kotisivulle ja luentokansioon (C127) mutta ei ole täydellinen esitys kurssin asioista (eräs) suositeltava materiaali itseopiskeluun: kalvokopiot + kurssikirja merkinnällä ( ) varustetut luentojen kohdat eivät välttämättä löydy kurssikirjasta eivätkä kuulu koealueeseen 4

5 Motto Computational problems are not only things that have to be solved, they are also objects that can be worth studying. Christos Papadimitriou 5

6 Tavoitteet tutustua universaaleihin laskennan malleihin hallita Turingin koneiden peruskonstruktiot ymmärtää että laskennalliset ongelmat voivat olla ratkeamattomia tai työläitä ymmärtää NP-täydellisyyden merkitys (myös matemaattinen merkitys) tunnistaa tyypilliset ratkeamattomat ja NP-täydelliset ongelmat osata yksinkertaiset ratkeamattomuus- ja NP-täydellisyystodistukset 6

7 Miksi? (tehokkaan) laskennan perusolemuksen selvittämistä ratkeamattomia ongelmia esiintyy logiikassa ja siihen liittyen tekoälyssä, formaalissa verifioinnissa jne. työläitä ongelmia esiintyy kaikenlaisissa sovelluksissa (pakkaus, verkot,... ) nämä asiat ovat niin keskeisiä että ne pitää tuntea pintaa syvemmältä mistä tarkalleen on kysymys mihin väitteet perustuvat johdatusta teoreettisen tietojenkäsittelytieteen ajatteluun (ja esitystapaan) (Lyhyt vastaus: hauskaa ja hyödyllistä) 7

8 Sisältö 0. Johdanto: laskennalliset ongelmat, pysähtymisongelman ratkeamattomuus 1. Universaaleja laskennan malleja: Turingin koneet, rajoittamattomat kieliopit, Churchin-Turingin teesi 2. Laskettavuusteoriaa: rekursiiviset ja rekursiivisesti lueteltavat kielet, rekursiiviset funktiot ja palautukset, universaalit Turingin koneet, ratkeamattomuustuloksia 3. Vaativuusteoriaa: aika- ja tilavaativuus, epädeterministiset vaativuusluokat, polynomiset palautukset, NP-täydellisyys 8

9 0. Johdanto Merkintöjä ja konventioita [HMU luku 1.5]: Γ, Σ: äärellisiä aakkostoja; esim. Γ = { 0, 1 }, Σ = { a, b, c, d }. Σ : aakkoston koko; esim. Σ = 4. pienet kirjaimet a, b, c,...: akkosmerkkejä pienet kirjaimet x, y, z, u, v, w,...: merkkijonoja; esim. x = ab, y = bac. x : merkkijonon pituus; esim. x = 2. xy: merkkijonojen katenaatio; esim. xy = abbac. 9

10 Σ : aakkoston Σ (äärellisten) merkkijonojen joukko ε: tyhjä merkkijono (merkitään usein myös λ); siis ε = 0 esim. jos Σ = { 0, 1 } niin Σ = { ε, 0, 1, 00, 01, 10, 11, 000, 001,... } millä tahansa äärellisellä Σ joukko Σ on numeroituvasti ääretön; ts. on olemassa bijektio f: N Σ (intuitiivisesti aakkoston Σ merkkijonoja on yhtä paljon kuin luonnollisia lukuja) esim. f(0) = ε, f(1) = 0, f(2) = 1, f(3) = 00 jne.; leksikografinen järjestys kieli on mikä tahansa joukko merkkijonoja; esim. Primes = { x { 0, 1 } x on alkuluvun binääriesitys } siis Primes = { 10, 11, 101, 111, 1011,... } = { 2, 3, 5, 7, 11,... } (merkintä = tarkoittaa että joukot jossain mielessä esittävät samaa asiaa) 10

11 laskennallinen ongelma on mikä tahansa kuvaus π: Σ Γ millä tahansa Σ, Γ päätösongelma on laskennallinen ongelma jonka arvojoukko on { 0, 1 } ( = { ei, kyllä }); päätösongelma π samastetaan usein kielen { x π(x) = 1 } kanssa intuitiivisesti algoritmi ratkaisee ongelman π, jos millä tahansa syötteellä x Σ se tulostaa funktion arvon π(x) Γ (määritellään pian täsmällisemmin) olkoon P(X) joukon X osajoukkojen joukko; siis esim. P({ a, b }) = {, { a }, { b }, { a, b } } siis yllämainittu samaistus huomioonottaen P(Σ ) on aakkoston Σ päätösongelmien joukko yksinkertainen argumentti osoittaa, että päätösongelmia on enemmän kuin algoritmeja kaikilla (päätös)ongelmilla ei mitenkään voi olla ratkaisualgoritmia 11

12 Lukumääräargumentti hieman tarkemmin ( ): Java-ohjelmat ovat merkkijonoja, joten mahdollisia Java-ohjelmia on numeroituva määrä (eli korkeintaan yhtä paljon kuin luonnollisia lukuja) Tunnetuista joukko-opin tuloksista seuraa, että jos X on numeroituvasti ääretön niin P(X) on ylinumeroituva (eli ei ole surjektiota N P(X)) Intuitiivisesti, jos joukon X alkioita on yhtä paljon kuin luonnollisia lukuja, niin joukon X osajoukkoja on enemmän kuin luonnollisia lukuja Tämä perustuu oleellisesti samaan Cantorin kuuluisaan diagonalisointiargumenttiin kuin tulos, että reaalilukuja on enemmän kuin luonnollisia lukuja. Erityisesti jos valitaan Σ = ASCII merkit niin nähdään, että aakkoston Σ päätösongelmia on enemmän kuin Java-ohjelmia. Koska määritelmän mukaan mikään ohjelma ei voi ratkaista kuin yhden päätösongelman, niin on olemassa ASCII-aakkoston päätösongelmia joille ei riitä ne ratkaisevaa Java-ohjelmaa 12

13 Onko em. lukumääräargumentti relevantti: kenties kaikki ratkeamattomat ongelmat ovat keinotekoisia ja mielenkiinnottomia, tai kenties jokainen ongelma voidaan ratkaista jollain ohjelmointikielellä? Osoittautuu kuitenkin, että monet luonnostaan esiintyvät ongelmat ovat ratkeamattomia, ja ratkeamattomuuden käsite on suunnilleen sama kaikilla riittävän voimakkailla laskentaformalismeilla ( ohjelmointikielillä) Johtopäätöksellä on siis vakavasti otettavia seuraamuksia. 13

14 Pysähtymisongelman ratkeamattomuus (( )/ [HMU 8.1]) (Epämuodollinen johdatteleva esimerkki; yksityiskohtiin palataan.) Väite: ei ole olemassa C-funktiota halts(p, x) joka saa syötteenä mielivaltaisen C-funktion tekstin p ja tälle sopivan syötteen x, palauttaa 1 jos laskenta p(x) pysähtyy ja palauttaa 0 muuten. Huom. 1: halts ei siis saa millään parametreilla joutua ikuiseen silmukkaan. Huom. 2: syntaksivirheet p:n tekstissä jne. kohtaan muuten. 14

15 Todistus (hieman C:n syntaksia muokaten): Tehdään vastaoletus että tällainen halts on olemassa. Olkoon c seuraavan ohjelman confuse tekstiesitys: void confuse(char *p){ int halts(char *p, char *x){... /* funktion "halts" runko */ } if (halts(p, p)==1) while (1); } Nyt sovelletaan funktion halts spesifikaatiota: ristiriita. confuse(c) pysähtyy halts(c, c)==1 confuse(c) jää silmukkaan; 15

16 Johtopäätös: hyvinkin perustavanlaatuiset ohjelmointiin liittyvät kysymykset ovat ratkeamattomia. Seuraavaksi tarkastellaan tämäntyyppisiä ilmiöitä ohjelmointikielten sijaan formaaleilla laskennan malleilla, erityisesti Turingin koneilla. Formaalien mallien etuja: semantiikka helppo määritellä formaalisti vältetään ohjelmointikielten hankalat erikoispiirteet vältetään tulosten riippuvuus ohjelmointikielestä saadaan yleinen matemaattinen teoria joka on täysin riippumaton käytettävissä olevista laskentalaitteista 16

17 1. Universaaleja laskennan malleja Esimerkkinä universaalista laskennan mallista tarkastellaan Turingin konetta muunnelmineen. Lyhyesti esitellään myös muita malleja. Tämän luvun jälkeen opiskelija tuntee Turingin koneen ja sen muunnelmien peruskäsitteet, osaa laatia yksinkertaisia Turingin koneita, tuntee periaatetasolla tärkeimmät Turingin koneisiin liittyvät yleiset konstruktiot ja niiden merkityksen, ymmärtää Turingin koneen suhteen muihin (teoreettisiin ja käytännöllisiin) laskennan malleihin ja tuntee Churchin-Turingin teesin ja osaa arvioida laskennan malleja sen valossa. 17

18 Universaalilla laskennan mallilla tarkoitetaan tässä epämuodollisesti sellaista mallia, jonka avulla on tarkoitus pystyä formalisoimaan kaikki mahdolliset algoritmiset prosessi. Tarkoitus on siis vastata täsmällisesti kysymykseen Mikä on algoritmi? Käytännön tietojenkäsittelijälle tyypillisesti riittää vastaus Tunnen kyllä algoritmin, kun näen sellaisen. Täsmällistä määritelmää tarvitaan kuitenkin, jos halutaan tarkastella kysymyksiä tyyppiä Onko ongelmalle X olemassa ratkaisualgoritmi? Ilman täsmällistä määritelmää ei voitaisi erottaa tapauksia 1. algoritmi on olemassa, sitä vain ei vielä ole keksitty ja 2. algoritmia ei periaatteellisista syistä voi olla olemassakaan. Käytännössä ensin asetetaan algoritmille matemaattinen määritelmä (oikeastaan useita vaihtoehtoisia), katsotaan sitten mitä seuraa, ja keskustellaan lopuksi filosofisista ja käytännön seuraamuksista. 18

19 Historiallista taustaa 1900-luvun alkupuolella matemaatikot tarkastelivat kysymystä, voiko annetulle väitteelle löytää todistuksen annetuista aksioomista jollain mekaanisella menettelyllä. Turingin kone on alkujaan eräs tapa formalisoida mekaaninen tässä yhteydessä. Myös muita, lopulta Turingin koneen kanssa yhtäpitäviksi osoittautuneita, malleja esitettiin. Kun sittemmin keksittiin yleiskäyttöiset elektroniset tietokoneet, Turingin kone osoittautui myös hyväksi malliksi sille, mitä niillä periaatteessa voidaan laskea (olettaen rajoittamaton muistikapasiteetti). Erityisesti universaali Turingin kone [luvussa 2] vastaa käsitteellisellä tasolla ohjelmoitavaa yleiskäyttöistä tietokonetta: ohjelma voidaan tulkita osaksi syötettä, ja ohjelmaa vaihtamalla sama laite saadaan ratkaisemaan mikä tahansa ratkaistavissa oleva ongelma. (Yksinkertaistettu vastaus alkuperäiseen kysymykseen: todistamista ei voida mekanisoida.) 19

20 Turingin kone (Alan Turing, 1936) [HMU 8.2] q 3 q 0 q 3 q 2 q 1 Ohjausyksikkö: kone tilassa q 1 Nauhapää osoittaa merkkiä B Työnauha sis. merkkijonon ABAAB Koneen siirtymäfunktio määrää mikä merkki kirjoitetaan nauhapään kohdalle, mihin suuntaan nauhapää liikkuu ja mikä on seuraava tila kun on annettu nykyinen tila ja nauhapään alla oleva merkki. 20

21 Motivaatio: yritetään tehdä abstrakti malli siitä, millaista laskentaa matemaatikko (tms.) voi tehdä mekaanisesti : käytettävissä kynä, kumi ja rajattomasti paperia kerralla nähdään vain vakiokokoinen osa muistiinpanoista matemaatikon oma muisti on äärellinen Vaikuttaa vähän erilaiselta kuin tietokoneet, mutta vuonna 1936 ei ollut tietokoneita malli osoittautuu yhtä voimakkaaksi kuin suoremmin moderneja tietokoneita esittävät mallit (lisää tuonnempana) 21

22 Muodollisemmin Turingin kone (Turing machine, TM) on seitsikko missä M = (Q, Σ, Γ, δ, q 0, B, F ) Q on tilajoukko jonka on oltava äärellinen Γ on nauha-aakkosto ja Σ Γ syöteaakkosto (kumpikin äärellinen) δ on siirtymäfunktio q 0 Q on alkutila B Γ Σ on tyhjämerkki (blank) F Q on hyväksyvien tilojen joukko 22

23 δ on osittainen funktio joukolta Q Γ joukkoon Q Γ { L, R }. Siirtymäfunktion arvo δ(q, X) = (q, Y, D) tarkoittaa että jos M on tilassa q ja nauhapään alla on merkki X niin seuraavalla laskenta-askelella M siirtyy tilaan q, kirjoittaa nauhalle merkin Y (merkin X tilalle) ja siirtää nauhapäätä yhden askelen suuntaan D (L: vasen, R: oikea). Jos δ(q, X) on määrittelemätön niin M pysähtyy. 23

24 Intuitiivisesti jos M pysähtyy hyväksyvään tilaan se hyväksyy syötemerkkijonon jos M pysähtyy muunlaiseen tilaan se hylkää syötemerkkijonon. Turingin koneen M hyväksymä (tai tunnistama) kieli L(M) Σ on niiden merkkijonojen joukko jotka M hyväksyy. Huom. kieleen L M eivät kuulu ne syötteet joilla M jää ikuiseen silmukkaan. Huom. erityisesti siis vaihtamalla koneen M hyväksyvät ja ei-hyväksyvät tilat keskenään ei saada konetta joka hyväksyy kielen L(M) = Σ L(M) paitsi jos kone M on sellainen että se pysähtyy kaikilla syötteillä. Kieltä L Σ sanotaan rekursiivisesti lueteltavaksi (recursively enumerable, RE) jos L = L(M) jollain Turingin koneella M, ja rekursiiviseksi (recursive, REC) jos lisäksi M pysähtyy kaikilla syötteillä. (Tästä lisää myöhemmin.) 24

25 Turingin koneen tilannetta (configuration) merkitään merkkijonolla vqw missä q Q on koneen tila, v Γ on nauhan sisältö vasemmanpuolimmaisesta ei-tyhjästä merkistä nauhapään vasemmalla puolella olevaan merkkiin ja w Γ on nauhan sisältö nauhapään kohdalla olevasta merkistä oikeanpuolimmaiseen tyhjään merkkiin. Siis alussa ollut esimerkkitilanne merkitään Aq 1 BAAB. Jos nauhapään vasemmalla puolella on vain tyhjää, niin v = ε ja merkkijonon w alussa voi olla tyhjää; vastaavasti oikealla. Koneen alkutilanne syötteellä w Σ on q 0 w. Siis aluksi kone on alkutilassa, syöte on nauhalla tyhjien ympäröimänä ja nauhapää syötteen alussa. 25

26 Jos siirtymäfunktion mukaan tilannetta vqw seuraa tilanne v q w, merkitään Siis vqw M v q w. jos δ(q, a) = (q, b, R) niin vqaw vbq w kaikilla v, w Γ jos δ(q, a) = (q, b, L) niin vcqaw vq cbw kaikilla c Γ, v, w Γ Jos on olemassa tilannejono v 1 q 1 w 1 = vqw, v 2 q 2 w 2, v 3 q 3 w 3,..., v n q n w n = v q w missä v i q i w i v i+1 q i+1 w i+1, merkitään vqw M v q w. Siis jos hyväksyvistä tiloista ei ole siirtymiä (kuten yleensä ei ole), pätee L(M) = { x Σ q 0 x M vqw joillain q F, v, w Γ }. 26

27 Esimerkki Konstruoidaan Turingin kone joka hyväksyy kielen A = { 0 n 1 n n 1 }. Perusidea: Apumerkkeinä X ja Y. Toistetaan seuraavaa: vaihdetaan 0:n tilalle X siirrytään nauhalla oikealle kunnes tulee 1 vaihdetaan 1:n tilalle Y palataan vasemmalle kunnes löytyy X aloitetaan seuraava iteraatio tämän X:n oikealta puolelta 27

28 Muodollisemmin A = L(M) missä M = ({ q 0, q 1, q 2, q 3, q 4 }, { 0, 1 }, { 0, 1, X, Y, # }, δ, q 0, #, { q 4 }) ja δ on oheisen taulukon mukainen. merkki tila 0 1 X Y # q 0 (q 1, X, R) (q 3, Y, R) q 1 (q 1, 0, R) (q 2, Y, L) (q 1, Y, R) q 2 (q 2, 0, L) (q 0, X, R) (q 2, Y, L) q 3 (q 3, Y, R) (q 4, #, R) q 4 Havainnollisemmin asian voi esittää siirtymäkaaviona. 28

29 .. Y/Y, R Y/Y, L 0/0, R 0/0, L 0/X, R 1/Y, L q 0 q 1 q 2 Y/Y, R X/X, R #, #, R q 3 q 4 Y/Y, R.. Kielen { 0 n 1 n n 1 } tunnistaminen; siirtymäkaavio 29

30 Esimerkki 2 Tunnistetaan kieli { a k b k c k k 0 } Perusajatus: korvataan yksitellen jotkin a, b ja c merkeillä A, B ja C samalla tulee tarkastetuksi että a:t on ennen b:itä jne. kun a:t loppuvat, tarkastetaan ettei b- tai c-merkkejä jäänyt yli Huom. kieli ei ole kontekstiton. 30

31 . a/a, R a/a, R B/B, R b/b, R C/C, R. q 0 q 1 q 2 b/b, R #, #, L a/a, R c/c, L A/A, R q 6 q 4 q 3 #, #, L B/B, R C/C, L b/b, L B/B, L a/a, L q 5 B/B, R C/C, R.. Kielen { a n b n c n n 0 } tunnistaminen 31

32 Huom. Turingin koneen laskentavoima (se mitkä kielet ovat tunnistettavissa) on sama vaikka mallia muunneltaisiin paljonkin erilliset hylkäävä ja hyväksyvä lopputila nauha vain toiseen suuntaan ääretön sallitaan nauhapään pysyä paikallaan nauhalla useita uria useita nauhoja... Vielä oleellisempaa on, että Turingin kone on laskentavoimaltaan sama kuin aivan muista lähtökohdista johdetut formalismit (Kleenen rekursiiviset funktiot, yleiset kieliopit, RAM-koneet,... ). 32

33 monimutkaisia turinginkonekonstruktioita ei tietenkään voi käytännössä esittää siirtymäkaavion tarkkuudella myös Turingin koneista puhuttaessa voidaan käyttää aliohjelmia ja muita vastaavia ajattelumalleja perusteiden ymmärtämiseksi kurssilla käytetään jonkin verran aikaa yksinkertaisten Turingin koneiden tarkkaan käsittelyyn samalla Turingin koneen varianttien asema selvenee ja nähdään tarkemmin miten Turingin kone suhtautuu moderniin tietokoneeseen 33

34 Turingin koneen laajennuksia [HMU ] Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k uraan (track) joilla kuitenkin on yhteinen nauhapää. kontrolliyksikkö # K O L M E U R A I N E N # # # # T U R I N G I N # # # # # # # # # K O N E # # # # # # # 34

35 jokaisella askelella luetaan ja kirjoitetaan kullekin uralle samalle kohdalle mutta muuten toisista urista riippumatta formaalisti nyt siis siirtymäfunktio on δ: Q Γ k Q Γ k { L, R } alkutilanteessa syöte ensimmäisellä uralla, muilla urilla tyhjämerkkiä helppo simuloida yksiuraisella koneella: vaihdetaan aakkoston Γ tilalle Γ k, tyhjämerkiksi (#,..., #) jne. voidaan käyttää moniuraisia koneita silloin kun se tuntuu helpommalta 35

36 Moninauhaiset Turingin koneet: nyt meillä on k nauhaa joilla omat nauhapäät (voivat liikkua eri suuntiin, ja yksinkertaisuuden vuoksi myös pysyä paikallaan). kontrolliyksikkö # K O L M E N A U H A I N E N # # T U R I N G I N # # # # # # # # # K O N E # # # # # # # 36

37 formaalisti nyt siis siirtymäfunktio on δ: Q Γ k Q Γ k { L, R, S } k alkutilanteessa syöte ensimmäisellä nauhalla, muilla nauhoilla tyhjämerkkiä Osoitetaan että k-nauhaista konetta voi simuloida 2k-uraisella yksinauhaisella koneella Idea: merkataan ylimääräisille urilla nauhapäiden sijainnit # K O L M E N A U H A I N E N # # T U R I N G I N # # # # # # K O L M E N A U H - - X # # T U R I N G I N X # # # K O N E # # # - - X # # # # K O N E # # # # # # # 37

38 Moninauhaisen koneen yhden askelen simuloimiseksi luetaan koko nauha kerran läpi ja muistetaan (äärellistilaisessä kontrollissa) mitkä merkit ovat nauhapäiden kohdalla valitaan siirtymä ja kirjoitettavat merkit luetaan koko nauha uudestaan läpi ja tehdään asiaankuuluvat muutokset Oletetaan että syötteellä x simuloitava kone tekee t(x) siirtymää käsiteltävän nauhanosan pituus myös kork. t(x) merkkiä simuloiva kone suorittaa O(t(x)) askelta per simuloitava askel simuloiva kone tekee kaikkiaan O(t(x) 2 ) askelta 38

39 Johtopäätös: kieli voidaan tunnistaa standardimallisella Turinginkoneella jos ja vain jos se voidaan tunnistaa moniuraisella Turingin koneella jos ja vain jos se voidaan tunnistaa moninauhaisella Turingin koneella. Muita samantyyppisiä variaatioita: syöte erillisellä read only -nauhalla nauhoilla alkukohta jonka vasemmalle puolelle ei saa mennä Näissä tapauksissa on myös selvää että tunnistamiseen käytettävien laskenta-askelien määrä ei muutu liikaa. Epädeterministiset koneet, joita seuraavaksi käsitellään, ovat ilmaisuvoimaltaan samoja kuin deterministiset mutta laskenta-aikojen suhteen tilanne on ongelmallisempi. 39

40 Epädeterministiset Turingin koneet analoginen epädeterministisen äärellisen ja pinoautomaatin kanssa yhdestä tilanteesta voi olla useita vaihtoehtoisia siirtymiä intuitio: ajatellaan että kone osaa arvata vaihtoehdon joka johtaa lopulta hyväksyvään tilaan (jos mahdollista) epädeterminismi on näppärä ohjelmointitekniikka Erityyppinen variantti kuin moninauhaiset jne. koneet ei (kovin) realistinen laskennan malli ratkeavien ongelmien luokka ei muutu vaikka epädeterminismi sallitaan tilanne muuttuu oleellisesti jos puhutaan nopeasta ratkaisemisesta; tähän palataan kurssin loppupuoliskolla 40

41 Muodollinen määrittely: Epädeterministinen Turingin kone (Nondeterministic Turing machine, NTM) on seitsikko missä M = (Q, Σ, Γ, δ, q 0, B, F ) Q, Σ, Γ, q 0, B ja F kuten deterministisessä tapauksessa siirtymäfunktio on funktio missä δ: Q Γ P(Q Γ { L, R }) P(A) = joukon A potenssijoukko = { B B A } 41

42 Epädeterministisen koneen hyväksymä kieli määritellään tilanteet vqw kuten deterministisessä tapauksessa samoin seuraajarelaatio M ja sen sulkeuma M, paitsi että ehdot muotoa (q, Y, D) = δ(q, X) korvataan ehdoilla (q, Y, D) δ(q, X) voi päteä vqw M v q w nollalla, yhdellä tai useammalla v q w (kuitenkin kork. 2 Q Γ ) koneen M hyväksymä kieli on L(M) = { x Σ q 0 x M vqw joillain q F, v, w Γ } M hyväksyy jos sopivat seuraajatilanteen valinnat johtaisivat hyväksyvään tilaan 42

43 Olkoon M epädeterministinen Turingin kone. Osoitetaan nyt miten kieli L(M) voidaan tunnistaa deterministisellä Turingin koneella. Perusidea koneen M simuloimiseksi annetulle syötteellä: tutkitaan (mahdollisesti ääretöntä) verkkoa, jonka solmuina ovat alkutilanteesta saavutettavissa olevat koneen M tilanteet tilanteiden vqw ja v q w välillä on kaari jos vqw M v q w M hyväksyy jos alkutilanteesta on polku hyväksyvään tilanteeseen etsitään tällainen polku leveyssuuntaisesti 43

44 Tarkemmin: Oletetaan että M on yksinauhainen. Simuloidaan deterministisellä 3-nauhaisella konella M. nauha 1 on työnauha nauha 2 sisältää jonon (queue) jolla leveyshakua ohjataan nauhaa 3 käytetään tilanteiden monistamiseen jonon jatkoksi Jos koneen M nauha-aakkosto on Γ, otetaan uudeksi nauha-aakkostoksi Γ = Γ { } Q. Jono jossa tilanteet v 1 q 1 w 1,..., v n q n w n voidaan koodata nauhalle 2 muotoon... ### v 1 q 1 w 1 v 2 q 2 w 2... v n q n w n ###... 44

45 Simulaatio (eli polunetsintä) etenee vaiheittain. vaiheen 1 aluksi nauhalla 2 on syötettä x vastaava alkutilanne q 0 x jos vaiheen k aluksi nauhalla 2 on (tyhjämerkkien lisäksi) niin vaiheen k lopuksi nauhalla on v 1 q 1 w 1 v 2 q 2 w 2... v n q n w n v 2 q 2 w 2... v n q n w n v 1 q 1 w 1 v 2 q 2 w 2... v p q p w p missä v i q i w i, i = 1,..., p, ovat ne tilanteet joilla v 1q 1 w 1 M v i q i w i. jos joskus tulee kirjoitettavaksi koneen M hyväksyvän tilan koodi, niin M hyväksyy syötteen jos jono tyhjenee, niin M hylkää syötteen 45

46 Vaiheen k toteutus suunnilleen: tarkista kuinka monta seuraajaa tilanteella v 1 q 1 w 1 on (huom. tällä on vakioyläraja 2 Γ Q ) tee tilanteesta v 1 q 1 w 1 tämän mukainen määrä kopioita nauhalle 3 käy kopiot järjestyksessä läpi ja muuta kukin vastaamaaan oikeannumeroista seuraajaa kopioi nauhalta 3 nauhalle 2 46

47 Oletetaan että koneella M on jokin hyväksyvä kork. n askelen pituinen laskenta, ja millään tilanteella ei ole yli m seuraajaa. M vie ensin jonoon tilanteet yhden (koneen M) laskenta-askelen päässä alkutilanteesta, sitten kahden askelen jne. k askelen päässä olevan tilanteen löytämiseksi voidaan joutua käymään läpi 1 + m + m m k tilannetta siis riittää tutkia nm n tilannetta yhden koneen M tilanteen kuvaus on O(n) merkkiä selvästi M hyväksyy jossain äärellisessä ajassa 47

48 Johtopäätös: Jos A = L(M) jollain epädeterministisellä M, niin A = L(M ) eräällä deterministisellä M. Käänteinen suunta tietysti myös pätee. Siis kieli A voidaan tunnistaa epädeterministisellä Turingin koneella jos ja vain jos se voidaan tunnistaa deterministisellä Turingin koneella. Mutta edelläesitetyssä konstruktiossa laskenta-askelia voi tulla eksponentiaalisesti lisää; tätä ongelmapiiriä käsitellään kurssin loppupuoliskolla. Huom. Tässä vaiheessa olisi tarkoitus tuntua suunnilleen uskottavalta, että Turingin koneella voidaan ratkaista tasan ne ongelmat joille on olemassa algoritmi, siinä mielessä kuin sanaa algoritmi on käytetty esim. kurssilla Tietorakenteet. Tätä väittämää perustellaan pian tarkemmin. 48

49 Muita universaaleja laskennan malleja Tällä kurssilla Turingin kone on valittu algoritmikäsitteen formalisoinniksi. Toisin sanoen tulkitsemme, että laskentaongelmalle on olemassa algoritmi, jos ja vain jos se voidaan ratkaista Turingin koneella. Jotta tämä valinta ei tuntuisi aivan mielivaltaiselta, käymme lyhyesti läpi edustavan kokoelman muita algoritmikäsitteelle ehdotettuja formalismeja: Random Access Machine: idealisoitu moderni tietokone Rajoittamattomat kieliopit: mahdollisimman yleinen produktiosääntöhin perustuva malli Rekursiiviset funktiot: algoritmisesti ratkeavien ongelmien joukko määritellään sellaisten sulkeumaominaisuuksien kautta, joita sillä tulisi olla ( jos ongelmalla A on ratkaisualgoritmi, niin silloin myös siitä muodostetulla ongelmalla B pitäisi olla ratkaisualgoritmi ) Osoittautuu, että kaikki nämä lähestymistavat johtavat oleellisesti samaan algoritmin käsitteeseen kuin Turingin koneet. 49

50 Edellä on yksinkertaisuuden vuoksi rajoituttu päätösongelmiin. Seuraavaksi esiteltävistä formalismeista Random Access Machine ja rekursiiviset funktiot ovat luontevampia ajatella osittaisten funktioden kautta. Olkoon M deterministinen Turingin kone, jonka syöteaakkosto on Σ. Oletetaan lisäksi, että M pysähtyy vain muotoa vqw olevissa tilanteissa, missä v, w Σ. Koneen M laskema osittainen funktio f: Σ Σ määritellään nyt seuraavasti: jos M syötteellä x pysähtyy tilanteeseen vqw, niin f(x) = vw Σ jos M syötteellä x ei pysähdy, niin f(x) ei ole määritelty. (Jos M jollain syötteellä pysähtyy siten, että nauhalla on ylimääräisiä syöteaakkostoon kuulumattomia merkkejä, se ei siis ylipäänsä laske mitään osittaista funktiota. Funktion laskemisessa ei kiinnitetä huomiota siihen, pysähtyykö kone hyväksyvään vai ei-hyväksyvään tilaan.) Yleisessä tapauksessa f ei ole oikea funktio, koska se ei ole määritelty kaikilla argumentin arvoilla x. Niinpä laskettavuuden teoriassa esiintyy paljon osittaisia funktioita. Jos M pysähtyy kaikilla syötteillä, asiaa usein korostetaan sanomalla että se laskee totaalisen funktion. 50

51 Random Access Machine (RAM) ( ) abstraktin tietokoneen konekieliohjelma koneessa rajoittamaton määrä rekistereitä jotka voivat sisältää mielivaltaisen suuren kokonaisluvun merkitään rekisterin j sisältöä r j, j = 0, 1, 2,... rekisteri 0 akku; lisäksi käskyosoitin κ syötteenä luvut i 1, i 2, i 3,... tuloste on rekisterin 0 sisältö laskennan pysähtymishetkellä; jos laskenta ei pysähdy, tuloste ei ole määritelty 51

52 RAMin käskykanta käsky merkitys READ j r 0 := i j READ *j r 0 := i rj STORE j r j := r 0 STORE *j r rj := r 0 LOAD x r 0 := val(x) ADD x r 0 := r 0 + val(x) SUB x r 0 := r 0 val(x) käsky merkitys HALF r 0 := r 0 /2 JUMP j κ := j JPOS j jos r 0 > 0 niin κ := j JZERO j jos r 0 = 0 niin κ := j JNEG j jos r 0 < 0 niin κ := j HALT laskenta pysähtyy r j on rekisterin numero j sisältämä kokonaisluku x voi olla jokin vaihtoehdoista %j, j tai j missä j N. val(%j) = j, val(j) = r j ja val( j) = r rj 52

53 Turingin koneiden ja RAMin vertaamiseksi samastetaan luonnolliset luvut ja niiden binääriesitykset. Toisin sanoen olkoon b(n) { 0, 1 } luvun n binääriesitys, kun n N. Sanomme, että Turingin kone M laskee osittaisen funktion f: N N, jos M laskee osittaisen funktion ˆf: { 0, 1 } { 0, 1 }, missä jos x = b(n) jollain n ja f(n) = m N, niin ˆf(x) = b(m) muuten ˆf(x) ei ole määritelty. Lause: Osittainen funktio f: N N voidaan laskea Turingin koneella, jos ja vain jos se voidaan laskea RAMilla. Todistushahmotelma: Vain jos -suunta on helppo: RAMilla pitää ensin muuntaa syöteluku binääriesityksekseen ja sen jälkeen simuloida Turingin konetta. Tämä on suoraviivainen ohjelmointiharjoitus. Jos -suuntaa varten kontruoidaan annetulle RAMille sitä simuloiva 7-nauhainen Turingin kone. Seuraavassa esitetään vain nauhojen sisältö, yksityiskohdat sivuutetaan. 53

54 Nauha 1: syöteluvut sopivasti koodattuna Nauha 2: rekisterien sisältö koodattuna jonoiksi b(j) : b(r j ) missä siis b( ) tarkoittaa binääriesitystä; näiden jonojen välillä voi olla mielivaltainen määrä tyhjämerkkejä Nauha 3: käskyosoitin κ Nauha 4: se indeksi j jota vastaavaa r j ollaan etsimässä nauhalta 2 Nauhat 5 7: työnauhoja aritmetiikkaan jne. 54

55 Turingin kone vs. tietokone [HMU 8.6] Edellä esitetyn perusteella Turingin kone on sopiva malli modernille tietokoneelle, jolla on käytettävissään rajoittamaton määrä muistia. Reaalisissa tietokoneissa on aina jokin kiinteä yläraja käytettävissä olevan muistin määrälle. Periaatteessa oikea malli tietokoneelle, jossa on B bittiä muistia, olisi äärellinen 2 B -tilainen automaatti. Näin monitilaisen systeemin ajatteleminen äärellisenä automaattina ei kuitenkaan ole kovin intuitiivista. Kun systeemiä ajatellaan Turingin koneena, saavutetaan se etu, että kontrolliosa on pieni, hallittavissa oleva ja sama kaiken kokoisille syötteille. Tämän takia siedetään mallissa se epärealistinen piirre, että Turingin koneen simulaatio voi joillain syötteillä vaatia enemmän muistia kuin fyysisesti on käytettävissä. Millä tahansa yksittäisellä päättyvällä laskennalla tosin tarvitaan vain jokin äärellinen määrä muistia, mutta tätä määrää ei voi tietää ennakolta. 55

56 Rajoittamattomat kieliopit ( ) Ohjelmoinnin ja laskennan perusmalleista muistetaan, että kieli voidaan kuvata (esim.) kieliopilla joka tuottaa sen, tai automaatilla joka tunnistaa sen. säännölliset lausekkeet äärelliset automaatit kontekstittomat kieliopit pinoautomaatit Nyt saadaan yksi vastaava pari lisää: rajoittamattomat kieliopit Turingin koneet 56

57 Rajoittamaton kielioppi on nelikko G = (V, Σ, P, S) missä V aakkosto Σ päätemerkit; N = V Σ välikemerkit P (V { ε }) V produktiot S N lähtösymboli Produktiota (α, β) merkitään yleensä α β. Erona kontekstittomiin kielioppeihin, että produktion vasemmalla puolella voi olla mikä tahansa epätyhjä merkkijono. 57

58 Merkkijono γ V johtaa suoraan merkkijonon γ V jos voidaan kirjoittaa γ = αωβ ja γ = αω β missä ω ω P. Tällöin merkitään γ G γ. Merkkijono γ V johtaa merkkijonon γ V jos on olemassa γ 0 = γ, γ 1, γ 2,..., γ n = γ joille γ i 1 G γ i. Tällöin merkitään γ G γ. Kieliopin G tuottama kieli on L(G) = { } x Σ S x. G 58

59 Esimerkki: muodostetaan G = (V, Σ, P, S) jolle L(G) = { a k b k c k k 0 }. (Huom. kieli { a k b k c k k 0 } ei ole kontekstiton.) Siis Σ = { a, b, c }. Valitaan N = { S, X, T, A, B, C } ja otetaan produktiot S XT S ε T ABCT T ABC BA AB CA AC CB BC XA a aa aa ab ab bb bb bc bc cc cc 59

60 Siis merkkijonon a k b k c k tuottamiseksi tuotetaan X(ABC) k järjestetään A-, B- ja C-merkit aakkosjärjestykseen; tuloksena XA k B k C k korvataan isot kirjaimet pienillä vasemmalta alkaen. Tämä osoittaa että rajoittamattomilla kieliopeilla voidaan tuottaa muitakin kuin kontekstisia kieliä. Seuraavaksi käydään periaatetasolla läpi konstruktiot, jotka osoittavat että itse asiassa rajoittamattomilla kieliopeilla voidaan tuottaa tasan ne kielet, jotka voidaan tunnistaa Turingin koneella. 60

61 Lause: Jos kieli voidaan tuottaa rajoittamattomalla kieliopilla, niin se voidaan tunnistaa Turingin koneella. Todistus (periaate): Olkoon G rajoittamaton kielioppi. Aiemmin esitetyn perusteella riittää muodostaa kaksinauhainen epädeterministinen Turingin kone M jolle L(M) = L(G). Nauha 1 sisältää vain kopion syötejonosta. Nauhalle 2 tuotetaan (epädeterministisesti) lähtösymbolista tuotettavissa olevia merkkijonoja. Laskennan aluksi nauhalle 2 kirjoitetaan pelkkä lähtösymboli. Jos jossain vaiheessa nauhojen sisällöt ovat samat, hyväksytään. 61

62 Laskenta koostuu vaiheista joissa kussakin viedään epädeterministisesti nauhan 2 nauhapää mielivaltaiseen paikkaan valitaan epädeterministisesti mielivaltainen kieliopin G produktio jos nauhapään kohdalta löytyy produktion vasen puoli, kirjoitetaan sen paikalle produktion oikea puoli verrataan nauhojen 1 ja 2 sisältöjä Koska produktioita on äärellinen määrä, ne voidaan koodata Turingin koneen tiloihin. Tarkemmat yksityiskohdat sivuutetaan. 62

63 Lause: Jos kieli voidaan tunnistaa Turingin koneella, niin se voidaan tuottaa rajoittamattomalla kieliopilla. Todistus: Olkoon M = (Q, Σ, Γ, δ, q 0, #, F ) annettu. Idea on muodostaa kielioppi G = (V, Σ, P, S) joka tuottaa koneen M tilanteita. Välikkeiksi otetaan siis ainakin koneen M tilojen symbolit. Produktiot suunnitellaan siten että [vqw] G [v q w ] jos ja vain jos vqw M v q w missä [ ja ] ovat uusia välikesymboleja. Tämä on mahdollista koska vqw M v q w edellyttää että vqw ja v q w eroavat toisistaan vain merkin q lähiympäristössä. 63

64 Merkkijonon x L(M) tuottaminen tapahtuu kolmessa vaiheessa: 1. tuotetaan lähtösymbolista S merkkijono x[q 0 x]. 2. muunnetaan x[q 0 x] G x[vq f w] missä q f F 3. siistitään x[vq f w] G x Varsinainen työ tapahtuu vaiheessa 2 jossa G simuloi konetta M. Jos x L(M), niin G ei pysty tuottamaan muotoa x[vq f w] olevia merkkijonoja. 64

65 Esitetään vielä konstruktion yksityiskohdat. Aakkostona on (huom. Σ Γ). V = Γ Q { S, T, [, ], X, Y } { A a a Σ } Produktiot jakautuvat edelläesitettyjen vaiheiden mukaisesti kolmeen osakokonaisuuteen: Vaihe 1: alkutilanteen tuottaminen S T [q 0 ] T ε T at A a A a [q 0 [q 0 A a A a b ba a A a ] a] (kaikilla a, b Σ) 65

66 Vaihe 2: siirtymien simulointi (nämä niille a, b, c Γ jotka ilmenevät siirtymäfunktiosta) Siirtymä δ(q, a) = (q, b, R) δ(q, a) = (q, b, L) δ(q, #) = (q, b, R) δ(q, #) = (q, b, L) δ(q, a) = (q, b, L) Vastaava produktio qa bq cqa q cb q] bq ] cq] q cb] [qa [q #b Vaihe 3: lopputilanteen siistiminen (kaikille a Γ, q f F ) q f XY ax X [X ε Y a Y Y ] ε 66

67 Chomskyn hierarkia Noam Chomskyn vuonna 1956 esittämä luokittelu kieliopeille niiden ilmaisuvoiman mukaan tyyppi kieli kielioppi tunnistaminen 0 rekurs. lueteltava rajoittamaton Turingin kone 1 kontekstinen kontekstinen lin. rajoitettu TM 2 kontekstiton kontekstiton pinoautomaatti 3 säännöllinen oikealle lin. äärellinen autom. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit kuvan täydentämiseksi käydään tässä lyhyesti läpi taso 1 67

68 Kontekstinen kielioppi: kuten rajoittamaton kielioppi mutta produktioiden muotoa rajoitetaan sallitaan produktiot α β missä β α lisäksi sallitaan produktio S ε olettaen että S ei esiinny minkään produktion oikealla puolella Nimi kontekstinen tulee siitä, että tällaiset kielet voidaan muuntaa muotoon jossa produktiot (pl. mahd. S ε) ovat tyyppiä αaβ αωβ missä A on välike ja ω ε. Siis intuitiivisesti produktiota A ω saadaan käyttää vain kontekstissa α β. 68

69 Lineaarisesti rajoitettu Turingin kone on epädeterministinen yksinauhainen Turingin kone joka ei koskaan kirjoita mitään muuta niiden tyhjämerkkien päälle jotka nauhalla on alkutilanteessa. Siis kone käyttää ainoastaan syötteen pituuden verran nauhatilaa. Lause Kieli voidaan tuottaa kontekstisella kieliopilla jos ja vain jos se voidaan tunnistaa lineaarisesti rajoitetulla Turingin koneella. (Todistus sivuutetaan.) Tämä on siis esimerkki laskennan mallista, jossa pelkästään syötteen koon perusteella saadaan yläraja sen vaatiman laskennan määrälle. Universaaleilla laskennan malleilla näin ei ole, vaan lyhytkin syöte voi johtaa pitkään laskentaan. 69

70 Rekursiiviset funktiot (Gödel ja Kleene 1936) ( ) Palautetaan mieliin: kieli A on rekursiivisesti lueteltava jos A = L(M) jollain Turingin koneella M A on rekursiivinen jos lisäksi M pysähtyy kaikilla syötteillä Käytetään taas luvun n binääriesitykselle merkintää b(n), ja oletetaan että A { 0, 1 } n on joukko tällaisia binääriesityksiä (jos x A niin x = b(n) jollain n N). Seuraavassa määritellään rekursiiviset funktiot f: N N joille osoittautuu pätevän A on rekursiivinen kieli jos ja vain jos π A on rekursiivinen funktio, missä π A (n) = 1 jos b(n) A ja π A (n) = 0 muuten. A on rekursiivisesti lueteltava jos ja vain jos jollain rekursiivisella f pätee A = { b(f(x)) x N } 70

71 Rekursiivisten funktioiden määritelmän idea on seuraava: tietyt alkeisfunktiot pitäisi ilman muuta osata laskea jos on annettu joitain perusfunktioita jotka osataan laskea, niin niistä tietyillä yksinkertaisilla operaatioilla muodostetut funktiot pitäisi myös osata laskea Rekursiivisia funktioita ovat tasan ne jotka tämän logiikan mukaan pitäisi osata laskea. Tässä on siis tavallaan deklaratiivinen määritelmä laskettavuudella, itse laskentaprosessista ei puhuta mitään. Tietysti intuitio laskentaprosesseista on vahvasti taustalla kun valitaan sopivat alkeisfunktiot ja operaatiot. 71

72 Määritellään ensin yleisemmin osittaisrekursiiviset funktiot N k N. Alkeisfunktiot nollafunktio Z: N N, Z(x) = 0 kaikilla x seuraajafunktio S: N N, S(x) = x + 1 kaikilla x kaikilla n N ja 1 i n projektiofunktio U n i : Nn N, U n i (x 1,..., x n ) = x i kaikilla x 1,..., x n N Nämä ovat kaikki totaalisia funktioita eli määritelty kaikilla argumenttien arvoilla 72

73 Määritellään nyt operaatioita uusien funktioiden muodostamiseksi. Sijoitus: kun on annettu f: N k N ja g 1,..., g k jotka ovat funktioita N m N, sijoitus tuottaa funktion h: N m N, h(x) = f(g i (x),..., g k (x)) Rekursio: kun on annettu funktiot f: N k N ja g: N k+2 N, rekursio tuottaa sen funktion h: N k+1 N jolle h(x, 0) = f(x) h(x, y + 1) = g(x, y, h(x, y)) Jos jollain argumentilla x esim. jokin g i (x) ei ole määritelty, niin myöskään sijoittamalla saatu h(x) ei ole määritelty tällä x jne. Jos annetut funktiot ovat totaalisia, myös sijoittamalla ja rekursiolla syntyvät funktiot ovat. 73

74 Primitiivirekursiivisten funktioiden joukko PR on pienin joukko joka sisältää funktiot Z, S ja U n i kaikilla i, n ja on suljettu sijoittamisen ja rekursion suhteen (ts. jos funktiot f ja g i ovat joukossa PR, myös niistä sijoituksella tai rekursiolla saadut funktiot ovat) Siis PR koostuu tasan niistä funktioista, jotka voidaan muodostaa alkeisfunktioista Z, S ja Ui n sijoitusta ja rekursiota käyttäen. Tästä seuraa että kaikki primitiivirekursiiviset funktiot ovat totaalisia. 74

75 Esimerkkejä Identiteettifunktio f(x) = x on sama kuin projektio U 1 1. Muodostetaan g yhdistämällä S ja U3 3, siis g(x, y, z) = z + 1. Yhteenlaskufunktio p(x, y) = x + y toteuttaa p(x, 0) = x p(x, y + 1) = p(x, y) + 1 joten se saadaan rekursiolla ylläolevista f ja g. Kertolaskufunktio m(x, y) = xy puolestaan toteuttaa m(x, 0) = 0 m(x, y + 1) = m(x, y) + x joten se saadaan edelleen rekursiolla yhteenlaskufunktion avulla. 75

76 Kaikki tavalliset aritmeettiset perusfunktiot nähdään helposti primitiivirekursiivisiksi. Yleisemmin primitiivirekursiivisia ovat täsmälleen ne funktiot, jotka voidaan laskea käyttäen vain for-silmukoita joissa iteraatioiden määrä pitää kiinnittää ennen silmukan suorituksen alkua. On kuitenkin funktioita joiden laskemiseen tarvitaan yleisempää while-silmukkaa. Esim. voidaan osoittaa että Ackermannin funktio ψ(0, y) = y + 1 ψ(x + 1, 0) = ψ(x, 1) ψ(x + 1, y + 1) = ψ(x, ψ(x + 1, y)) kasvaa nopeammin kuin mikään primitiivirekursiivinen funktio Siis universaaliin laskennan malliin tarvitaan jokin primitiivirekursiota voimakkaampi mekanismi 76

77 Minimointi: kun on annettu funktio f: N k+1 N, minimointi tuottaa funktion g: N N jolle 1. jos jollain y kaikki arvot f(x, 0),..., f(x, y) ovat määriteltyjä ja f(x, y) = 0, niin g(x) on pienin tällainen y 2. muuten g(x) ei ole määritelty Arvoa y = g(x) voi tietysti etsiä laskemalla järjestyksessä f(x, 0), f(x, 1), f(x, 2), f(x, 3),... ja pysähtymällä kun tulee nolla. Etukäteen ei kuitenkaan ole mitään arviota, kuinka pitkälle joudutaan laskemaan. 77

78 Osittaisrekursiivisten funktioiden joukko PR on pienin joukko joka sisältää funktiot Z, S ja U n i kaikilla i, n ja on suljettu sijoittamisen, rekursion ja minimoinnin suhteen Rekursiivisia ovat ne osittaisrekursiiviset funktiot jotka ovat totaalisia. Esim. Ackermannin funktio ja kaikki primitiivirekursiiviset funktiot ovat rekursiivisia. Kuten alussa todettiin, voidaan osoittaa (kun A on joukko binäärikoodeja) että A on rekursiivinen kieli jos ja vain jos π A on rekursiivinen funktio A on rekursiivisesti lueteltava jos ja vain jos jollain rekursiiviselle f pätee A = { b(f(x)) x N } lisäksi A on rekursiivisesti lueteltava jos ja vain jos π A on osittaisrekursiivinen, missä π A (x) = 1 jos b(x) A ja π A (x) ei ole määritelty muuten 78

79 Churchin-Turingin teesi [HMU 8.2.1] Turing esitti oman määritelmänsä matemaattisen logiikan tarpeisiin malliksi siitä, mitä ihminen voi laskea sääntöjä mekaanisesti seuraamalla. Samoihin aikoihin samoihin tarpeisiin esitettiin useita muitakin määritelmiä (Gödel & Kleene; Postin produktiojärjestelmät). Nämä kaikki osoittautuivat Turingin määritelmän kanssa yhtäpitäviksi. Myöhemmin Turingin kone osoittautui hyväksi malliksi myös nykyaikaiselle tietokoneelle. Tästä seuraava askel on Churchin-Turingin teesi: Turingin koneet on oikea malli sille, mitä ylipäänsä on mahdollista laskea mekaanisesti sääntöjä seuraamalla. Teesi ei tietenkään ole matemaattinen väittämä. Sitä voidaan pitää empiirisenä väittämänä, koska se on periaatteessa falsifioitavissa esittämällä laskulaite, joka laskee ei-rekursiivisia funktioita. Tämäkin on tosin hieman ongelmallista, koska käytännössä voidaan tarkastella vain rajoitetun kokoisia syötteitä. Nykyään teesi on varsin laajasti hyväksytty, mutta ideoita Turingin konetta voimakkaammista laskulaitteista esitetään toisinaan. 79

80 2. Laskettavuusteoriaa Käymme läpi ratkeamattomuuteen liittyviä ja perustuloksia ja -tekniikoita [HMU luku 9]. Tämän luvun jälkeen opiskelija tuntee joukon keskeisiä ratkeamattomuustuloksia osaa esittää tyypillisiä Turingin koneisiin liittyviä ongelmia formaalisti ja tarkastella niiden ratkeavuutta tunnettujen tulosten valosssa osaa yhdistää käytännön algoritmiongelmia tunnettuihin formaaleihin ratkeamattomuustuloksiin osaa tehdä yksinkertaisia ratkeamattomuustodistuksia 80

81 Palautetaan mieliin terminologiaa: Kieli L Σ on rekursiivisesti lueteltava jos A = L(M) jollain Turingin koneella M. Turingin kone on totaalinen jos se pysähtyy kaikilla syötteillä. (Joissain lähteissä käytetään termiä algoritmi spesifisti tällaisista koneista.) Kieli L Σ on rekursiivinen jos A = L(M) jollain totaalisella Turingin koneella M. Vastaavasti Päätösongelma π: Σ { 0, 1 } on osittain ratkeava jos vastaava kieli on rekursiivisesti lueteltava. A π = { x Σ π(x) = 1 } Päätösongelma π on ratkeava jos A π on rekursiivinen. 81

82 Termien selityksiä rekursiivinen tulee siitä että tämä kieliluokka historiallisesti vakiintui Kleenen ja Gödelin rekursiokonstruktion kautta lueteltava tulee siitä että A on rekursiivisesti lueteltava jos ja vain jos on olemassa algoritmi joka luettelee joukon A alkiot (ja vain ne) jos x A niin x esiintyy luettelossa jonkin äärellisen ajan kuluttua ja asia on selvä jos x A niin x ei tule koskaan esiintymään luettelossa, mutta tätähän ei voi tietää pelkästään katsomalla jotain luettelon äärellistä alkuosaa Luetteloimisidea esitetään myöhemmin yksityiskohtaisemmin. Huom. kaikista laskennallisista ongelmista vain häviävän pieni osa on edes osittain ratkeavia, mutta tietojenkäsittelytieteessä tietysti yleensä keskitytään ratkeaviin ongelmiin. 82

83 Churchin-Turingin teesin mukaan ratkeavuus tarkoittaa samaa, kuin että ongelma voidaan ratkaista jollain algoritmisella menettelyllä. Esitämme jatkossa joukon Turingin koneita koskevia eksakteja matemaattisia tuloksia, mutta jos uskomme C-T:n teesin, näillä on siis yleisempiä seurauksia. C-T:n teesi oikeastaan motivoi koko tämän tutkimusohjelman, koska muuten Turingin koneet eivät välttämättä olisi kovin kiinnostava tutkimuskohde. (Tosin voidaan kumminkin argumentoida, että Turingin kone on oikea malli sille mitä ihminen voi mekaanisesti laskea, ja mitä nykyiset tietokoneet voivat laskea.) Joka tapauksessa on kuitenkin selvää, että jos ongelma osataan ratkaista esim. Java-kielellä, se voidaan ratkaista myös Turingin koneella (vrt. RAM-malli luvussa 1). Samoin joka tapauksessa jonkin ongelman ratkeamattomuuden osoittaminen on aina ei-triviaalia, koska pitää osoittaa että mikään Turingin kone ei ratkaise sitä. 83

84 Formaalin logiikan todistuvuusongelma (Motivoiva esimerkki yleisellä tasolla; yksityiskohdat ks. esim. Matemaattinen logiikka) Annettu: ensimmäisen kertaluvun predikaattilogiikan kaava φ Kysymys: onko kaavalle φ olemassa todistus predikaattilogiikan aksioomista Voidaan helposti luetella ensin kaavat joilla on yhden askelen mittainen todistus, sitten ne joilla on kahden askelen mittainen todistus jne. Siis todistuksen omaavien kaavojen joukko on rekursiivisesti lueteltava, ja todistuvuusongelma osittain ratkeava. Kuitenkin osoittautuu, että todistuvuusongelma ei ole ratkeava. 84

85 Pysähtymisongelma (johdanto) [HMU 9.1] Intuitiivisesti on kysymys seuraavasta ongelmasta: Annettu: Turingin kone M, merkkijono x Kysymys: pysähtyykö kone M syötteellä x Tavoitteena on osoittaa tämä ongelma ratkeamattomaksi. Ensimmäinen osatavoite, puhtaasti tekninen ja käsitteellisesti yksinkertainen, on esittää Turingin koneet merkkijonoina. Muutenhan niistä ei olisi formaalisti mielekästä edes puhua algoritmin syötteenä tms. Esitämme siis seuraavaksi yksinkertaisen koodauksen, joka liittää jokaiseen Turingin koneeseen M = (Q,..., F ) merkkijonon w { 0, 1 } ja kääntäen. 85

86 Turingin koneiden koodaus Rajoittaudutaan yksinauhaisiin koneisiin ja syöteaakkostoon Σ = { 0, 1 }. Lisäksi oletetaan että hyväksyviä tiloja on tasan yksi ja se ei ole alkutila. Numeroidaan aakkoston { 0, 1 } merkkijonot siten, että merkkijonon w numero on 1w binääriluvuksi tulkittuna. Olkoon w i merkkijono numero i; siis w 1 = ε, w 2 = 0, w 3 = 1, w 4 = 00, w 5 = 01 jne. Oletetaan nyt M = (Q, { 0, 1 }, Γ, δ, q 1, #, F ) missä Q = k, Q = { q 1,..., q k } ja F = { q 2 } Γ = m 3, Γ = { X 1,..., X m }, X 1 = 0, X 2 = 1, X 3 = # suunnat on numeroitu L = D 1 ja R = D 2 86

87 Nyt kaikki muu paitsi δ on numeroitu. koodataan yksittäinen siirtymä δ(q i, X j ) = (q k, X l, D m ) jonoksi 0 i 10 j 10 k 10 l 10 m huom. i, j, k, l, m 1 joten tässä ei koskaan tule kahta ykköstä peräkkäin merkkijono C 1 11C C n 1 11C n on koodi koneelle jossa on n siirtymää joiden koodit ovat C 1,..., C n Huomaa että samalla koneella on tyypillisesti useita eri koodeja yksi merkkijono ei kuitenkaan voi koodata useita eri koneita jotkin merkkijonot eivät ole minkään koneen koodeja 87

88 Olkoon M triv jokin kiinteä Turingin kone joka hylkää kaikki syötteet. Määritellään kaikille w { 0, 1 } Turingin kone M w seuraavasti: jos w on jonkin koneen M koodi, niin M w on tämä M muuten M w = M triv Aputuloksena pysähtymisongelman ratkeamattomuustodistuksessa osoitetaan, että diagonaalikieli ei ole edes rekursiivisesti lueteltava. L d = { w { 0, 1 } w L(M w ) } Kieli L d on hieman keinotekoinen. Sen merkitys on lähinnä, että sen avulla voidaan osoittaa muita kiinnostavampia ongelmia ratkeamattomaksi. 88

89 Analogia: Koodit ja ohjelmointikielet Eräs mahdollinen analogia on seuraava: Tulkitaan, että ohjelma hyväksyy syötteen, jos sen suoritus päättyy normaalisti, ja hylkää jos suoritus päättyy virheeseen. Lisäksi ohjelma voi jäädä silmukkaan. Nyt Turingin kone M konekieliohjelma merkkijono w { 0, 1 } ASCII-merkkijono (esim. C-ohjelma) M w ohjelma w käännettynä M triv konekieliohjelma joka aina jää silmukkaan Lisäksi sovimme, että M w = M triv jos w ei ole syntaktisesti korrekti C-ohjelma. Nyt C-ohjelma kuuluu joukkoon L d, jos se ei pysähdy normaalisti, kun (se käännetään ja) siille annetaan syötteenä oma lähdekoodinsa. Huom. C-kieli ja konekieli ovat yhtä laskentavoimaisia, joten analogia voitaisiin ajatella toisinkin päin: konekieliohjelmasta voidaan kääntää C-ohjelma. 89

90 Lause 2.1: [HMU Thm. 9.2] Kieli L d = { w { 0, 1 } w L(M w ) } ei ole rekursiivisesti lueteltava. Todistus: Tehdään vastaoletus että L d = L(M) jollain M. Olkoon w jokin koneen M koodi; siis L d = L(M w ). Nyt w L d w L(M w ) w L d missä on ensin käytetty kielen L d määritelmää ja sitten koodin w valintaperustetta; ristiriita. Nyt olemme saaneet ensimmäisen konkreettisen ratkeamattomuustuloksen. Jatkossa osoitamme suurelle joukolle ongelmia X, että jos X osattaisiin ratkaista, niin L d voitaisiin tunnistaa. Tästä seuraa ongelman X ratkeamattomuus yo. lauseen nojalla. 90

91 Rekursiivisuuden perusominaisuuksia [HMU ] Ennen kuin ruvetaan tarkastelemaan varsinaisen pysähtymisongelman ratkeamattomuutta, on hyödyllistä tarkastella rekursiivisten kielten luokan joitain perusominaisuuksia. Oletetaan jatkossa että Turingin koneissa on tasan yksi hyväksyvä tila, ja tästä ei mitään siirtymiä tasan yksi sellainen ei-hyväksyvä tila, josta ei ole mitään siirtymiä (hylkäävä lopputila) muuten kaikki siirtymät määriteltyjä On helppo muuntaa mikä tahansa Turingin kone tällaiseen muotoon. 91

92 Lause 2.2: Olkoot A, B Σ rekursiivisia. Nyt myös A = Σ A, A B ja A B ovat rekursiivisia. Todistus: Olkoon A = L(M A ) ja B = L(M B ) missä M A ja M B ovat totaalisia. Esitetään Turingin koneet kaavamaisesti: alkutila M hyväksyvä hylkäävä 92

93 Kielen A hyväksyvä kone saadaan vaihtamalla koneen M A hyväksyvä ja hylkäävä lopputila keskenään Kielen A B hyväksymiseksi simuloidaan ensin konetta M A. jos M A hyväksyy, niin hyväksytään jos M A hylkää, niin simuloidaan konetta M B jonka ratkaisu jää voimaan (kuva seuraavalla sivulla) Tapaus A B seuraa koska A B = A B 93

94 M A M B Kielen A B tunnistaminen koneiden M A ja M B avulla 94

95 Lause 2.3: Olkoot A, B Σ rekursiivisesti lueteltavia. Nyt myös A B ja A B ovat rekursiivisesti lueteltavia. Todistus: Harjoitustehtävä. Sen sijaan yleisesti ei päde että rekursiivisesti lueteltavan kielen A komplementti A olisi rekursiivisesti lueteltava. Sen sijaan pätee Lause 2.4: Kieli A on rekursiivinen jos ja vain jos sekä A että A ovat rekursiivisesti lueteltavia. 95

96 Todistus: Jos A rekursiivinen, niin A on rekursiivinen, joten suunta vasemmalta oikealle on selvä. Olkoot toisaalta M A ja M A koneet jotka tunnistavat kielet A ja A. Muodostetaan kaksinauhainen kone M, joka on totaalinen ja tunnistaa kielen A. Kone M simuloi konetta M A käyttäen ykkösnauhaansa ja konetta M A käyttäen kakkosnauhaansa. Simulaatiot suoritetaan lomittain, aina yksi askel kerrallaan kumpaakin. Jos simuloitava M A hyväksyy, M hyväksyy. Jos simuloitava M A hyväksyy, M hylkää. Koska jokaisella x joko x L(M A ) tai x L(M A ), aina tasan yksi simulaatioista hyväksyy. (kuva seuraavalla sivulla) 96

97 M A M A Kielen A tunnistaminen totaalisella koneella jos A ja A ovat rekursiivisesti lueteltavia 97

98 Formalistisemmin tulos voidaan esittää seuraavasti: Olkoon RE rekursiivisesti lueteltavien kielten joukko: RE = { L(M) M mielivaltainen Turingin kone }. Olkoon co-re rekursiivisesti lueteltavien kielten komplemettien joukko: co-re = { A A RE }. Olkoon REC rekursiivisten kielten joukko: Edellä esitetyn mukaan REC = { L(M) M totaalinen }. REC = RE co-re. 98

99 Huomaa yhteys rekursiivisen luettelemisen ajatukseen: Oletetaan, että jokin algoritmi M A osaa luetella kielen A; samoin M A kielelle A. Kun halutaan tietää päteekö x A, listataan rinnakkain joukkoja A ja A. Koska joko x A tai x A, niin jonkin äärellisen ajan kuluttua x esiintyy jommassa kummassa listassa ja vastaus tiedetään. Myös A-lista tarvitaan jotta voidaan taata pysähtyminen myös kielteisessä tapauksessa. 99

100 Universaalikieli [HMU ] Seuraava askel kohti pysähtymisongelman ratkeamattomuutta on universaalikieli L u joka on muutenkin hyvin tärkeä: Huom. L u = { w111x { 0, 1 } x L(M w ) }. mikään Turingin koneen koodi ei sisällä merkkijonoa 111 siis merkkijono z { 0, 1 } voidaan esittää korkeintaan yhdellä tavalla muodossa z = w111x siten, että w on validi Turingin koneen koodi jos w ei ole validi koodi, edellä sovitun mukaan x L(M w ) kaikilla x Osoitamme nyt että universaalikieli on rekursiivisesti lueteltava, mutta ei rekursiivinen. Kielen L u tunnistavaa Turingin konetta U sanotaan universaaliksi Turingin koneeksi. (Universaalikone ei tietenkään ole yksikäsitteinen.) 100

101 Lause 2.5: [HMU Thm. 9.6(a)] Universaalikieli L u on rekursiivisesti lueteltava. Todistus: Muodostetaan nelinauhainen U jolle L u = L(U). Nauhojen käyttö syötteellä z = w111x missä w on koneen M koodi: Nauha 1 sisältää syötteen z ja siis erityisesti koneen M siirtymäfunktion koodin w Nauha 2 simuloi koneen M nauhan sisältöä käyttäen samaa koodausta kuin siirtymäfunktiossa; siis esim. pätkää... X 3 X 1 X 4... esittäisi Nauha 3 simuloi koneen M tilaa; tila q i koodataan 0 i Nauha 4 on työtilaa 101

102 Koneen U laskenta: Aluksi tarkista onko syöte muotoa w111x jollain validilla koodilla w. Jos ei ole, niin hylkää. Muuten rupea simuloimaan koneta M = M w syötteellä x. Kussakin askelessa 1. Olkoon nauhalla 3 jono... #0 i #... ja nauhalla 2 nauhapäästä alkaen jono 0 j Etsi koneen M kuvauksesta nauhalla 1 kohta i 10 j 1...; jos ei löydy, niin hylkää. 3. Olkoon nauhalta 1 löytynyt jono i 10 j 10 k 10 l 10 m Vaihda nauhan 3 sisällöksi 0 k ja nauhalle 2 nauhapäästä alkaen 0 l ; siirrä nauhan 2 loppuosuutta tarpeen mukaan. 5. Siirrä nauhan 2 nauhapää seuraavaan ykköseen vasemmalla (jos m = 1) tai oikealla (jos m = 2). 6. Jos q k on hyväksyvä tila (siis k = 2), hyväksy. 102

103 Lause 2.6: [HMU Thm. 9.6(b)] Universaalikieli L u ei ole rekursiivinen. Todistus: Tehdään vastaoletus että L u = L(M) jollain totaalisella M. Muodostetaan totaalinen M jolle L(M ) = L d, missä L d on aiemmin ei-rekursiiviseksi osoitettu diagonaalikieli; ristiriita. Kone M toimii syötteellä w seuraavasti: 1. Jos w ei ole validi koodi, hyväksy. 2. Muuten muunna nauhan sisällöksi w111w. 3. Simuloi koneen M laskentaa; oletuksen mukaan tämä johtaa joko hylkäävään tai hyväksyvään lopputilaan. 4. Jos M hyväksyy, niin hylkää; jos M hylkää, niin hyväksy. Nyt w L(M ) (w ei validi koodi tai w111w L u ) w L(M w ) w L d. 103

104 Pysähtymisongelma Voimme nyt formuloida pysähtymisongelman kieleksi H = { w111x { 0, 1 } w validi koodi ja M w pysähtyy syötteellä x }. Lause 2.7: Kieli H on rekursiivisesti lueteltava. Todistus: Universaalikoneen U konstruktiota on helppo muuttaa siten että se hyväksyy jos ja vain jos simuloitavan koneen laskenta pysähtyy. Lause 2.8: Kieli H ei ole rekursiivinen. Todistus: Tehdään vastaoletus että H = L(M) jollain totaalilla M. Tästä saadaan helposti sellainen totaali M, että L(M ) = H ja hyväksyessään syötteen x kone M jättää laskennan lopuksi nauhalle alkuperäisen syötteen tyhjämerkkien ympäröimänä. 104

105 Tästä saadaan totaalinen kone M joka tunnistaa universaalikielen L u seuraavasti: 1. Tarkista että syöte on muotoa w111x missä w on validi koodi; jos ei ole, niin hylkää. 2. Simuloi sitten konetta M ; jos hylkäsi niin hylkää. 3. Jos M hyväksyi, käsittele sama syöte universaalikoneella U jonka hyväksyminen tai hylkääminen jää voimaan. Universaalikoneen konstruktiosta nähdään, että U pysähtyy syötteellä w111x jos ja vain jos M w pysähtyy syötteellä x. Siis M on totaali ja tunnistaa saman kielen kuin U; ristiriita 105

106 Seuraava ongelma on oleellisesti pysähtymisongelman komplementti eikä siis edes osittain ratkeava. Lause 2.9: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti H voidaan esittää muodossa H = H E missä E = { z { 0, 1 } n z ei ole w111x millään validilla koodilla w }. Selvästi E on rekursiivinen Siis jos H olisi rekursiivisesti lueteltava, myös H = H E olisi (Lause 2.3). Kieli H on rekursiivisesti lueteltava, joten jos H myös olisi, niin H olisi rekursiivinen (Lause 2.4); ristiriita. Siis H ei voi olle rekursiivisesti lueteltava 106

107 Ohjelmointikielen pysähtymisongelma Turingin koneet ovat analogisia jollain ohjelmointikielellä kirjoitettujen ohjelmien kanssa: Turingin kone -formalismi jonkin ohjelmointikieli Turingin kone tällä kielellä kirjoitettu ohjelma Turingin koneen koodi ohjelma käännettynä konekielelle universaali Turingin kone konekielen tulkki joitain ohjelmointikielten ratkeamattomuustuloksia voidaan kätevästi osoittaa suoraan (kuten johdannossa C-kielen pysähtymisongelma) voidaan myös käyttää hyväksi Turingin koneiden ja minkä tahansa yleisohjelmointikielen samaa ilmaisuvoimaa ja siirtää tulokset Turingin koneista ohjelmointikieliin sama ilmaisuvoima tarkoittaa tässä, että mikä tahansa ongelma voida ratkaista Turingin koneella jos ja vain jos se voidaan ratkaista kyseisellä ohjelmointikielellä 107

108 Esimerkki 2.10: C-kielen pysähtymisongelma Rajoitutaan tarkastelemaan C-kielen funktioita jotka saavat parametrina yhden merkkijonon ja palauttavat 0 tai 1 tai jäävät silmukkaan. Sanotaan että tällainen funktio f hyväksyy merkkijonon x jos f(x) palauttaa 1, ja on totaalinen jos f(x) pysähtyy kaikilla x. Ollaan valmiit uskomaan, että kieli A voidaan tunnistaa (totaalisella) Turingin koneella jos ja vain jos se voidaan tunnistaa tällaisella (totaalisella) C-funktiolla. Tämän uskomuksen tarkka perusteleminen vaatisi tietysti C-kielen semantiikan tarkkaa läpikäymistä, mutta intuitiivisesti se on selvästi totta (vrt. RAM-malli). Halutaan osoittaa Turingin koneiden pysähtymisongelmalle analoginen tulos: mikään totaalinen C-funktio ei tunnista kieltä H C = { w x w on C-funktio joka syötteellä x pysähtyy } 108

109 Argumentti menee pääpiirtessään seuraavasti: koska C on yhtä ilmaisuvoimainen kuin Turingin koneet, voidaan Turingin koneiden universaalikieli L u tunnistaa jollain (ei-totaalisella) C-funktiolla univt siis kysymykset Turingin koneen M w toiminnasta syötteellä x palautuvat kysymyksiksi C-funktion univt toiminnasta syötteellä w111x. erityisesti jos jokin C-funktio halts ratkaisisi C-funktioiden pysähtymisongelman, niin tätä kautta se ratkaisisi myös Turingin koneiden pysähtymisongelman koska toisaalta Turingin koneet ovat yhtä ilmaisuvoimaisia kuin C-funktiot, funktiota halts voitaisiin simuloida Turingin koneella näin saataisiin ratkaistuksi Turingin koneiden pysähtymisongelma; ristiriita 109

110 Esitetään sama hieman yksityiskohtaisemmin. Vastaoletus siis on, että jokin totaalinen C-funktio haltsc ratkaisee C-kielen pysähtymisongelman. Tunnetusti on olemassa C-funktio f u joka simuloi universaalia Turingin konetta U. Siis erityisesti f u syötteellä w111x pysähtyy, jos ja vain jos M w syötteellä x pysähtyy. Olkoon haltst C-funktio, joka syötteellä z tekee kutsun haltsc(p*z) missä p on funktion f u teksti. Tämä on helppo konstruoida, kun haltsc oletetaan annetuksi. Siis haltst on totaalinen, ja funktiota haltsc koskevan oletuksen mukaan haltst(w111x) = 1 haltsc(p w111x) = 1 f u (w111x) pysähtyy w111x H. Toisaalta on selvästi olemassa totaalinen Turingin kone M H joka simuloi C-funktiota haltst. Siis M H ratkaisee Turingin koneiden pysähtymisongelman; ristiriita. 110

111 Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle P ratkaisualgoritmi. Palauttaminen, epäformaalisti ymmärrettynä, on keskeinen väline normaalissa ohjelmoinnissa jne: 1. Halutaan ratkaista ongelma P. 2. Kirjoitetaan ongelman P ratkaiseva ohjelma p, joka kutsuu aliohjelmaa q (esim. sort). Aliohjelmasta q oletetaan, että se ratkaisee tunnetun ongelman Q (esim. järjestää taulukon), mutta sen toteutuksesta ei sanota vielä mitään. 3. Aliohjelma p on nyt ongelman P palautus ongelmaan Q. 4. Jos jostain kirjastosta löydetään ongelmalle Q ratkaisualgoritmi (esim. quicksort), saadaan ratkaisu myös ongelmalle P. 111

112 Tällä kurssilla palautuksia käytetään lähinnä väärään suuntaan osoittamaan ongelmia ratkeamattomiksi: 1. Halutaan osoittaa, että ongelma Q on ratkeamaton. 2. Palautetaan jokin tunnetusti ratkeamaton ongelma P (esim. L d ) ongelmaan Q, ts. osoitetaan miten mistä tahansa ongelman Q ratkaisualgoritmista saataisiin ongelman P ratkaisualgoritmi. 3. Koska oletuksen mukaan kuitenkin P on ratkeamaton, myöskään ongelmalle Q ei voi olla ratkaisualgoritmia. Seuraavaksi määritellään palautuksen käsite täsmällisesti, tarkastellaan esimerkkejä edellä esitetyn tyyppisistä todistuksista ja samalla laajennetaan tunnettujen ratkeamattomien ongelmien kirjastoa, josta saadaan kandidaatteja ongelmaksi P. 112

113 Ruvetaan nyt määrittelemään palautuksen käsitettä täsmällisemmin. Idea: Määritellään laskennallisten ongelmien relaatio A B, ongelma A voidaan palauttaa ongelmaan B Intuitiivinen tulkinta: Kun A B niin B on ainakin yhtä vaikea kuin A, eli ongelma A voidaan ratkaista ongelman B avulla. Tyypillinen käyttötapa: Halutaan osoittaa ongelma B vaikeaksi. Valitaan jokin vaikeaksi tunnettu A, ja osoitetaan A B. Huomaa palautuksen suunta! Huom. kurssikirja ei määrittele palautukselle merkintää A B, mutta käytämme sitä tässä koska se on vakiintunut ja helpottaa asioiden esittämistä. 113

114 Palautus voidaan formalisoida monella tavalla. Määrittelemme seuraavaksi yksinkertaisen ns. many-one-palautuksen, jota merkitään m. Johdatteleva esimerkki: Tunnetusti kaikilla x, y R pätee joten e x e y = e x+y, a b = exp(ln a + ln b). Olkoon siis r: R 2 R, r(a, b) = ab. Nyt r = ψ s φ, missä φ(a, b) = (ln a, ln b), s(x, y) = x + y ja ψ(z) = e z. Yleisemmin kun näin pätee, sanomme että (φ, ψ) palauttaa funktion r funktioon s. (Nykyään tämän esimerkkipalautuksen merkitys on vähentynyt, mutta aikanaan se oli tärkeä koska eksponentti- ja logaritmifunktiot saatiin taulukosta ja yhteenlasku kynällä ja paperilla on helpompaa kuin kertolasku.) 114

115 .. V s Y Funktion r: U X φ ψ palautus funktioon s: V Y käyttäen funktioita. U r X. φ: U V ja ψ: Y X. Esimerkissä siis U = V = R 2, X = Y = R, r(a, b) = ab, s(x, y) = x + y, φ(a, b) = (ln a, ln b) ja ψ(z) = exp(z). 115

116 Olkoot nyt A Σ ja B Γ päätösongelmia. Funktio f: Σ Γ on rekursiivinen palautus kielestä A kieleen B (eli kielen A rekursiivinen palautus kieleen B) jos f on rekursiivinen ja kaikilla x Σ pätee x A jos ja vain jos f(x) B. Tällöin merkitään f: A m B. Olkoon id joukon { 0, 1 } identiteettikuvaus. Edellä esitettyjä käsitteitä käyttäen f: A m B siis tarkoittaa, että pari (f, id) palauttaa ongelman A karakteristisen funktion π A ongelman B karakteristiseen funktioon π B, eli ja lisäksi f on rekursiivinen. π A (x) = π B (f(x)) kaikilla x Σ, 116

117 B A fa A fa B Σ Γ Periaatekuva palautuksesta f: A m B (Tässä A = Σ A.) 117

118 Kieli A palautuu rekursiivisesti kieleen B jos on olemassa rekursiivinen palautus kielestä A kieleen B. Tällöin merkitään A m B. Lause 2.11: [HMU Thm 9.7] Olkoon A m B ja B rekursiivinen (rekursiivisesti lueteltava). Tällöin A on rekursiivinen (vast. rekursiivisesti lueteltava). Todistus: Helppo. Huomaa, että m -palautus on vain eräs erikoistapaus palautuksesta. On olemassa tilanteita, joissa ongelma A kyllä intuitiivisesti voidaan ratkaista ongelman B avulla, mutta ei päde A m B. Esimerkki: yleensä ei päde A m A, missä A = Σ A. Tälläisten tilanteiden tarkastelemiseen tarvitaan jotain voimakkaampaa (ja hankalammin määriteltävää) palautuksen käsitettä, kuten Turing-palautus T. Tällä kurssilla sivuutamme ongelman. 118

119 Epätyhjyysongelma [HMU 9.3.2] Esimerkkinä palautustekniikasta, ja johdatuksena yleisempään Ricen lauseeseen, tarkastellaan kieltä L ne = { w { 0, 1 } L(M w ) }. Ongelmana on siis päättää annetusta Turingin koneesta, hyväksyykö se ylipäänsä mitään merkkijonoja. Lause 2.12: [HMU Thm. 9.8, 9.9] Kieli L ne on rekursiivisesti lueteltava mutta ei rekursiivinen. Todistus Kiinnostavampi puoli väitteestä on ei-rekursiivisuus, mutta tarkastetaan kuitenkin ensin rekursiivinen lueteltavuus. Tämä käy helpoimmin konstruoimalla epädeterministinen Turingin kone M jolle L ne = L(M). 119

120 Koneen M laskenta etenee seuraavasti: 1. Kirjoita nauhalle syötteen w jatkoksi 111 ja epädeterministisesti generoitu mielivaltainen x { 0, 1 }. 2. Palaa nauhan alkuun ja simuloi universaalikonetta U syötteellä w111x. Nyt w L ne x L(M w ) jollain x { 0, 1 } w111x L(U) jollain x { 0, 1 } w L(M). /2 120

121 Ei-rekursiivisuus osoitetaan palautuksella universaalikielestä L u. Siis muodostetaan funktio f jolle f(z) L ne jos ja vain jos z L u, ja lisäksi funktio f on rekursiivinen. Tällöin f: L u m L ne, joten jos L ne olisi rekursiivinen niin myös L u olisi; ristiriita. Funktion f pitää siis annetulla syötteellä z = w111x muodostaa Turingin kone M (tai oikeastaan sen koodi) siten, että jos x L(M w ) niin M ei hyväksy yhtään merkkijonoa jos x L(M w ) niin M hyväksyy ainakin jonkin merkkijonon Konstruktiossa itse asiassa käy jopa niin, että jos x L(M w ) niin M hyväksyy kaikki merkkijonot 121

122 Tarkastellaan jotain kiinteää z = w111x. Syötteellä y kone M toimii seuraavasti: 1. Pyyhi syöte y pois nauhalta; nauha on nyt tyhjä. 2. Kopioi nauhalle merkkijono x; palauta nauhapää alkuun. 3. Simuloi konetta M w. Konstruktion perusteella on ilmeistä että jos w111x L u niin L(M) = Σ jos w111x L u niin L(M) = Siis jos on olemassa rekursiivinen funktio joka syötteellä z tuottaa koodin v siten, että kone M v toimii kuten M yllä, todistus on valmis. 122

123 Tarkastellaan nyt tarkemmin, millaisia tiloja ja siirtymiä ylläkuvatussa koneessa M = M v pitäisi olla. Olkoon z = w111x missä x = x 1... x n. pohjana toimii kone M w lisätään alkutilaksi uusi tila ˆq 0, jossa kone kirjoittaa nauhalle tyhjää niin kauan kuin ei-tyhjämerkkejä riittää. Kun tulee vastaan tyhjä, siirrytään uuteen tilaan ˆq 1. lisätään tilat ˆq i, i = 1,..., n, missä tilassa ˆq i, 1 i n 1, kone kirjoittaa merkin x i, siirtyy tilaan ˆq i+1 ja siirtää nauhapäätä oikealla. tilasta ˆq n siirrytään uuteen tilaan ˆq n+1 jossa kone siirtää nauhapäätä takaisin vasemmalle kunnes taas löytyy tyhjämerkki tilasta ˆq n+1 siirrytään alkuperäisen koneen M w alkutilaan siirtymät koneen M w alkuperäisten tilojen välillä säilyvät ennallaan, samoin lopputilat 123

124 Selvästi yllä kuvattu M = M v toimii kuten väitetään: jos x L(M w ) niin se hyväksyy kaikki syötteet y, muuten ei hyväksy mitään. Kuvaus f, missä f(w111x) = v edellä kuvattuun tapaan, on selvästi rekursiivinen. Siis f on rekursiivinen palautus L u m L ne. Koska L u ei ole rekursiivinen, niin kieli L ne ei sekään ole rekursiivinen. 124

125 Lause 2.13: [HMU Thm. 9.10] Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen. Koska L e = L ne ja L ne juuri todistettiin ei-rekursiiviseksi mutta rekursiivisesti lueteltavaksi, L e ei voi olla rekursiivisesti lueteltava. Esimerkkinä yksinkertaisesta palautuksesta tarkastellaan kysymystä, onko kahden rekursiivisesti lueteltavan kielen leikkaus tyhjä. Lause 2.14: Kieli L ep = { v111w v, w { 0, 1 }, L(M v ) L(M w ) = } ei ole rekursiivisesti lueteltava. 125

126 Tekninen huomio: syntaksintarkistus Kielen L ep kiinnostavia tapauksia ovat tietysti sellaiset merkkijonot z = v111w, missä sekä v että w ovat valideja koodeja (eli M v M triv ja M w M triv ). Koska validi koodi alkaa ja loppuu nollalla eikä sisällä merkkijonoa 111, niin merkkijonolla z tällaisessa tapauksessa ei voi olla mitään vaihtoehtoista tulkintaa z = v 111w, missä v v tai w w. Jos merkkijono z on syntaktisesti virheellinen eli ei muotoa v111w tällaisilla v, w, kysymys päteekö z L ep ei vaikuta edes hyvin määritellyltä. Voi nimittäin olla z = v111w = v 111w, missä v v ja w w. Tällöin kuitenkin sekä parista (v, w) että parista (v, w ) ainakin toinen osapuoli sisältää merkkijonon 111, tai alku- tai loppuykkösen, eikä siis ole validi koodi. Sopimuksen mukaan ei-validille koodille x pätee L(M x ) =, joten tässä tapauksessa L(M v ) L(M w ) = L(M v ) L(M w ) = ja z L ep pätee tulkinnasta riippumatta. Siis syntaksivirheelliset syötteet tulevat tässä mukaan kieleen L ep (kunhan niissä on ainakin yksi 111). 126

127 Lauseen 2.14 todistus: Palautus kielestä L e. Siis muodostetaan rekursiivinen funktio f: { 0, 1 } { 0, 1 }, jolle pätee f(v) L ep v L e. Olkoon w all jokin sellainen koodi, että L(M wall ) = { 0, 1 }. Palautusfunktio f määritellään f(v) = v111w all. Nyt jos v on validi koodi, pätee L(M v ) = L(M v ) { 0, 1 } = L(M v ) L(M wall ) ja siis v L e L(M v ) = L(M v ) L(M wall ) = f(v) L ep. Jos taas v ei ole validi koodi, niin edellä esitetyn huomautuksen mukaan v L e ja f(v) L ep. 127

128 Siis joka tapauksessa v L e jos ja vain jos f(v) L ep. Funktio f voidaan helposti laskea Turingin koneella: 1. Siirrä nauhapää syötemerkkijonon loppuun. 2. Kirjoita nauhalle merkkijono 111w all. Siis on muodostettu rekursiivinen palautus f: L e m L ep. Jos L ep olisi rekursiivisesti lueteltava, myös L e olisi; ristiriita. 128

129 Semanttisten ongelmien ratkeamattomuus [HMU 9.3.3] Intuitiivisesti semanttinen ongelma on Turingin konetta koskeva kysymys, jonka vastaus riippuu vain koneen hyväksymästä kielestä. Siis jos L(M) = L(M ), vastauksen on oltava sama koneille M ja M. Muodollisemmin semanttinen ominaisuus S on kokoelma rekursiivisesti lueteltavia aakkoston { 0, 1 } kieliä. Toisin sanoen S RE, missä siis RE = { L(M) { 0, 1 } M Turingin kone syöteaakkostolla { 0, 1 } } Ominaisuus S on ratkeava jos joukko on rekursiivinen. L S = { w { 0, 1 } n L(M w ) S } Esimerkki 2.15: Valitaan S = { }, siis pelkän tyhjän kielen sisältävä luokka. Nyt L S = L e, edellä esitetty tyhjyysongelma, joten S ei ole ratkeava. 129

130 Semanttinen ominaisuus S on triviaali jos joko S = tai S = RE. Siis ominaisuus on ei-triviaali jos on olemassa kaksi kieltä L, L RE joille L S ja L S. Lause 2.16 (Rice): [HMU Thm. 9.11] Kaikki ei-triviaalit semanttiset ominaisuudet ovat ratkeamattomia. Siis esim. seuraavat ongelmat ovat ratkeamattomia: hyväksyykö M tasan k merkkijonoa (millä tahansa k) hyväksyykö M äärettömän monta merkkijonoa onko koneen M hyväksymä kieli säännöllinen onko koneen M hyväksymä kieli kontekstiton (kaikissa ongelmissa siis syötteenä koneen M koodi) 130

131 Ricen lauseen todistus: Olkoon S ei-triviaali. Jatkossa esitetään todistus tapaukselle S. Jos S, voidaan samaa todistusta soveltaa ominaisuuteen S = RE S joka on ei-triviaali eikä sisällä kieltä. Todistus perustuu palautukseen universaalikielestä L u. Siis muodostetaan rekursiivinen f: { 0, 1 } { 0, 1 } jolle f(v) L S jos ja vain jos v L u. Toisin sanoen on oltava L(M f(v) ) S jos ja vain jos v = w111x missä x L(M w ). Kun v ei ole muotoa v = w111x millekään koodille w, määritellään f(v) = w 0 missä w 0 on jokin kiinteä koodi jolle L(M w0 ) S. Tarkastellaan nyt miten f(v) määritellään kun v = w111x missä w on validi koodi jollekin koneelle M. 131

132 Nyt on siis annettuna M = M w ja x, ja pitää konstruoida M = M v jolle L(M ) S jos ja vain jos x L(M). (Ja sitten asetetaan f(w111x) = v.) Olkoon M L jokin kiinteä kone jolle L(M L ) S. Kone M konstruoidaan parin (M, x) perusteella siten, että jos x L(M) niin L(M ) = L(M L ) jos x L(M) niin L(M ) = mikä toteuttaa vaatimukset. 132

133 Kone M on kaksinauhainen ja toimii syötteellä z seuraavasti: 1. Kopio merkkijono x kakkosnauhalle. 2. Kakkosnauhaa käyttäen simuloi koneen M laskenta syötteellä x 3. Jos simulointi johti hylkäämiseen, hylkää z. (Tässä vaiheessa syötettä z ei ole vilkaistukaan!) 4. Jos simulointi johti hyväksymiseen, simuloi koneen M L laskentaa varsinaisella syötteellä z; hyväksy jos M L hyväksyy. Nyt L(M ) = L(M L ) jos x L(M); muuten L(M ) =. Selvästi merkkijonosta v = w111x missä w on koneen M indeksi voidaan laskea f(v) joka on kuvatun koneen M indeksi. Huomaa että x tulee koodatuksi koneen M sisään eikä ole sen syöte. 133

134 z M L x M Koneen M konstruktio Ricen lauseessa 134

135 Muita ratkeamattomuustuloksia ( )/[HMU 9.5] Ricen lause voidaan ilmeisellä tavalla siirtää Turingin koneista koskemaan esim. C-kielisiä ohjelmia. Turingin koneiden semanttiset ominaisuudet vastaavat C-ohjelmien syöte-tuloste-relaation ominaisuuksia. On siis esim. ratkeamatonta pysähtyykö ohjelma millään syötteellä pysähtyykö ohjelma kaikilla syötteillä tulostaako ohjelma 1 millään syötteellä jne. Turingin koneille on ratkeamatonta, käykö kone annetussa tilassa q Q millään syötteellä. Vastaavasti on ohjelmille on ratkeamatonta suoritetaanko ohjelman riviä numero k millään syötteellä 135

136 Matematiikan ratkeamattomuustuloksia Klassinen tulos (Church, Gödel 1930-luvulla) sanoo että seuraava ongelma on ratkeamaton: Annettu: luonnollisten lukujen aritmetiikkaa koskeva 1. kertaluvun logiikan kaava φ Kysymys: onko φ tosi Tässä ei mennä tarkemmin siihen, miten kaavat ja niiden totuus muodollisesti määritellään. Huomataan kuitenkin, että jos rajoitutaan kaavoihin ilman kertolaskua, ongelma on ratkeava. 136

137 Yllättäen Matijasevitsh 1970 osoitti paljon vahvemmin, että jo seuraava paljon rajoitetumpi ongelma on ratkeamaton: Annettu: kokonaislukukertoiminen n muuttujan polynomi p(x 1,..., x n ) Kysymys: onko olemassa (y 1,..., y n ) Z n joilla p(y 1,..., y n ) = 0 Itse asiassa Matijasevitsh osoitti vielä vahvemmin että mille tahansa osittain ratkeavalle luonnollisten lukujen ongelmalle π on olemassa kokonaislukukertoiminen polynomi p π jolle π(x) = 1 jos ja vain jos y 1,..., y n : p π (x, y 1,..., y n ) =

138 Formaalien kielten ratkeamattomia ongelmia Olkoot G 1 ja G 2 kontekstittomia kielioppeja ja R säännöllinen lauseke. Tällöin esim. seuraavat ongelmat ovat ratkeamattomia: onko G 1 moniselitteinen onko L(G 1 ) L(G 2 ) = onko L(G 1 ) = L(G 2 ) onko L(G 1 ) = L(R) onko L(G 1 ) = T jollain aakkostolla T Näiden ratkeamattomuustulosten todistukset sivuutetaan tässä. (Mutta palaamme asiaan lyhyesti myöhemmin.) Todetaan kuitenkin että ne kaikki voidaan tehdä palutuksella Postin vastaavuusongelmasta joka seuraavaksi käydään läpi tarkemmin. 138

139 Postin vastaavuusongelma [HMU 9.4] (Post Correspondence Problem, E. Post 1946) Edellä on todistettu ratkeamattomuustuloksia vain melko suoraan Turingin koneisiin liittyville ongelmille. Tarkastellaan nyt seuraavaa merkkijonojen järjestelemiseen liittyvää ongelmaa: Annettu: Jono merkkijonopareja ((w 1, x 1 ),..., (w k, x k )) missä k N on mielivaltainen ja w i, x i Σ Kysymys: onko olemassa indeksijono (i 1,..., i m ) jolle w i1 w i2... w im = x i1 x i2... x im Esimerkki 2.17: Tapauksella ((w 1, x 1 ), (w 2, x 2 ), (w 3, x 3 ), (w 4, x 4 ) = ((b, ca), (a, ab), (ca, a), (abc, c)) vastaus on kyllä, mikä nähdään indeksijonolla (2, 1, 3, 2, 4). Nimittäin w 2 w 1 w 3 w 2 w 4 = abcaaabc = x 2 x 1 x 3 x 2 x

140 Edellisen kalvon esimerkkivastaavuus kuvallisesti: w a b c a a a b c a b c a a a b c x

141 Tekninen huomio: Jotta voisimme esittää tämän ongelman formaalina kielenä, meidän pitää sopia miten merkkijonopari, ja sellaisten muodostama jono, koodataan yhdeksi merkkijonoksi. Eräs ilmeinen ratkaisu on laajentaa aakkostoa merkeillä (,, ja ). Monissa yhteyksissä on kuitenkin kätevää, jos pareja ja jonoja voidaan koodata aakkostoa laajentamatta. Kun w = x 1 x 2... x n missä x i Σ, määritellään ŵ = x 1 x 1 x 2 x 2... x n x n ; siis kaikki merkit tuplataan. Kun Σ 2, määritellään jononmuodostusfunktio seuraavasti: w 1, w 2, w 3,..., w n 1, w n = ŵ 1 abŵ 2 abŵ 3 ab... ŵ n 1 abŵ n missä a ja b ovat mitkä tahansa kaksi aakkoston Σ merkkiä. Esim. 101, 01, 10 = missä on valittu a = 0, b = 1. Nyt on helppo laskea ja kuvaa kaikki aakkoston Σ merkkijonojen äärelliset jonot aakkoston Σ merkkijonoiksi. Kääntän jos v = w 1,..., w k on annettu, niin komponentit w i ovat yksikäsitteiset ja helppo löytää. 141

142 Olkoon nyt Σ 2. Määritellään formaali kieli PCP seuraavasti: PCP koostuu merkkijonoista w 1, x 1,..., w k, x k joille on olemassa indeksijono i 1,..., i m missä w i1... w im = x i1... x im. Seuraavassa tarvitaan myös modifioitua PCP-kieltä, jossa vaaditaan että sovituksen pitää alkaa parilla (w 1, x 1 ): MPCP koostuu merkkijonoista w 1, x 1,..., w k, x k joille on olemassa indeksijono i 2,..., i m missä w 1 w i2... w im = x 1 x i2... x im. 142

143 Seuraavassa todistetaan Lause 2.18: Kieli MPCP ei ole rekursiivinen. Tästä päästään alkuperäiseen ongelmaan PCP seuraavan aputuloksen nojalla: Lemma 2.19: MPCP m PCP. Todistus: Harjoitustehtävä [HMU Thm. 9.17]. Tuttujen periaatteiden mukaisesti nyt seuraa Korollaari 2.20: [HMU Thm. 9.19] Kieli PCP ei ole rekursiivinen. Todistus: Jos PCP olisi rekursiivinen, niin edellisen lemman seurauksena myös MPCP olisi, vastoin edellistä lausetta. 143

144 Kielen MPCP ratkeamattomuus osoitetaan konstruoimalla rekursiivinen palautus f: L u m MPCP universaalikielestä L u. Käydään läpi palautuksen konstruktio pääpiirteissään. Pitää siis määritellä f siten, että f(v) MPCP jos ja vain jos v L u. Mielenkiintoinen tapaus on se, jossa v = w111x missä w on koodi jollekin Turingin koneelle M. Seuraavassa esitellään ne parit (w i, x i ) joille f(v) = w 1, x 1,..., w n, x n. MPCP-tapauksen kieleksi tulee Γ Q { # } missä Γ on koneen M nauha-aakkosto, Q sen tilojen joukko ja # symboli joka ei kuulu kumpaankaan. 144

145 MPCP-tapauksen osaratkaisu on indeksijono (i 2,..., i n ) missä joko merkkijono w 1 w i2... w in on merkkijonon x 1 x i2... x in alkuosa, tai päivastoin. Siis osaratkaisuja ovat erityisesti ne indeksijonot jotka voidaan täydentää varsinaisiksi ratkaisuiksi. Osaratkaisulta ei kuitenkaan edellytetä että tällainen täydennys olisi olemassa. Esimerkki 2.21: tyhjä indeksijono (n = 1) on aina osaratkaisu (edellyttäen että w 1 on merkkijonon x 1 alkuosa tai kääntäen). Esimerkki 2.22: Tapauksella ((w 1, x 1 ), (w 2, x 2 ), (w 3, x 3 ), (w 4, x 4 ) = ((a, ab), (b, ca), (ca, a), (abc, c)) indeksijono (2, 3, 1) on osaratkaisu, sillä w 1 w 2 w 3 w 1 = abcaa x 1 x 2 x 3 x 1 = abcaaab Seuraavaksi ruvetaan konstruoimaan itse palautusta L u m MPCP. 145

146 Koneelle M ja syötteelle x konstruoidaan nyt MPCP-tapaus jonka osaratkaisut vastaavat koneen M laskentoja syötteellä x. Olkoon tämä laskenta missä q 0 on koneen M alkutila. q 0 x M y 1 q 1 z 1 M... M y p q p z p Esitetään laskenta kielen Γ Q { # } merkkijonoina #q 0 x#y 1 q 1 z 1#y 2 q 2 z 2#... #y p q p z p# Nyt MPCP-tapaukselle on kaikilla t = 0, 1,..., p 1 osaratkaisu (i 2,..., i n ) missä w 1 w i2 w in = #q 0 x#y 1 q 1 z 1#y 2 q 2 z 2#... #y t q t z t# x 1 x i2 x in = #q 0 x#y 1 q 1 z 1#y 2 q 2 z 2#... #y t q t z t#y t+1 q t+1 z t+1# 146

147 MPCP-tapaukseen tulee kaikki seuraavanlaiset parit (w, x), missä q on mielivaltainen tila, q F hyväksyvä tila, X ja Y mielivaltaisia nauha-aakkosia ja B tyhjämerkki (siis B #) (A) (#, #q 0 x#) tulee alkupariksi (w 1, x 1 ) (B) (a, a) kaikilla a Γ { # } (C) (qx, Y p) jos δ(q, X) = (p, Y, R) (C) (ZqX, pzy ) kaikilla Z Γ jos δ(q, X) = (p, Y, L) (D) (q#, Y p#) jos δ(q, B) = (p, Y, R) (D) (Zq#, pzy #) kaikilla Z Γ jos δ(q, B) = (p, Y, L) (E) (Xq F, q F ) ja (q F X, q F ) kaikilla q F F, X Γ (F) (q F ##, #) kaikilla q F F Idea on että (A)-pari esittää laskennan alun ja (E)- ja (F)-tyyppiset parit lopun. (C)-parit esittävät laskennan siirtymiä normaalitilanteessa ja (D)-parit nauhan reunoilla. (B)-parit kopioivat ne nauhan osat joita siirtymä ei muuta. 147

148 Tarkastellaan esimerkkinä Turingin konetta M = ({ q 0, q 1, q 2, q 3 }, { 0, 1 }, { 0, 1, B }, δ, q 0, B, { q 1 }) missä δ(q 0, 0) = (q 2, 1, R), δ(q 2, 0) = (q 1, 0, R), δ(q 2, 1) = (q 3, 0, R) ja δ(q 3, B) = (q 2, 1, L); muita siirtymiä ei ole. Kone M hyväksyy syötteen 01 seuraavasti: q q q 3 1q q 1 1. MPCP-tapaukseen tulee esitetyn laisia pareja seuraavasti: (A): (#, #q 0 01#) (B): (0, 0), (1, 1), (B, B), (#, #) (C): (q 0 0, 1q 2 ), (q 2 0, 0q 1 ), (q 2 1, 0q 3 ), (0q 3 B, q 2 01), (1q 3 B, q 2 11), (Bq 3 B, q 2 B1) (D): (0q 3 #, q 2 01#), (1q 3 #, q 2 11#), (Bq 3 #, q 2 B1#) (E): (0q 1, q 1 ), (1q 1, q 1 ), (Bq 1, q 1 ), (q 1 0, q 1 ), (q 1 1, q 1 ), (q 1 B, q 1 ) (F): (q 1 ##, #) Katsotaan nyt miten MPCP-ratkaisu syntyy ylläolevaa laskentaa simuloiden. 148

149 Merkitään W = w 1 w i2... w ik ja X = x 1 x i2... x ik missä (i 2,..., i k ) on tähän mennessä kasattu osaratkaisu. Aluksi pitää siis ottaa pari (#, #q 0 01#): W: # X: #q 0 01# Nyt W -merkkijonon perään pitää saada liitetyksi q 0 01#, joten on valittava parit (q 0 0, 1q 2 ), (1, 1) ja (#, #): W: #q 0 01# X: #q 0 01#1q 2 1# X-merkkijonon loppuun siis ilmestyi 1q 2 1#, mikä pitää saada W -merkkijonoon; pitää valita parit (1, 1), (q 2 1, 0q 3 ) ja (#, #): W: #q 0 01#1q 2 1# X: #q 0 01#1q 2 1#10q 3 # 149

150 Nyt ollaan syötteen lopussa, ja parin (1, 1) kanssa pari (0q 3 #, q 2 01#) sopii jonon jatkoksi: W: #q 0 01#1q 2 1#10q 3 # X: #q 0 01#1q 2 1#10q 3 #1q 2 01# Seuraavaksi pitää ottaa parit (1, 1), (q 2 0, 0q 1 ), (1, 1) ja (#, #): W: #q 0 01#1q 2 1#10q 3 #1q 2 01# X: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1# On päästy lopputilaan q 1, ja voidaan syödä yksi merkki valitsemalla esim. parit (1, 1), (0q 1, q 1 ), (1, 1) ja (#, #): W: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1# X: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1# 150

151 Jatketaan pareilla (1q 1, q 1 ), (1, 1) ja (#, #) W: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1# X: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1#q 1 1# ja sitten (q 1 1, q 1 ) ja (#, #): W: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1#q 1 1# X: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1#q 1 1#q 1 # Nyt ratkaisu tulee valmiiksi lisäämällä pari (q 1 ##, #): W: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1#q 1 1#q 1 ## X: #q 0 01#1q 2 1#10q 3 #1q 2 01#10q 1 1#1q 1 1#q 1 1#q 1 ## 151

152 Yleisemmin jos M hyväksyy syötteen x, niin hyväksyvää laskentaa vastaa MPCP-tapauksen ratkaisu edelläesitettyyn tapaan. On myös selvää että ainoa mahdollisuus saada osittainen MPCP-ratkaisu on laskennan simuloiminen, ja ainoa tapa saada ratkaisu valmiiksi on päätyä laskennassa hyväksyvään tilaan. Siis M hyväksyy merkkijonon x jos ja vain jos parista (M, x) konstruoidulla MPCP-tapauksella on ratkaisu. Koska MPCP-tapauksen konstruoiva funktio ilmeisesti on rekursiivinen, olemme osoittaneet L u m MPCP. Siis MPCP ei ole rekursiivinen. 152

153 Esimerkkinä kieliteoreettisista ongelmista todistetaan seuraava: Lause 2.23: [HMU Thm. 9.22(a)] Seuraava ongelma on ratkeamaton: Annettu: kontekstittomat kieliopit G 1 ja G 2 Kysymys: onko L(G 1 ) L(G 2 ) Todistus: Osoitetaan, että mistä tahansa PCP-tapauksesta (w 1, x 1 ),..., (w k, x k ) voidaan muodostaa sellaiset kontekstittomat kieliopit G 1 ja G 2, että L(G 1 ) L(G 2 ) jos ja vain jos kyseisellä PCP-tapauksella on ratkaisu. Koska PCP on ratkeamaton, tämä todistaa väitteen. Kielioppien G 1 ja G 2 pääteaakkostoksi tulee Σ { a 1,..., a k }, missä Σ on PCP-tapauksen aakkosto (w i, x i Σ ), ja a i missä i = 1,..., k on uusi symboli ( nimi parille (w i, x i )). 153

154 Määritellään kielet L A ja L B seuraavasti: L A = { w i1 w i2... w in a in... a i2 a i1 i j { 1,..., k } } L B = { x i1 x i2... x in a in... a i2 a i1 i j { 1,..., k } } Jos (i 1,..., i n ) on ratkaisu PCP-tapaukselle, niin w i1 w i2... w in = x i1 x i2... x in, joten w i1 w i2... w in a in... a i2 a i1 L A L B. Jos z L A L B, niin z on muotoa va in... a i2 a i1 missä v Σ. Lisäksi z L A v = w i1 w i2... w in z L B v = x i1 x i2... x in joten w i1 w i2... w in = v = x i1 x i2... x in ja (i 1,..., i n ) on ratkaisu PCP-tapaukselle. Siis PCP-tapauksella on ratkaisu jos ja vain jos L A L B. 154

155 Pitää vielä osoittaa, miten annetun PCP-tapauksen perusteella konstruoidaan kontekstittomat kieliopit G 1 ja G 2, joilla L A = L(G 1 ) ja L B = L(G 2 ). Kielioppiin G 1 ainoaksi välikkeeksi tulee A. Produktioita tulee 2k kappaletta, nimittäin A w i Aa i ja A w i a i kaikilla i = 1,..., k. Vastaavasti kieliopissa G 2 ainoa välike on B, ja produktioina ovat B x i Ba i ja B x i a i kaikilla i = 1,..., k. Selvästi nämä kieliopit täyttävät halutut ehdot. 155

156 Luokan RE rakenne ( ) Seuraavan lauseen intuitiivinen tulkinta on, että universaalikieli L u on ainakin yhtä vaikea kuin mikä tahansa rekursiivisesti lueteltava kieli. Lause 2.24: Jos A RE niin A m L u. Todistus: Olkoon A RE; siis A = L(M) jollain M. Olkoon w koneen M koodi. Määritellään f(x) = w111x kaikilla x. Selvästi f on rekursiivinen. Koska x A jos ja vain jos f(x) L u, funktio f on haluttu palautus A m L u. Koska lisäksi L u itse on rekursiivisesti lueteltava, sanomme että L u on maksimaalisen vaikea rekursiivisesti lueteltavien kielten joukossa. Seuraavaksi formalisoimme tämän käyttäen RE-täydellisyyden käsitettä. 156

157 Määritelmä Jos C on kokoelma aakkoston Σ kieliä, sanomme että kieli A Σ on C-täydellinen rekursiivisten palautusten suhteen jos 1. A C ja 2. B m A kaikilla B C. Yleensä on selvää millaisista palautuksista puhutaan, jolloin sanotaan yksinkertaisesti että A on C-täydellinen. Siis C-täydelliset ongelmat ovat luokan C maksimaalisen vaikeita ongelmia. Esimerkki 2.25: L u on RE-täydellinen. 157

158 Palautuksilla on transitiivisuusominaisuus: Lause 2.26: Jos A m B ja B m C niin A m C. Todistus: HT. Korollaari 2.27: Jos A C ja B m A jollain C-täydellisellä B, niin A on C-täydellinen. Todistus: Jos C C, niin C m B (koska B on C-täydellinen) joten C m A (transitiivisuus). Esimerkki 2.28: Kun todistimme että epätyhjyysongelma L ne ei ole rekursiivinen, teimme sen muodostamalla palautuksen L u m L ne. Koska lisäksi L ne RE, niin L ne on RE-täydellinen. 158

159 Lisää esimerkkejä: Ricen lauseen todistuksessa osoitettiin, että L u m L S millä tahansa ei-triviaalilla semanttisella ongelmalla S. Siis jos ei-triviaali L S ylipäänsä on rekursiivisesti lueteltava, se on RE-täydellinen. Toisaalta jos A on rekursiivinen, niin A m B mille tahansa B kunhan B ja B Σ. Siis rekursiiviset kielet ovat maksimaalisen helppoja. Yleisesti kaikista luonnollisista rekursiivisesti lueteltavista kielistä osoittautuu, että ne ovat joko rekursiivisia tai RE-täydellisiä. On kuitenkin mahdollista konstruoida esimerkkejä RE-kielistä, joiden vaikeus on näiden kahden ääripään välillä: Lause 2.29: Luokassa RE REC on kieliä jotka eivät ole RE-täydellisiä. 159

160 Vastaavasti voidaan puhua luokan täydellisistä kielistä. co-re = { A A RE } Lause 2.30: Kieli A on RE-täydellinen jos ja vain jos A on co-re-täydellinen. Todistus: Määritelmän mukaan A RE jos ja vain jos A co-re. Jos f on palautus B m A, niin se on samalla palautus B m A. 160

161 Kielet A ja B ovat rekursiivisesti isomorfiset jos f: A m B jollain bijektiolla f: Σ Σ. Lause 2.31: Kaikki RE-täydelliset kielet ovat keskenään rekursiivisesti isomorfisia. Siis RE-täydelliset kielet ovat kaikki samoja modulo merkkijonojen rekursiivinen uudelleenjärjestäminen. Laskennallisten ongelmien vaativuusluokat jatkuvat (pitkälle) RE- ja co-re-täydellisten kielten ulkopuolelle. Esim. totaalisuusongelma L tot = { w { 0, 1 } n M w pysähtyy kaikilla syötteillä } jää luokan RE co-re ulkopuolelle. 161

162 kaikki funktiot RE-täyd. co-re-täyd. RE co-re REC Funktioiden laskettavuusluokkia kuvannollisesti 162

163 Yhteenveto laskettavuudesta monet tärkeät ongelmat ovat ratkeamattomia kieli REC? RE? co-re? universaalikieli L u ei on ei pysähtymisongelma H ei on ei epätyhjyysongelma L ne ei on ei tyhjyysongelma L e ei ei on totaalisuusongelma L tot ei ei ei ratkeamattomat ongelmat matematiikassa ja formaaleissa kielissä universaalien laskennan mallien ekvivalessin perusteella tulokset siirtyvät koskemaan RAM-mallia, ohjelmointikieliä,... jos hyväksymme Churchin-Turingin teesin, tämä kertoo siitä mitä missään realistisessa mallissa on mahdollista laskea Perustekniikka: Osoitetaan A REC todistamalla B m A jollain tunnetulla B REC; vastaavasti A RE 163

164 3. Laskennan vaativuusteoriaa Siirrymme tarkastelemaan, mitä laskennallisia ongelmia voidaan ratkaista tehokkaalla algoritmilla [HMU luku 10]. Tämän luvun jälkeen opiskelija tuntee laskennallisen vaativuuden peruskäsitteet ja osaa soveltaa niitä tuttuihin algoritmeihin tuntee NP-täydellisyyden teknisen määritelmän ja käytännön merkityksen tunnistaa tyypilliset NP-täydelliset ongelmat osaa laatia yksinkertaisia NP-täydellisyystodistuksia 164

165 Tähän asti on puhuttu siitä, mitä on mahdollista laskea äärellisessä ajassa. Nyt siirrymme tarkastelemaan laskemista kohtuullisessa ajassa. Määrittelemme pian peruskäsitteet täsmällisesti. Sovellettaessa teoreettisia tuloksia käytännön tilanteisiin on syytä miettiä tarkasti, onko tämä teoreettinen määritelmä hyvä formalisointi sille, mitä sovelluksessa oikeasti voidaan pitää kohtuullisena. Kaikki tässä luvussa käsiteltävät ongelmat (kuten kursseilla Tietorakenteet jne. kohdatutkin) ovat selvästi ratkeavia. Ne ovat siis laskettavuuden teorian kannalta ekvivalentteja (ja helppoja ). Laskennan vaativuusteoriassa pyrimme tavallaan löytämään luokan REC ( helpot ongelmat) sisällä hienorakennetta : jotkin ratkeavat ongelmat ovat kuitenkin jossain mielessä helpompia, jotkin vaikeampia. Laskennan vaativuusteoria on tutkimuksen kannalta jossain mielessä vaikeampaa kuin laskettavuuden teoria: monet perustavanlaatuiset kysymykset ovat vielä avoinna. 165

166 Keskeinen kysymyksenasettelu Laskennan vaativuusteorian peruskysymykset ovat intuitiivisesti seuraavan tyyppisiä (ajan sijaan voidaan puhua muistista tms.): Annettu laskennallinen ongelma A ja aikaraja T. Voiko ongelman A ratkaista ajassa T (tai alle)? (yläraja aikavaativuudelle) Annettu laskennallinen ongelma A ja aikaraja T. Viekö ongelman A ratkaiseminen välttämättä vähintään ajan T? (alaraja aikavaativuudelle) Ylärajoja todistetaan tyypillisesti laatimalla tehokas algoritmi ja analysoimalla sen aikavaativuus. Tietojenkäsittelytieteilijät ovat hyviä tässä. Alarajojen todistaminen on vaikeaa. Tyypillisesti se onnistuu vain jos ongelma A on sopiva keinotekoinen ongelma (esim. diagonalisoimalla saatu) tai tehdään lisärajoituksia sille, millaiset algoritmit ovat sallittuja (esim. O(n log n)-alaraja järjestämiselle). Ideaalitapauksessa ylä- ja alaraja yhtyvät, jolloin on löydetty optimaalinen algoritmi. 166

167 Deterministinen aikavaativuus Sovellamme Tietorakenteista yms. tuttua algoritmin aikavaativuuskäsitettä Turingin koneisiin [HMU , ]. Olkoon M deterministinen (mutta mahdollisesti moninauhainen) Turingin kone. Jos syötteellä x Σ kone M tekee tasan k laskenta-askelta ja pysähtyy, merkitsemme steps M (x) = k. Jos laskenta ei pysähdy, niin steps M (x) =. Koneen M aikavaativuus on funktio time M : N N { }, jolla time M (n) = max { steps M (x) x = n }. Siis koneen aikavaativuus on T, jos millään pituutta n olevalla syötteellä kone kone ei laske yli T (n) askelta, ja T on pienin mahdollinen jolle tämä pätee. Koneen M aikavaativuus on polynominen, jos jollakin polynomilla p pätee time M (n) p(n) kaikilla n. 167

168 Huomioita aikavaativuuden määritelmästä Aikavaativuuden polynomisuus voitaisiin yhtäpitävästi ilmaista vaatimalla, että jollakin k N pätee tai että jollakin l pätee time M (n) n k + k time M (n) = O(n l ). kaikilla n Yleensä ei tarkastellakaan tarkkaa aikavaativuutta time M, vaan jotain ylärajaa T jolla time M (n) = O(T (n)). [O-notaatio: ks. Tietorakenteet] Käytämme tässä pahimman tapauksen aikavaativuutta eli kullakin n tarkastelemme vaikeinta syötettä, jonka pituus on n. On mahdollista tarkastella myös keskimääräisen tapauksen aikavaativuutta, mutta tämä on teknisesti vaikeaa ja edellyttää usein epärealistisia oletuksia syötteen jakaumasta. Voimme vastaavasti määritellä koneen M tilavaativuuden space M (n), joka on suurin koneen käyttämä nauhapaikkojen lukumäärä kun syötteen pituus on n. 168

169 Tärkeitä deterministisiä vaativuusluokkia Ryhmittelemme päätösongelmia niiden vaatimien laskentaresurssien mukaan. Päätösongelma A kuuluu luokkaan P, jos se voidaan tunnistaa polynomisessa ajassa, eli A = L(M) jollain deterministisellä M jonka aikavaativuus on polynominen. Formaalisti P = { L(M) M deterministinen, time M (n) = O(n k ) jollain k }. Päätösongelma A kuuluu luokkaan E, jos A = L(M) jollain M jonka aikavaativuus on korkeintaan eksponenttifunktio. Formaalisti E = { L(M) M deterministinen, time M (n) = O(2 nk ) jollain k }. Päätösongelma A kuuluu luokkaan PSPACE, jos se voidaan tunnistaa polynomisessa tilassa, eli A = L(M) jollain M jonka tilavaativuus on polynominen. Formaalisti PSPACE = { L(M) M deterministinen, space M (n) = O(n k ) jollain k }. 169

170 Huomautuksia vaativuusluokista Kaikki vaativuusluokat ovat triviaalisti rekursiivisten kielten luokan REC aitoja osajoukkoja. Selvästi P E. On mahdollista osoittaa, että P E, mutta tämä ei ole mitenkään ilmeistä. On melko helppo osoittaa, että P PSPACE ja PSPACE E. Ei tiedetä, päteekö P = PSPACE tai PSPACE = E. (Arvellaan, että kumpikaan ei päde.) Kun sanotaan, että ongelman aikavaativuus on eksponentiaalinen, tarkoitetaan yleensä, että aikavaativuus on vähintään 2 cn jollain c > 0, eikä kuulumista luokkaan E. Määrittelemme jatkossa myös epädeterministisiin Turingin koneisiin perustuvat vaativuusluokat NP jne. jotka ovat myös tärkeitä. Kirjallisuudesta löytyy runsaasti muitakin vaativuusluokkia ( structural complexity theory ). 170

171 Tila- ja aikavaativuus eri laskennan malleissa Jos A = L(M) moninauhaisella Turingin koneella M, niin A = L(N) missä N on yksinauhainen, time N (n) = O(time M (n) 2 ) ja space N (n) = O(space M (n)) (s ). Jos kieli voidaan tunnistaa RAM-mallissa (tai jossain muussa nykyaikaisen tietokoneen abstraktissa mallissa) ajassa t ja tilassa s, niin se voidaan tunnistaa Turingin koneella ajassa O(t(n) 2 ) ja tilassa O(s(n)). Yleisemmin aiemmin esitetyissä universaaleissa laskennan malleissa aika- ja tilavaativuudet (kun ne määritellään järkevästi) ovat polynomisesssa suhteessa: ts. jos jokin ongelma ratkeaa jossain mallissa ajassa t(n) niin missä tahansa toisessa mallissa se ratkeaa ajassa O(t(n) k ) jollain vakiolla k (joka riippuu käytetyistä malleista, mutta ei ongelmasta). Johtopäätös: luokat P, E ja PSPACE eivät ole kovin herkkiä sille, mitä laskennan mallia käytetään. 171

172 Usein ajatellaan, että polynomisessa ajassa ratkeavat ongelmat ovat käytännössä ratkeavia. Mahdollista kritiikkiä: Jos vaativuus on esim. luokkaa n 100 niin ongelma ei varmaan ole käytännössä ratkeava. Kommentti: harvoja poikkeuksia lukuunottamatta ei tunneta käytännön esimerkkejä joissa aikavaativuus olisi polynominen mutta korkeaa astetta Käytännössä syötteen koolla on jokin äärellinen yläraja, joten ei-polynomisuus ei ole ongelma Kommentti: näin voi olla jos yläraja on riittävän pieni; tyypilliset ei-polynomiset aikavaativuusfunktiot kuitenkin kasvat nopeasti jo melko pienillä n. Pahin tapaus ei kerro koko totuutta. Kommentti: voi hyvin pitää paikkansa, mutta esim. keskimääräisen tapauksen analyysi vaikeaa ja usein edellyttää kyseenalaisia oletuksia. Johtopäätös: yleensä polynomisuus = tehokkuus mutta mallin rajoituksia pitää harkita tapauskohtaisesti 172

173 Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia (nähdään helposti) pääkysymys: mitkä niistä ratkeavat polynomisessa ajassa osoittautuu, että tämä on yllättävän vaikea kysymys Kuten ratkeavuustarkasteluissa, meidän pitää tehdä joitain teknisiä esitysmuoto-oletuksia. luokat P, PSPACE ja E määritelty luokkina formaaleja kieliä ts. formaalisti ongelmien syötteet ovat merkkijonoja käytännön ongelmissa syötteet ovat verkkoja, loogisia kaavoja, joukkoja jne. täytyy sopia syötteiden esittämisestä merkkijonoina 173

174 Esimerkki: suunnattu verkko Kurssilla Tietorakenteet opittuun tapaan suunnattu verkko G = (V, E) voidaan esittää esim. vierusmatriisina tai vieruslistana. a b V = { a, b, c } E = { (a, b), (a, c), (c, a) } c Vierusmatriisi A a = v 1, b = v 2, c = v 3 A(i, j) = 1 joss (v i, v j ) E Vieruslista ((2, 3), (), (1)) Alilista i sisätää ne j joilla (v i, v j ) E Vierusmatriisi tai vieruslista voidaan esittää merkkijonona sillä tavalla kuin tällaisia rakenteita koodataan esim. ASCII-jonoiksi normaalisssa ohjelmoinnissa. 174

175 Kun sanomme että jokin esim. verkkoja koskeva päätösongelma ratkeaa polynomisessa ajassa, tarkoitamme että vastaava merkkijonoesityksistä koostuva formaali kieli kuuluu luokkaan P. Jatkossa ei kiinnitetä huomiota esitystavan yksityiskohtiin, vaan oletetaan se tehdyksi jollain järkevällä tavalla. Lopputulos on, että muodollinen määritelmä on sama kuin esim. kurssilta Tietorakenteet tuttu polynominen aikavaativuus Pitää kuitenkin muistaa, että aikavaativuus määritellään syötteen pituuden suhteen. Siis järkevä pitää sisällään sen, että syötteen koko ei kasva liikaa Huom. tärkeä erikoistapaus: luonnollisen luvun n koodin pituus on O(log n) (esim. binääriesitys log 2 n + 1 bittiä) 175

176 Esimerkkejä verkko-ongelmista vierusmatriisiesityksen koko on O(n 2 ), vieruslistaesityksen koko O(n + m) = O(n 2 ) missä n = V ja m = E (huom. m = O(n 2 )) verkon tapauksessa oletetaan, että syötteen pituus on polynominen verkon solmujen lukumäärän n suhteen siis ongelmaa vastaavan formaalin kielen kuuluminen luokkaan P tarkoittaa samaa kuin että ongelma ratkeaa solmujen lukumäärän n suhteen polynomisessa ajassa Kurssilla Tietorakenteet opitun perustella esim. seuraavat ongelmat ratkeavat polynomisessa ajassa: onko suunnatussa (tai suuntaamattomassa) verkossa G polku solmusta u solmuun v (syvyyssuuntainen etsintä O(n + m)) onko painotetussa verkossa G solmusta u solmuun v polku, jonka kustannus on korkeintaan c (Dijkstran algoritmi O(n log n + m)) Huom. nämä on tässä muotoiltu päätösongelmina; palaamme pian kysymykseen etsintä- ja optimointiongelmista 176

177 Eulerin kehä (Euler tour) Verkko Eräs Eulerin kehä Eulerin kehä on polku, joka käyttää verkon jokaista kaarta tasan kerran ja palaa lähtöpisteeseensä Kysymys Onko annetussa suuntaamattomassa verkossa Eulerin kehä? ratkeaa polynomisessa ajassa Ratkaisu perustuu havaintoon, että Eulerin kehä on olemassa, jos ja vain jos verkko on yhtenäinen ja jokaisen solmun aste on parillinen (Euler 1736). 177

178 Hamiltonin kehä (Hamiltonian Circuit, HC) Verkko Eräs Hamiltonin kehä Hamiltonin kehä on polku, joka käy jokaisessa solmussa tasan kerran ja palaa lähtöpisteeseensä. Ongelmalle Onko annetussa suuntaamattomassa verkossa Hamiltonin kehä? ei tunneta polynomisessa ajassa toimivaa algoritmia. Pidetään luultavana, ettei tällaista algoritmia ole olemassa, eli että HC P. 178

179 Hamiltonin kehä -ongelmalle on seuraava (erittäin) naiivi ratkaisualgoritmi: Olkoon G = (V, E) missä V = { v 1,..., v n }. Toista kaikilla jonon (v 1, v 2, v 3,..., v n ) permutaatioilla (u 1, u 2, u 3,..., u n ): Jos (u j, u j+1 ) E kun j = 1,..., n 1 ja (u n, u 1 ) E niin palauta kyllä Palauta ei. Algoritmi toimii selvästi polynomisessa tilassa; siis HC PSPACE Tarkistettavia permutaatioita on n! kappaletta, yhden tarkistus sujuu selvästi polynomisessa ajassa. Koska (n/2) n/2 n! n n, niin HC E, mutta tämän algoritmin aikavaativuus ei ole polynominen. Itse asiassa HC on NP-täydellinen ongelma, mistä lisää pian. 179

180 Päätösongelmaan HC liittyy myös ilmeinen etsintäongelma: Syöte: suuntaamaton verkko G = (V, E) Tuloste: jokin verkon G Hamiltonin kehä H E jos olemassa; ei ole muuten Oletetaan nyt, että funktio DecideHC(G) ratkaisee päätösongelman HC, ts. palauttaa tosi joss verkossa G on Hamiltonin kehä. Tällöin seuraava algoritmi FindHC ratkaisee yo. etsintäongelman: FindHC(V, E): /* Olkoon E = { e 1,..., e m }. */ H := E; for i := 1 to m do if DecideHC(V, H { e i }) then H := H { e i }; return polku joka koostuu joukon H kaarista; Erityisesti jos olisi HC P, niin myös etsintäongelma ratkeaisi polynomisessa ajassa. Toisaalta jos HC P kuten luullaan, niin etsintäongelma ei tietenkään ratkea polynomisessa ajassa. 180

181 Alkulukutestaus Luonnollinen luku n 2 on alkuluku jos luvun n ainoat tekijät ovat 1 ja n. Määritellään päätösongelma PRIMES = { n N n alkuluku }. Ongelmalle PRIMES on äskettäin löydetty polynomisessa ajassa toimiva ratkaisualgoritmi ( PRIMES is in P, M. Agrawal, N. Kayal ja N. Saxena, 2002). Aikavaativuuspolynomi on korkeaa astetta, käytännössä aiemmat satunnaisuuteen perustuvat algoritmit saattavat olla parempia. Huom. Ongelma on testata luku n sen pituuden O(log n) suhteen polynomisessa ajassa. Itse luvun n suhteen polynominen aika saavutetaan triviaalisti. Tämä ei kuitenkaan auta jos n on esim bittinen, siis n Tässä tapauksessa etsintäongelma näyttäisi olevan vaikeampi kuin päätösongelma. Edelleenkään ei osata tehokkaasti jakaa lukua alkutekijöihin. Tehokas algoritmi tekijöihin jaolle murtaisi monet salausmenetelmät. 181

182 Yleistettyjä lautapelejä Yleistetty tammi: Annettu: mielivaltainen pelitilanne n n tammilaudalla Kysymys: voiko musta pelaaja pakottaa voiton itselleen Yleistetty go: Annettu: mielivaltainen pelitilanne n n go-laudalla Kysymys: voiko musta pelaaja pakottaa voiton itselleen Kumpikin ongelma ratkeaa eksponentiaalisessa mutta ei polynomisessa ajassa; ratkeavuus polynomisessa tilassa avoin. (Kumpaankin tapaukseen liittyy epätriviaaleja oletuksia sääntöjen yksityiskohdista.) 182

183 Epädeterministiset vaativuusluokat [HMU , ] Määrittelemme nyt epädeterministisen Turingin koneen aika- ja tilavaativuuden. Tämä on hyödyllinen käsite ongelmien analysoimisessa; ei realistinen mitta ongelman ratkaisuajalle oikeilla tietokoneilla. Annetun yksittäisen laskennan aika- ja tilavaativuus voidaan määritellä kuten deterministisessä tapauksessa. Epädeterministisellä koneella N voi syötteellä x olla useita mahdollisia laskentoja, joten määritellään steps N (x) = koneen N pisimmän laskennan pituus syötteellä x. Aikavaativuusfunktio on kuten ennenkin time N (n) = max { steps N (x) x = n }. Vastaavasti space N (n) on suurin tila, joka voidaan käyttää pituutta n olevalla syötteellä. 183

184 Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtinä tilanteet joista ei siirtymää, erityisesti hyväksyvät tilanteet... qyes qyes... solmun vqw jälkeläisiä ne v q w joilla vqw N v q w... qyes.... N hyväksyy syötteen x joss puussa ainakin yksi hyväksyvä lehti 184

185 Jos time N (x) = t, laskentapuussa kork. d t solmua missä d suurin määrä seuraajia millään yksittäisellä tilanteella. Haarautumisasteelle d saadaan triviaali yläraja d 2 Γ Q, joka riippuu koneen N rakenteesta mutta ei syötteestä x. Määritelmän mukaan aikavaativuus määräytyy puun pisimmän haaran mukaan. Tämä voi tuntua ei-intuitiiviselta, mutta itse asiassa ei ole oleellista. Seuraava lause näet osoittaa, että jos lyhimmän hyväksyvän polun pituudelle tunnetaan yläraja, laskennasta voidaan karsia kaikki tätä pitemmät haarat. Tunnistettu kieli pysyy samana, ja karsinnan toteuttamisesta tulee korkeintaan neliöllinen lisäaikarasite. 185

186 Lause 3.1: Jos A = L(N) missä N on yksinauhainen epädeterministinen Turingin kone ja jokaisella x A koneen N lyhimmän hyväksyvän laskennan pituus on O( x k ), niin A = L(N ) missä N on yksinauhainen epädeterministinen Turingin kone ja time N (x) = O( x 2k ). Todistushahmotelma Muodostetaan ensin kaksinauhainen N, joka aluksi kirjoittaa kakkosnauhalle O( x k ) nollaa ja sen jälkeen simuloi konetta N käyttäen kakkosnauhaa käskylaskurina (vrt. harj. 3. teht. 5.) Tämä kaksinauhainen kone toimii ajassa O(n k ), joten sitä voidaan simuloida yksinauhaisella ajassa O(n 2k ). 186

187 Tärkeitä epädeterministisiä vaativuusluokkia Päätösongelma A kuuluu luokkaan NP (nondeterministic polynomial time), jos se voidaan tunnistaa epädeterministisellä Turingin koneella. jonka aikavaativuus on polynominen. Formaalisti NP = { L(N) N epädeterministinen, time N (n) = O(n k ) jollain k }. Kuten deterministisessä tapauksessa, voidaan määritellä myös NE = { L(N) N epädeterministinen, time N (n) = O(2 nk ) jollain k } NPSPACE = { L(N) N epädeterministinen, space N (n) = O(n k ) jollain k }. Koska deterministiset koneet ovat epädeterminististen erikoistapaus, on triviaalisti P NP jne. Itse asiassa voidaan osoittaa PSPACE = NPSPACE, joten epädeterministinen tilavaativuus ei yleensä ole kiinnostavaa. Sen sijaan kysymys, päteekö P NP, on avoin. 187

188 Sivulla 47 esitetystä laskelmasta seuraa, että jos A NP, niin A voidaan tunnistaa deterministisellä Turingin koneella ajassa O(2 p(n) ) jollakin polynomilla p. Tämä laskelma perustuu oleellisesti edelläesitetyn laskentapuun läpikäymiseen leveyssuuntaisesti. Periaatteessa on mahdollista, että on jokin tehokkaampikin tapa simuloida epädeterministisiä laskentoja. Oleellisesti tehokkaampaa tapaa ei kuitenkaan tunneta, eikä sellaisen löytymistä pidetä todennäköisenä. Toisin sanoen arvellaan, että luokan NP vaikeimmat ongelmat todella vaativat eksponentiaalisen laskenta-ajan (realistisissa laskennan malleissa). Ennen tämän ajatuksen tarkempaa tutkimista tarkastellaan, millaisia ongelmia luokassa NP on. 188

189 Esimerkki: Hamiltonin kehä Osoitetaan, että HC NP. Tehdään ensin pseudokoodiesitys epädeterministiselle algoritmille, joka toimii polynomisessa ajassa ja ratkaisee ongelman HC. Määritellään ensin normaali deterministinen apuproseduuri CheckHC(V, E, Q), joka tarkistaa onko annettu solmujono Q Hamiltonin kehä verkossa (V, E): CheckHC(V, E, Q): /* Olkoon Q = (u 1,..., u m ). */ if m V or { u 1,..., u m } = V then return false; if (u m, u 1 ) E then return false; for i := 1 to m 1 do if (u i, u i+1 ) E then return false; return true Selvästi CheckHC toimii polynomisessa ajassa. 189

190 Hamiltonin kehä -ongelmalle saadaan nyt seuraava epädeterministinen algoritmi: HC(G): 1. Olkoon G = (V, E) ja V = n. 2. Arvaa epädeterministisesti solmujono Q = (u 1,..., u n ) V n. 3. Jos CheckHC(V, E, Q) = true niin hyväksy, muuten hylkää. Tämä toimii polynomisessa ajassa, ja on epädeterministinen algoritmi ongelmalle HC koska 1. jos G HC niin jokin arvaus Q johtaa hyväksymiseen ja 2. jos G HC niin kaikki arvaukset Q johtavat hylkäämiseen. 190

191 Määritelmien konkretisoimiseksi käännetään vielä tämä pseudokoodi Turingin koneeksi. Koodataan syöte G = (V, E), missä V = { v 1,..., v n } ja E = { (v i1, v j1 ),..., (v im, v jm ) }, aakkoston { 0, 1, } merkkijonona ˆn î 1 ĵ 1 î 2 ĵ 2... ˆ i m ˆ j m missä î on luvun i binääriesitys. Tämä esitys on helppo muodostaa vieruslistasta tai -matriisista. Esim. jos V = { a, b, c, d } ja E = { (a, b), (a, c), (b, c), (c, d) } niin koodataan a 1, b 10, c 11 ja d 100 ja esitykseksi tulee

192 Kielen HC tunnistava kone N on kaksinauhainen ja toimii seuraavasti: 1. Kirjoita kakkosnauhalle epädeterministisesti jokin merkkijono v { 0, 1, }, jonka pituus on korkeintaan n 2 + n Olkoon v = w 1 w 2... w n missä w i { 0, 1 } ja n = V ; jos v ei ole tätä muotoa niin hylkää. 3. Jos jollain i = 1,..., n koodi î esiintyy merkkijonossa v kaksi kertaa tai ei esiinny lainkaan, hylkää. 4. Jos syöte ei sisällä merkkijonoa w 1 w n eikä w n w 1, niin hylkää. 5. Jos jollain i = 1,..., n 1 syöte ei sisällä merkkijonoa w i w i+1 eikä w i+1 w i niin hylkää (huom. suuntaamaton verkko, jompi kumpi suunta riittää) 6. Muuten hyväksy. 192

193 Askelten perusteella kone N hyväksyy syötteen, jos ja vain jos nauhalle 2 generoitu merkkijono v esittää jotain Hamiltonin polkua verkossa G. Triviaalisti tällainen merkkijono v on olemassa, jos ja vain jos G HC. Toisin sanoen koneella N on hyväksyviä laskentoja, jos ja vain jos G HC. Kone N toimii selvästi polynomisessa ajassa: Askel 1 vie ajan O(n 2 ). Askelet 2 ja 3 menevät samoin ajassa O(n 2 ). Askelissa 4 ja 5 pitää oleellisesti käydä läpi syötteeseen koodattu verkon G vieruslista n kertaa, mikä vie karkeasti ajan O(n 3 ). Siis N on polynomisessa ajassa toimiva epädeterministinen Turingin kone, joka ratkaisee Hamiltonin kehä -ongelman, joten HC NP. Käytännössä ongelman kuuluminen luokkaan NP voidaan tehdä korkean tason pseudokoodilla, kunhan ymmärretään mitä epädeterministinen arvaaminen tarkoittaa. 193

194 Propositiologiikan toteutuvuusongelma (Satisfiability, SAT) Otetaan vielä esimerkkinä yksi tärkeä luokan NP ongelma. [HMU , ] Propositiologiikan kaava muodostuu loogisista konnektiiveista, ja, sulkumerkeistä ( ja ), vakiosymboleista 0 ja 1 sekä muuttujasymboleista x i, i = 1, 2, 3,..., tuttuun tapaan; esim. x 4 (x 7 x 1 ). Kaavat voidaan ilmeisellä tavalla esittää aakkoston {,,, (, ), 0, 1, x } merkkijonoina; esim. x100 (x111 x1). Kaavan totuus määritellään tuttuun tapaan; 0 = epätosi ja 1 = tosi. Jos φ(x 1,..., x n ) on muuttujia x 1,..., x n sisältävä kaava ja (v 1,..., v n ) { 0, 1 } n, niin φ(v 1,..., v n ) on kaavan arvo kun muuttujille sijoitetaaan arvot x i := v i ; esim. kun φ(x 1, x 2, x 3 ) = (x 3 x 1 ) x 2 niin φ(0, 1, 0) = (0 0) 1 = 0. Kaava φ(x 1,..., x n ) on toteutuva jos φ(v 1,..., v n ) = 1 jollain (v 1,..., v n ) { 0, 1 } n. 194

195 Määritellään nyt propositiologiikan toteutuvuusongelma SAT = { φ φ on toteutuva }. Toteutuvuusongelma voidaan helposti ratkaista epädeterministisesti polynomisessa ajassa: 1. Lue φ(x 1,..., x n ). 2. Arvaa epädeterministisesti (v 1,..., v n ) { 0, 1 } n. 3. Jos φ(v 1,..., v n ) = 1 niin hyväksy; muuten hylkää. Siis SAT NP. 195

196 Luokan NP ongelmien yleinen luonne ( ) Edellisiä esimerkkejä yleistäen voidaan osoittaa, että mikä tahansa luokan NP ongelma A voidaan ratkaista seuraavan tyyppisellä proseduurilla: A(x): 1. Olkoon n = x. 2. Arvaa epädeterminisesti y, missä y = p(n) jollain polynomilla p. 3. Jos CheckA(x, y) = true niin hyväksy, muuten hylkää. Tässä CheckA(x, y) on jokin deterministinen, polynomisessa ajassa toimiva proseduuri. Emme tässä todista, miksi kaikki epädeterminismi voidaan tällä tavoin rajoittaa alussa tapahtuvaan arvausvaiheeseen, mutta tarkastelemme hieman asian tulkintaa. 196

197 Jos x ja y ovat sellaisia, että edellisen sivun merkinnöillä CheckA(x, y) = true, niin sanomme että y on todiste sille, että x A. Esim. SAT-ongelman tapauksessa jos φ(x 1,..., x n ) SAT, niin tämän seikan todisteita ovat sellaiset (v 1,..., v n ) { 0, 1 } n joilla φ(v 1,..., v n ) = 1. Jotta edellisen sivun konstruktio todella osoittaisi A NP, seuraavien ehtojen on oltava voimassa: 1. jos x A, niin tälle on jokin polynomisen kokoinen todiste, 2. jos x A, niin mikään y ei todista x A ja 3. kysymys todistaako y, että x A voidaan annetuilla x ja y ratkaista deterministisesti polynomisessa ajassa. Intuitiivisesti luokan NP ongelmat siis ovat sellaisia, että niiden kyllä -tapauksille on suhteellisen pienet todisteet, ja annettu todiste on helppo tarkastaa. Ongelma on siinä, että potentiaalisia todisteita on 2 p(n) kappaletta. 197

198 Epädeterminismi vs. satunnaislaskenta ( ) Miten sivulla 196 esitetyn tyyppinen algoritmi voidaan suorittaa oikealla tietokoneella? Oletetaan y { 0, 1 }. Ilmeisimmät vaihtoehdot: Vaihtoehto 1: Käydään läpi kaikki y { 0, 1 } p(n). saadaan varmasti oikea vastaus pitää käydä läpi 2 p(n) mahdollisuutta (paljon!) Vaihtoehto 2: Valitaan y { 0, 1 } p(n) satunnaisesti tasaisesta jakaumasta aikavaativuus sama kuin epädeterministisen algoritmin aikavaativuus jos x A, vastaa aina oikein jos x A, vastaa oikein ainakin todennäköisyydellä 1/2 p(n) (pieni!) jos halutaan aina oikea vastaus ainakin todennäköisyydellä 1/2, pitää suorittaa 2 p(n) 1 riippumatonta toistoa (monta!) 198

199 P = NP -ongelma Pääsemme nyt vihdoin kysymykseen, mitä (jos mitään) tieto A NP kertoo ongelman A deterministisestä aikavaativuudesta. laskettavuusteoria: mikä voidaan tunnistaa epädeterministisellä Turingin koneella, voidaan tunnistaa myös deterministisellä Turingin koneella vaativuusteoria: koskeeko sama tunnistamista polynomisessa ajassa; ts. päteekö P = NP? kysymys ollut kiivaan tutkimuksen kohteena vuodesta 1971 (Stephen Cook, The complexity of theorem-proving procedures ), yhä avoin intuitiivisesti P = NP olisi hyvin yllättävä tulos, koska em. tulkinnan mukaan se tarkoittaisi, että todiste voidaan löytää eksponentiaalisesta etsintäavaruudesta polynomisessa ajassa P = NP pätee jos ja vain jos jokin NP-täydellinen ongelma (esim. HC, SAT) ratkeaa polynomisessa ajassa; siirrytään tarkastelemaan näitä. 199

200 Polynomiset palautukset ja NP-täydellisyys [HMU , ] Polynomisen palautuksen idea on sama kuin rekursiivisen palautuksen, paitsi että liikutaan polynomisen aikavaativuuden maailmassa. Funktio f voidaan laskea polynomisessa ajassa, jos jokin Turingin kone M laskee sen ja time M (n) = O(n k ) jollain k. Funktio f: Σ Γ palauttaa polynomisesti kielen A Σ kieleen B Γ, merkitään f: A p m B, jos f on laskettavissa polynomisessa ajassa ja x A f(x) B kaikilla x Σ. Jos tällainen f on olemassa, sanotaan että kieli A palautuu polynomisesti kieleen B ja merkitään A p m B. Lemma 3.2: Olkoon S jokin vaativuusluokista P, NP, PSPACE, E, NE. Jos A p m B ja B S, niin A S. Todistus: Helppo. 200

201 B A fa A fa B Σ Γ Periaatekuva polynomisesta palautuksesta f: A p m B (kuva sama kuin sivulla 117, mutta nyt f laskettavissa polynomisessa ajassa) 201

202 Olkoon C P(Σ ) luokka aakkoston Σ kieliä. Jatkossa yleensä C = NP, mutta myös tapaukset C = PSPACE ja C = E (jne.) ovat kiinnostavia. Kieli A Σ on C-täydellinen polynomisten palautusten suhteen jos 1. A C ja 2. B p m A kaikilla B C Kieli A Σ on C-kova polynomisten palautusten suhteen jos B p m A kaikilla B C. Siis C-kova ongelma on ainakin yhtä vaikea kuin mikä tahansa luokan C ongelma. Luokan C maksimaalisen vaikeat ongelmat ovat C-täydellisiä. Yleensä puhutaan vain NP-täydellisyydestä jne. ja yhteydestä selviää että puhutaan polynomisista palautuksista (mutta muunkinlaisia palautuksia esiintyy vaativuusteoriassa). 202

203 Täydellisten joukkojen perusominaisuuksia Lemma 3.3: Jos A p m B ja B p m C niin A p m C. Todistus: HT. Korollaari 3.4: [HMU Thm 10.4] Jos A p m B ja A on C-kova niin B on C-kova. Erityisesti B osoitetaan NP-kovaksi palauttamalla jokin tunnettu NP-kova A siihen. Jos lisäksi B NP, niin B on tällöin NP-täydellinen. Korollaari 3.5: [HMU Thm 10.5] Jos A on C-kova ja A P, niin C P. Erityisesti jos jollakin NP-täydellisellä ongelmalla on polynomisessa ajassa toimiva ratkaisu, niin P = NP (mitä siis ei pidetä luultavana). 203

204 Huomautuksia NP-täydellisyydestä ym. Jos A ei ole päätösongelma (vaan esim. etsintäongelma), sanotaan että A on NP-kova, jos polynomisen algoritmin olemassaolosta ongelmalle A seuraisi P = NP. Sen sijaan muita kuin päätösongelmia ei pidä sanoa NP-täydellisiksi. Kaikilla vaativuusluokilla C ei ole täydellisiä ongelmia. Voi esim. olla olemassa päättymätön jono yhä vaikeampia ongelmia A 0 p m A 1 p m A 2 p m..., missä A i C ja A i+1 p m A i kaikilla i. Kaikilla tähän mennessä esitellyillä luokilla kuitenkin on täydellisiä ongelmia. Seuraavana tavoitteena on osoittaa, että edellä mainittu toteutuvuusongelma SAT on NP-täydellinen. Tätä ennen luodaan alustava katsaus siihen, millaisia NP-täydellisiä ongelmia tunnetaan. 204

205 Esimerkkejä NP-täydellisistä ongelmista Toteutuvuus (Satisfiability, SAT) Annettu: propositiologiikan kaava φ Kysymys: onko φ toteutuva Hamiltonin kehä (Hamiltonian Circuit, HC) Annettu: suuntaamaton verkko G Kysymys: onko verkossa G Hamiltonin kehä Kauppamatkustajan ongelma (Travelling Salesman Problem, TSP) Annettu: suuntaamaton verkko G, painot c(u, v) N kaikille kaarille (u, v) E, luonnollinen luku k (Siis tarkemmin syöte on sopivasti koodattu kolmikko G, c, k.) Kysymys: onko verkossa G Hamiltonin kehä jonka kokonaispaino on kork. k 205

206 Lisää NP-täydellisiä ongelmia Solmupeite (Vertex Cover, VC) [HMU Node Cover (NC)] Annettu: suuntaamaton verkko G = (V, E), luonnollinen luku k Kysymys: onko verkossa G kork. k solmua sisältävä solmupeite, ts. joukko U V joka kaikista kaarista (u, v) E sisältää ainakin toisen päätepisteen u tai v. Riippumaton joukko (Independent Set, IS) Annettu: suuntaamaton verkko G = (V, E), luonnollinen luku k Kysymys: onko verkossa G riippumaton joukko jossa väh. k solmua, ts. sellainen U V että (u, v) E kaikilla u, v U Klikki (Clique, CLIQUE) Annettu: suuntaamaton verkko G = (V, E), luonnollinen luku k Kysymys: onko verkossa G klikki jossa väh. k solmua, ts. sellainen U V että (u, v) E kaikilla u, v U 206

207 Vielä lisää NP-täydellisiä ongelmia Verkonväritys (Graph Coloring, GC) Annettu: suuntaamaton verkko G, luonnollinen luku k Kysymys: voidaanko verkon G solmut värittää k värillä niin että minkään kaaren päätepisteet eivät ole saman väriset Ositus (Partition, PARTITION) Annettu: jono (a 1,..., a n ) luonnollisia lukuja Kysymys: onko olemassa A { 1,..., n } jolla i A a i = i A a i Repunpakkaus (Knapsack, KNAPSACK) Annettu: äärellinen joukko U ( esineet ) ja jokaiselle u U arvo v(u) N ja paino w(u) N; kokonaisluvut V ja W Kysymys: voidaanko valita sellainen joukko X U esineitä, että x X w(x) W ja x X v(x) V 207

208 Toiminta kun kohdataan NP-täydellinen ongelma 1. Havaitaan että käsillä oleva ongelma A näyttää NP-täydelliseltä 2. Etsitään kirjallisuudesta samantyyppinen NP-täydelliseksi tunnettu ongelma B; peruslähde Garey & Johnson: Computers and Intractability (1979) 3. Osoitetaan B p m A 4. Mietitään mitä sitten tehdään Huom. yleensä tällaisissa tilanteissa ollaan viime kädessä kiinnostuneita muusta kuin päätösongelmasta, esim. etsintäongelmasta (vrt. HC) tai optimointiongelmasta kuten TSP-ongelmaan liittyvä opt-tsp: annettu painotettu verkko, määrättävä pienin Hamiltonin kehän paino 208

209 Miten käytännössä ratkaistaan NP-kova ongelma Luultavasti ei kannata etsiä algoritmia joka aina toimii polynomisessa ajassa ja antaa tarkalleen oikean ratkaisun. Ehkä voidaan tehdä helpottavia lisäoletuksia siitä, millaisia syötteitä todella esiintyy. Jos tapaukset ovat riittävän pieniä, ehkä huolellisesti viritetty ei-polynominen algoritmi on riittävän nopea (branch-and-bound). Ehkä on olemassa tehokas approksimointialgoritmi joka todistettavasti löytää melkein optimaalisen ratkaisun. Ehkä joku heuristinen algoritmi, mahdollisesti yhdistettynä satunnaisuuteen, antaa riittävän hyviä ratkaisuja (lokaali haku, simuloitu jäähdytys). 209

210 Esimerkkejä NP-täydellisyystodistuksista Oletetaan tunnetuksi että IS on NP-täydellinen (tämä tullaan osoittamaan jatkossa) Lause 3.6: [HMU Thm 10.20] VC on NP-täydellinen. Todistus: Helposti nähdään VC NP (harj.teht.). Osoitetaan IS p m VC. Olkoon G = (V, E) missä V = n, ja U V. Nyt U on riippumaton joukko millään (u, v) E ei päde u U ja v U kaikilla (u, v) E pätee u V U tai v V U V U on solmupeite. Siis verkossa G on kokoa k oleva riippumaton joukko jos ja vain jos siinä on kokoa n k oleva solmupeite. Olkoon f funktio joka kuvaa parin G, k pariksi f( G, k ) = G, n k. Siis G, k IS joss f( G, k ) VC. Selvästi f on laskettavissa pol. ajassa, joten f: IS p m VC. 210

211 Toinen esimerkki: Oletetaan tunnetuksi, että HC on NP-täydellinen (kuten jatkossa todistetaan). Lause 3.7: [HMU Thm 10.24] TSP on NP-täydellinen. Todistus: Helposti nähdään että TSP NP. Osoitetaan HC p m TSP. Olkoon G = (V, E) HC-tapaus. Muodostetaan TSP-tapaus f(g) = G, c, n missä c(u, v) = 1 kaikilla (u, v) E, ja n = V. Siis verkko ennallaan ja kaikkien kaarten paino 1. Selvästi verkossa G on Hamiltonin kehä joss painotetussa verkossa G, c on Hamiltonin kehä jonka paino on korkeintaan n. Siis G HC jos ja vain jos f(g) TSP. Koska f: G G, c, n voidaan laskea polynomisessa ajassa, HC p m TSP. Mutta että tämä todella olisi kiinnostavaa, meidän pitää ensin osoittaa IS ja HC NP-täydellisiksi jollain muulla tavalla! 211

212 Toteutuvuusongelman NP-täydellisyys [HMU ] Että päästään osoittamaan ongelmia NP-täydellisiksi palautuksilla, pitää ensin osoittaa jokin ongelma NP-täydelliseksi suoraan määritelmästä. Valitaan täksi perusongelmaksi toteutuvuusongelma SAT. Lause 3.8: [HMU Thm 10.9] Toteutuvuusongelma SAT on NP-täydellinen. Todistus Tiedetään jo, että SAT NP. Pitää vielä osoittaa A p m SAT kaikilla A NP. Olkoon A = L(M) missä time M (n) p(n), p polynomi ja M yksinauhainen. Muodostetaan palautus f M : A p m SAT; siis f M laskettavissa polynomisessa ajassa ja w A jos ja vain jos f M (w) SAT 212

213 f M (w) on propositiologiikan kaava joka kuvaa mahdollisia koneen M laskentoja syötteellä w muuttujat ovat tyyppiä hetkellä t kone on tilassa q ja nauhapään paikka on j tai hetkellä t nauhapositiossa j on merkki c kaava f M (w) kuvaa, mitkä ajanhetkeä t + 1 vastaavat muuttujien arvot ovat sallittuja kun ajanhetken t arvot tunnetaan Muuttujien indeksoimiseksi numeroidaan ensin nauhapositiot: aluksi nauhapää positiossa 1 nauhapää voi enimmillään liikkua p(n) kertaa vasemmalle tai p(n) kertaa oikealle; siis nauhapää pysyy positioiden p(n) ja p(n) + 1 välillä aluksi syöte positioissa 1,..., n 213

214 Määritellään nyt muuttujat X t,j, arvojoukkona Q Γ, indekseinä j = (p(n) + 1),..., p(n) + 1, kuvaamaan laskentaa hetkellä t: ol. koneen tilanne aqb, nauhapään sijainti m siis kone tilassa q, nauhapään vas. puolella a = a 1... a k Γ ja nauhapäästä oikealle b = b 1... b l Γ koodataan tila ja nauhapään sijainti: X t,m 1 = q koodataan nauhan vasen osa: X t,m k 2+j = a j, j = 1,..., k koodataan nauhan oikea osa: X t,m+j 1 = b j, j = 1,..., l 214

215 Esimerkki 3.9: Oletetaan q 1 alkutila, q 2 hyväksyvä tila, Σ = { a, b, c }, Γ = Σ { # } missä # on tyhjämerkki, w = aab ja siis n = 3, p(3) = 4. Olkoon koneessa (ainakin) siirtymät δ(q 0, a) = (q 3, b, L), δ(q 3, #) = (q 3, c, R), δ(q 3, b) = (q 3, b, R) ja δ(q 3, a) = (q 2, c, R). Syötteellä aab on siis olemassa hyväksyvä laskenta q 1 aab M q 3 #bab M cq 3 bab M cbq 3 ab M cbcq 2 b Vastaavat muuttujien X t,j arvot, t = 0,..., 4, j = 5,..., 5: X t,j # # # # # q 0 a a b # # 1 # # # # q 3 # b a b # # 2 # # # # c q 3 b a b # # 3 # # # # c b q 3 a b # # 4 # # # # c b c q 2 b # # Oleellinen havainto: arvo X t,j määräytyy arvoista X t 1,j 1, X t 1,j ja X t 1,j

216 Varsinaisiksi totuusarvomuuttujiksi muodostettavaan propositiologiikan kaavaan f M (w) tulee nyt y tjz, t = 0,..., p(n), j = p(n) 1,..., p(n) + 1, z Q Γ, siis kaikkiaan (p(n) + 1)(2p(n) + 3)( Q + Γ ) muuttujaa, joiden intuitiivinen tulkinta on y tjz = 1 joss X tj = z. Nyt f M (w) tulee olemaan muuttujia y tjz sisältävä kaava, joka saa arvon 1 tasan sellaisilla muuttujien y tjz arvoilla jotka esittävät koneen M hyväksyvää laskentaa syötteellä w. Korkealla tasolla kaava tulee olemaan muotoa S N F U missä osakaavoilla S, N, F ja U on seuraavat tulkinnat: S: rivi X 0, esittää laskennan alkutilannetta N: kukin rivi X t 1, seuraa riviä X t, koneen M siirtymäfunktion mukaisesti F : jollain j pätee X p(n),j = q missä q on hyväksyvä tila. U: jokaisella ajanhetkellä koneen tila, nauhapään paikka ja jokaisen nauhaposition sisältö on yksikäsitteisesti määritelty; 216

217 Kaava U: tilanteen yksikäsitteisyys Merkitään indeksijoukkoja J = { p(n) 1,..., p(n) + 1 }, T = { 0,..., p(n) } ja Z = Q Γ. Kaava U t,j,z, t T, j J, z Z, on Q + Γ osan konjunktio joka sanoo että X t,j saa arvon z eikä mitään muuta arvoa: U t,j,z = y t,j,z. r Q Γ,r z y t,j,r Kaava U t sanoo, että X t,j saa kaikilla j jonkin yksikäsitteisen arvon: U t = U t,j,z. j J z Z Kaavan U t koko on (2p(n) + 3)( Q + Γ )2 kun yksinkertaisuuden vuoksi lasketaan muuttujasymbolin kooksi 1 eikä lasketa loogisia konnektiiveja. 217

218 Kaava U t,j,q sanoo että X t,j on tilasymboli: U t,j,q = z Q U t,j,z. Kaavan U t,j,q koko on siis Q ( Q + Γ ). Kaava U t tilasymboli tasan yhdellä j: U t = U t,j,q j J j J,j j U t,j,q sanoo, että X t,j on. Kaavan U t koko on (2p(n) + 3) 2 Q ( Q + Γ ). Lopullinen kaava U on U = t T ( U t U t ). Koko on (p(n) + 1)((2p(n) + 3)( Q + Γ ) 2 + (2p(n) + 3) 2 Q ( Q + Γ )) = O(p(n) 3 ). 218

219 Kaava S: alkutilanne Oikeaa alkutilannetta vastaava rivi X 0, koodataan kaavaksi S = y 0,0,q0 j= p(n) 1,..., 1 y 0,j,# j=1,...,n y 0,j,wj j=n+1,...,p(n)+1 y 0,j,# missä # on tyhjämerkki ja syöte on w = w 1... w n. Kaavan koko O(p(n)). Kaava F : hyväksyminen Oletetaan kone M muunnetuksi siten, että jokaisesta hyväksyvästä tilasta on siirtymä itseensä kaikilla merkeillä. Tämä selvästi ei muuta sitä, onko annetulla syötteellä kork. p(n) askelen mittaisia hyväksyviä laskentoja. Riittää siis tarkastaa, että hetkellä p(n) ollaan hyväksyvässä tilassa: F = 1 i k j J y p(n),j,ai missä hyväksyvien tilojen joukkoa on merkitty { a 1,..., a k }. Kaavan koko on O(p(n)) 219

220 Kaava N: laskennan oikea eteneminen; todistuksen ydin on tässä Huomataan, että koko laskennan, eli (p(n) + 1) (2p(n) + 3)-taulukon (X t,j ), oikeellisuuden tarkastamiseksi riittää tarkastaa kaikki (vakiokokoiset!) 2 3 -laatikot X t 1,j 1 X t 1,j X t 1,j+1 X t,j 1 X t,j X t,j+1 jos X t 1,j 1, X t 1,j ja X t 1,j+1 ovat kaikki nauhasymboleita, on oltava X t,j = X t 1,j (nauhan sisältö voi muuttua vain nauhapään kohdalla jos X t 1,j on tilasymboli, niin nauhapään alla on merkki X t 1,j+1 ja siirtymäfunktion arvo δ(x t 1,j, X t 1,j+1 ) antaa uudet arvot X t,j 1, X t,j ja X t,j+1 220

221 Esitetään ensin eri mahdollisuudet kaavioina. Seuraavassa A, B, C jne. esittävät nauhasymboleja ja q, q tilasymboleja. Nauhapää muualla: laatikon keskikohta ei muutu; reunoista ei voi sanoa koska nauhapää saattaa olla juuri laatikon vieressä A B C X t,j 1 B X t,j+1 Nauhapää liikkuu oikealle: tässä δ(q, B) = (q, C, R) A q B A C q Nauhapää liikkuu vasemmalle: tässä δ(q, B) = (q, C, L) A q B q A C Reunat on helpoin käsitellä erikoistapauksina: X t, p(n) 1 ja X t,p(n)+1 ovat aina tyhjämerkkejä, koska nauhapää ei voi ehtiä niin kauas. 221

222 Reunat hetkellä t käsitellään kaavalla ˆN t = y t, p(n) 1,# y t,p(n)+1,#. Esitetään nyt em. kolme päätapausta kaavoina N t,j, N t,j ja N t,j. Nauhapää muualla: Tämä on helpoin tapaus. Kaava N t,j sanoo, että X t 1,j 1 ja X t 1,j+1 ovat nauhasymboleja, ja X t 1,j ja X t,j ovat sama nauhasymboli: ( ) ( ) ( ) N t,j = y t 1,j 1,z y t 1,j+1,z (y t 1,j,z y t,j,z ) z Γ z Γ z Γ 222

223 Nauhapää siirtyy oikealle: Kaava N t,j sanoo, että hetkellä t nauhapään sijainti nauhalla on j + 1. Lisäksi, kun q = X t 1,j on koneen tila ja B = X t 1,j+1 nauhapään alla oleva merkki, on valittu jokin sallittu siirtymä (q, C, R) δ(q, B). Merkki A nauhapään vasemmalla puolella pysyy ennallaan: ( N t,j = yt 1,j 1,A y t,j 1,A y t 1,j,q y t 1,j+1,B q Q A,B Γ (y t,j,c y t,j+1,q ) (q,c,r) δ(q,b) Nauhapää siirtyy vasemmalle: Kaava N t,j muodostetaan kuten N t,j. Kaava H t,j sanoo, että lähettyvillä oleva nauhapää määrää symbolin X t,j : H t,j = N t,j 1 N t,j 1 N t,j N t,j N t,j+1 N t,j

224 Laskennan oikean etenemisen esittää nyt kaava N = ˆN t (N t,j H t,j ). t=1,...,p(n) j= p(n),...,p(n) Koska kukin N t,j jne. on jotain (koneesta M riippuvaa) vakiokokoa, kaavan N koko on O(p(n) 2 ). Edellä esitetystä seuraa, että konstruoitu kaava f M (w) = S N F U toteutuu joillain muuttujien y t,j,z arvoilla jos ja vain jos koneella M on syötteellä w hyväksyvä laskenta jonka pituus on kork. p( w ). Lisäksi f M voidaan selvästi laskea polynomisessa ajassa. (Huomaa, että M on kiinteä; laskettaessa f M (w) ainoat syötteestä w riippuvat asiat ovat kaava A eli alkutilanne ja p(n) eli kaavojen pituus.) Siis f M : A p m SAT 224

225 SAT-ongelman rajoitetut muodot tähän mennessä: todistettu että SAT on NP-täydellinen tavoite: todistetaan A on NP-täydellinen, kun A = IS, VC, HC, TSP,... tekniikka: osoitetaan SAT p m A tekninen ongelma: hankalaa käsitellä mielivaltaisia propositiologiikan kaavoja ratkaisu: määritellään luokka syntaktisesti yksinkertaisia kaavoja, jotka kuitenkin ovat riittävän vaikeita että SAT on NP-täydellinen myös näihin yksinkertaisiin kaavoihin rajoitettuna tarkemmin: määritellään SAT-ongelman erikoistapaus CSAT, ja edelleen tämän erikoistapaus 3SAT, joille SAT p m CSAT p m 3SAT p m SAT ja siis SAT p m A jos ja vain jos 3SAT p m A 225

226 Propositiologiikan kaavojen luokittelua (Jatkossa kaava tarkoittaa propositiologiikan kaavaa.) literaali on muuttuja tai muuttujan negaatio; esim. x 7 tai x 3 klausuuli (engl. clause) on literaalien disjunktio; esim. x 3 x 2 x 4 tai x 1 kaava on konjunktiivisessa normaalimuodossa (conjunctive normal form, CNF) jos se on klausuulien konjunktio; esim. (x 3 x 2 x 4 ) (x 7 x 3 ) x 1 CNF-kaava on k-konjunktiivisessa normaalimuodossa (k-cnf) jos jokaisessa klausuulissa on tasan k literaalia; esim. (x 3 x 2 ) (x 7 x 3 ) (x 1 x 4 ) on 2-CNF-kaava Määritellään nyt SAT-ongelman erikoistapaukset CSAT ja ksat, k = 1, 2, 3,...: CSAT = { φ φ on toteutuva CNF-kaava } ksat = { φ φ on toteutuva k-cnf-kaava } 226

227 Kuten pian nähdään, jokaiselle kaavalle φ(x 1,..., x n ) on olemassa CNF-kaava ψ(x 1,..., x n ) jolle φ(v 1,..., v n ) = ψ(v 1,..., v n ) kaikilla (v 1,..., v n ) { 0, 1 } n. Todetaan ensin että mikä tahansa kaava voidaan muuntaa muotoon, jossa negaatiot kohdistuvat suoraan muuttujiin, ts. ei esiinny muotoa (A B) tai (A B) olevia osakaavoja. Tämä perustuu de Morganin lakeihin ja kaksinkertaisen negaation lakiin (A B) (A) (B) (A B) (A) (B) A A. 227

228 Esimerkki 3.10: negaatioiden painaminen literaaleihin Lähtökohtana kaava Saadaan (x 2 ( (x 1 x 3 ) (x 3 x 4 ))). (x 2 ( (x 1 x 3 ) (x 3 x 4 ))) x 2 ( (x 1 x 3 ) (x 3 x 4 )) x 2 ( (x 1 x 3 ) (x 3 x 4 )) x 2 ((x 1 x 3 ) ( x 3 x 4 )). 228

229 Jotta saataisiin CNF-kaavoja pitää lisäksi painaa disjunktiot konjunktioiden sisäpuolelle Tämä on periaatteessa mahdollista osittelulakien avulla: A (B C) (A B) (A C) A (B C) (A B) (A C) Ongelma: kaavan koko voi kasvaa eksponentiaalisesti; esim. kaavan (x 1 x 2 ) (x 3 x 4 ) (x 5 x 6 ) CNF-esitys on (x 1 x 3 x 5 ) (x 1 x 3 x 6 ) (x 1 x 4 x 5 ) (x 1 x 4 x 6 ) (x 2 x 3 x 5 ) (x 2 x 3 x 6 ) (x 2 x 4 x 5 ) (x 2 x 4 x 6 ). Ratkaisu: muodostetaan ei-cnf-kaavasta φ(x 1,..., x n ) CNF-kaava ψ(x 1,..., x n, y 1,..., y m ) missä y 1,..., y m ovat uusia muuttujia ja φ(v 1,..., v n ) = 1 jos ja vain jos ψ(v 1,..., v n, v 1,..., v m ) = 1 jollain (v 1,..., v m ) { 0, 1 }m 229

230 Seuraava rekursiivinen funktio CNF(φ) palauttaa CNF-kaavan ψ joka on toteutuva joss φ on, olettaen että kaavassa φ negaatiot kohdistuvat suoraan muuttujiin. CNF(φ): kolme tapausta kaavan φ muodon mukaan. 1. φ on literaali: palauta φ sellaisenaan. 2. φ = φ 1 φ 2 : laske ψ 1 = CNF(φ 1 ) ja ψ 2 = CNF(φ 2 ); palauta ψ = ψ 1 ψ φ = φ 1 φ 2 : laske ψ 1 = CNF(φ 1 ) ja ψ 2 = CNF(φ 2 ); olkoon ψ 1 = g 1 g 2... g p ψ 2 = h 1 h 2... h q missä g i ja h j ovat klausuuleja. Ota käyttöön uusi muuttujasymboli y ja palauta kaava (y g 1 )... (y g p ) ( y h 1 )... ( y h q ). 230

231 Esimerkki 3.11: Lasketaan CNF(φ) kun φ(x 1, x 2, x 3, x 4, x 5, x 6 ) = ((x 1 x 2 ) (x 3 x 4 )) (x 5 x 6 ). Yksinkertaisyyden vuoksi tehdään laskenta alhaalta ylöspäin. Selvästi CNF(x 1 x 2 ) = x 1 x 2 ja CNF(x 3 x 4 ) = x 3 x 4. Siis CNF((x 1 x 2 ) (x 3 x 4 )) = (y x 1 ) (y x 2 ) ( y x 3 ) ( y x 4 ) missä y on uusi muuttuja. Edelleen CNF(x 5 x 6 ) = x 5 x 6 joten ottamalla käyttöön taas uusi muuttuja z saadaan CNF(φ) = ψ missä ψ(x 1, x 2, x 3, x 4, x 5, x 6, y, z) = (z y x 1 ) (z y x 2 ) (z y x 3 ) (z y x 4 ) ( z x 5 ) ( z x 6 ). Nyt esim. φ(0, 0, 1, 1, 0, 0) = 1, mitä vastaten ψ(0, 0, 1, 1, 0, 0, y, z) = 1 kun valitaan y = 1 ja z =

232 Lause 3.12: Olkoon φ(x 1,..., x n ) kaava jossa negaatiot kohdistuvat suoraan muuttujiin, ja CNF(φ(x 1,..., x n )) = ψ(x 1,..., x n, y 1,..., y m ). Nyt ψ on CNF-kaava, ja φ(v 1,..., v n ) = 1 jos ja vain jos ψ(x 1,..., x n, v 1,..., v m ) = 1 joillain v i. Todistus: Induktio kaavan φ sisältämien disjunktioiden ja konjunktioiden lukumäärän suhteen. Perustapaus: ei konjunktioita eikä disjunktioita. Siis φ on literaali x i tai x j jotka sellaisenaan ovat CNF-kaavoja. Väite selvästi pätee. Induktioaskel: Oletetaan, että väite pätee kun konjunktioita ja disjunktioita on kork. n; olkoon niitä nyt n + 1. On ilmeistä että palautettavat kaavat ovat CNF-kaavoja; mielenkiintoinen puoli on niiden toteutuvuus. Kaksi tapausta: tapaus 1 triviaali (kun ymmärtää merkinnät), tapaus 2 konstruktion ydinkohta. 232

233 Tapaus 1: φ(x 1,..., x n ) = φ 1 (x 1,..., x n ) φ 2 (x 1,..., x n ). Merk. CNF(φ 1 (x 1,..., x n )) = ψ 1 (x 1,..., x n, y 1,..., y r ) ja CNF(φ 2 (x 1,..., x n )) = ψ 2 (x 1,..., x n, y 1,..., y s ). Siis CNF(φ) = ψ missä ψ(x 1,..., x n, y 1,..., y r, y 1,..., y s ) = ψ 1 (x 1,..., x n, y 1,..., y r ) ψ 2(x 1,..., x n, y 1,..., y s ). Konstruktiosta seuraa että muuttujajoukot { y 1,..., y r erilliset, joten } ja { y 1,..., y s } ovat φ(v 1,..., v n ) = 1 φ 1 (v 1,..., v n ) = 1 ja φ 2 (v 1,..., v n ) = 1 ψ 1 (v 1,..., v n, y 1,..., y r ) = 1 joillain y i ja ψ 2 (v 1,..., v n, y 1,..., y r ) = 1 joillain y i (ind.ol.) ψ(v 1,..., v n, y 1,..., y r, y 1,..., y s ) = 1 joillain y i, y i (koska muuttujajoukot erilliset). 233

234 Tapaus 2: φ = φ 1 φ 2 (jätetään nyt selvyyden vuoksi muuttujat merkitsemättä; ne voidaan käsitellä kuten tapauksessa 1). Merk. Siis CNF(φ) = ψ missä CNF(φ 1 ) = g 1 g 2... g p CNF(φ 2 ) = h 1 h 2... h q ψ(y) = (y g 1 )... (y g p ) ( y h 1 )... ( y h q ). Jos φ = 1 niin φ 1 = 1 tai φ 2 = 1. Jos φ 1 = 1, niin g i = 1 kaikilla i, joten ψ(0) = 1. Vastaavasti jos φ 2 = 1, niin ψ(1) = 1. Kummassakin tapauksessa ψ(y) on siis toteutuva. Kääntäen jos ψ(y) on toteutuva, niin ψ(0) = 1 tai ψ(1) = 1. Jos ψ(0) = 1, niin g i = 1 kaikilla i, joten φ 1 = 1. Jos ψ(1) = 1, niin h i = 1 kaikilla i, joten φ 2 = 1. Siis kummassakin tapauksessa φ =

235 Olkoon f seuraava funktio, joka saa argumenttina mielivaltaisen kaavan φ ja palauttaa CNF-kaavan ψ: 1. Muunna de Morganin ja kaksinkertaisen negaation lakeja käyttäen φ yhtäpitäväksi kaavaksi φ jossa negaatiot kohdistuvat suoraan muuttujiin. 2. Palauta ψ = CNF( φ). Vaihe 1 toimii selvästi polynomisessa ajassa. Myös CNF( φ) voidaan laskea polynomisessa ajassa (ks. alla) joten f voidaan laskea polynomisessa ajassa. Olemme myös nähneet että φ on toteutuva jos ja vain jos ψ on, eli φ SAT joss f(φ) CSAT. Siis SAT p m CSAT. Koska SAT on NP-täydellinen ja CSAT NP, seuraa erityisesti Korollaari 3.13: [HMU Thm 10.13] CSAT on NP-täydellinen. 235

236 Funktion CNF aikavaativuusanalyysi Olkoon T (n) kutsun CNF( φ) aikavaativuus kun kaavassa φ on n konjunktioja disjunktiosymbolia. Huomaa että kaavan kokonaispituus on O(n). Selvästi Tapauksessa n 1 voidaan kirjoittaa T (0) a jollain vakiolla a. T (n) T (i) + T (n i 1) + bn missä T (i) ja T (n i 1) ovat rekursiivisten kutsujen CNF( φ 1 ) ja CNF( φ 2 ) suoritusajat ja bn kaikkeen muuhun kuluva aika (b vakio). (Huomaa että yhtä lukuunottamatta kaikki kaavan φ symbolit menevät joko kaavoihin φ 1 ja φ 2.) 236

237 Väite: T (n) (a + b)n 2 + a. Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m. Huomaa että funktion x x 2 + (m 1 x) 2 kuvaaja on ylöspäin aukeava paraabeli, joten funktio saavuttaa suurimman arvonsa välin päätepisteessä. Siis kun m 1. T (m) max (T (i) + T (m i 1)) + bm 0 i m 1 ind.ol. (a + b) max 0 i m 1 (i2 + (m i 1) 2 ) + 2a + bm = (a + b)(m 1) 2 + 2a + bm = (a + b)m 2 + m(b 2(a + b)) + 3a + b (a + b)m 2 + a 237

238 3SAT-ongelman NP-täydellisyys [HMU ] erotukseksi yleisestä CNF-esityksestä, kaikilla kaavoilla ei ole 3-CNF-esitystä; esim. x 1 x 2 x 3 x 4 esitämme muunnoksen, jolla polynomisessa ajassa mielivaltaisesta CNF-kaavasta φ tuotetaan 3-CNF-kaava ψ joka on toteutuva joss φ on Tämän muunnoksen olemassaolosta seuraa siis Lause 3.14: CSAT p m 3SAT. Koska CSAT on NP-täydellinen ja 3SAT NP, saadaan Korollaari 3.15: [HMU Thm 10.15] 3SAT on NP-täydellinen. Huom. SAT-ongelma rajoitettuna 2-CNF-kaavoihin ratkeaa polynomisessa ajassa. 238

239 Todistus sille että CSAT p m 3SAT Olkoon F (x 1,..., x n ) klausuuli (siis literaalien disjunktio). Muodostamme 3-CNF-kaavan F (x 1,..., x n, y 1,..., y m ) missä y i :t ovat uusia muuttujia ja F (v 1,..., v n ) = 1 jos ja vain jos F (v 1,..., v n, v 1,..., v m ) = 1 joillain (v 1,..., v m ) { 0, 1 }m. Tästä seuraa yleisemmin, että kun φ on CNF-kaava φ = niin voidaan muodostaa 3-CNF-kaavojen konjunktio, eli edelleen 3-CNF-kaava, k ψ = F j missä φ(v 1,..., v n ) = 1 joss ψ(v 1,..., v n, v 1,..., v l ) = 1 jollain (v 1,..., v l ) { 0, 1 }l, joten erityisesti φ on toteutuva joss ψ on toteutuva. Huom. eri kaavoihin F j lisättävien muuttujien pitää olla erillisiä. k j=1 j=1 F j 239

240 Olkoon F klausuuli. Neljä tapausta sen mukaan, kuinka monta literaalia z i klausuuli F sisältää: 1. F = z 1 missä z 1 = x i tai z 1 = x i jollain i. Uudet muuttujat u ja v; F = (z u v) (z u v) (z u v) (z u v). Koska uudet muuttujat u ja v on otettu kaikilla merkkikombinaatioilla, ainoa tapa saada F = 1 on valita z 1 = 1 jolloin F = F = z 1 z 2. Uusi muuttuja w; F = (z 1 z 2 w) (z 1 z 2 w). Kuten edellisessä kohdassa F voidaan toteuttaa vain tekemällä F todeksi. 3. F = z 1 z 2 z 3 : valmiiksi 3-CNF; F = F. 240

241 4. F = z 1 z 2... z m missä m 4. Uudet muuttujat y 1,..., y m 3 ; F = (z 1 z 2 y 1 ) (z 3 y 1 y 2 ) (z 4 y 2 y 3 )... (z m 2 y m 4 y m 3 ) (z m 1 z m y m 3 ). Jos F = 1, niin z i = 1 jollain 1, joten F = 1 kun valitaan y j = 1 kun j < i 1 ja y j = 0 muuten. Jos F = 0 ja siis z i = 0 kaikilla i, niin F = 0 miten tahansa y j :t valitaankin. Jos nimittäin yritetään saada F = 1, pitää 1. klausuulin ja ehdon z 1 = z 2 = 0 takia valita y 1 = 1. Kun y 1 = 1 ja z 3 = 0, toisen klausuulin takia pitää ottaa y 2 = 1. Näin päädytään lopulta valitsemaan y m 3 = 1, mutta tällöin viimeinen klausuuli jää toteutumatta. Siis φ CSAT jos ja vain jos ψ 3SAT. Selvästi muunnos φ ψ voidaan laskea polynomisessa ajassa. 241

242 NP-täydellisyys tähän mennessä: jos jollakin NP-täydellisellä ongelmalla on polynominen ratkaisualgoritmi, niin P = NP tätä ei pidetä luultavana, koska se tarkoittaisi että eksponentiaalisen suuria hakuavaruuksia voitaisiin etsiä polynomisessa ajassa suoraan määritelmästä todistettiin, että SAT on NP-täydellinen suoraviivaisilla palautuksilla osoitettiin, että jo SAT-ongelman rajoitetut erikoistapaukset CSAT ja 3SAT ovat NP-täydellisiä Jatko: [HMU 10.4] osoitetaan 3SAT p m IS ja 3SAT p m HC siis IS ja HC NP-täydellisiä aiemmin osoitettu IS p m VC ja HC p m TSP joten myös VC ja TSP NP-täydellisiä 242

243 Lause 3.16: [HMU Thm 10.18] Riippumaton joukko -ongelma on NP-täydellinen Todistus: Tarkastellaan siis joukkoa IS = { G, k G sisältää k-solmuisen riippumattoman joukon }. Harjoitustehtävänä osoitetaan IS NP. Muodostetaan palautus f: 3SAT p m IS. Koska 3SAT on NP-täydellinen, väite seuraa. Siis muodostetaan f(φ) = G, k, missä G, k IS jos ja vain jos φ on toteutuva 3-CNF-kaava. Erityisesti jos x ylipäänsä ei ole 3-CNF-kaava, pitää olla f(x) IS. Tällaisissa tapauksissa valitaan esim. f(x) = (V, E), n + 1 missä V = n. Keskitytään jatkossa tapaukseen jossa x todella on 3-CNF-kaava. 243

244 Olkoon siis φ 3-CNF-kaava, jossa m klausuulia: φ = m i=1 (z i,1 z i,2 z i,3 ) missä kukin z i,r on muotoa x j tai x j. Nyt f(φ) = (V, E), k missä k = m V = 3m ja V = { v i,r i { 1,..., m }, r { 1, 2, 3 } } (v i,r, v i,s ) E kaikilla i { 1,..., m }, r, s { 1, 2, 3 }, r s kun i j, niin (v i,r, v j,s ) E jos z i,r = z j,s tai z i,r = z j,s Selvästi f laskettavissa polynomisessa ajassa. 244

245 Esimerkki 3.17: Muodostetaan G, k = f(φ) kun φ = (x 1 x 3 x 4 ) ( x 2 x 4 x 5 ) ( x 1 x 5 x 6 ) (x 1 x 6 x 5 ). Rengastetuista solmuista muodostuu kokoa m = 4 oleva riippumaton joukko. Tämä vastaa kaavan toteuttavia arvoja x 1 = 1, x 5 = 0, x 6 = 0, muut muuttujat mielivaltaisia x 1 x 2 x 1 x 1 x 3 x 4 x 5 x 6 x 4 x 5 x 6 x 5 245

246 Nähdään että φ toteutuva verkossa G on m solmun riippumaton joukko U: : Ol. φ toteutuva. Valitaan muuttujien x i arvot siten, että jokaisessa kaavan φ klausuulissa i ainakin yksi literaali z i,r saa arvon 1. Valitaan joukkoon U vastaavat v i,r. Nyt U sisältää tasan yhden solmun jokaisesta kolmiosta. Lisäksi valitut solmut vastaavat tosia literaaleja, joten minkään kahden eri kolmiosta valitun solmun välillä ei ole kaarta. Siis U on riippumaton ja U = m. : Ol. m solmun joukko U riippumaton. Nyt U sisältää tasan yhden solmun joka kolmiosta. Koska minkään eri kolmioista valittujen solmujen välillä ei ole kaarta, voidaan ilman ristiriitaa asettaa todeksi valittuja solmuja vastaavat literaalit. Jokaiseen klausuuliin tulee ainakin yksi tosi literaali; φ toteutuva. 246

247 Tarkastellaan seuraavaksi suunnattu Hamiltonin kehä -ongelmaa (Directed Hamiltonian Circuit, DHC): Annettu: suunnattu verkko G Kysymys: onko verkossa G suunnattu polku joka käy jokaisessa solmussa tasan kerran ja palaa lähtösolmuunsa Siis eroksi alkuperäiseen Hamiltonin kehä -ongelmaan (HC) verkon kaarilla on suunta, ja kehän pitää näitä suuntia noudattaa. Lause 3.18: [HMU Thm 10.21] DHC on NP-täydellinen. Koska HC NP ja harjoitustehtävänä osoitetaan DHC p m HC, pätee Korollaari 3.19: [HMU Thm 10.23] HC on NP-täydellinen. 247

248 Todistus: Kuten suuntaamattomassa tapauksessa nähdään helposti että DHC NP. Muodostetaan palautus f: 3SAT p m DHC, mistä väite nyt seuraa. Olkoon annettu n-muutujainen 3-CNF-kaava φ jossa m klausuulia m φ = (z j,1 z j,2 z j,3 ). j=1 Suunnattu verkko f(φ) = G = (V, E) muodostuu kahdenlaisista osaverkoista eli laitteista (gadget): jokaista muuttujaa x i kohti laite A i, i = 1,..., n laite A i voidaan käydä läpi kahdella eri tavalla jotka koodaavat valintaa x i = 0 tai x i = 1 jokaista klausuulia β j = z j,1 z j,2 z j,3 kohti laite B j, j = 1,..., m laitteen B j läpikäynti voidaan lomittaa laitteen A i läpikäyntiin joss muuttuja x i tekee todeksi klausuulin β j 248

249 Laite A i : laitteessa on 2m + 4 solmua a i, d i sekä b i,j ja c i,j, j = 0,..., m. Laitteen sisäiset kaaret: solmusta a i kaari solmuihin b i,0 ja c i,0 solmuista b i,m ja c i,m kaari solmuun d i solmusta b i,j kaari solmuun c i,j ja solmusta c i,j kaari solmuun b i,j, j = 0,..., m solmusta b i,j 1 kaari solmuun c i,j ja solmusta c i,j 1 kaari solmuun b i,j, j = 1,..., m Havaitaan että laitteen A i solmut voidaan käydä läpi kahdessa järjestyksessä: järjestys a i c i,0 b i,0 c i,1 b i,1... c i,m b i,m d i vastaa valintaa x i = 0 järjestys a i b i,0 c i,0 b i,1 c i,1... b i,m c i,m d i vastaa valintaa x i = 1 Eri laitteita yhdistävät kaaret esitellään pian. 249

250 b i,0... b i,1 b i,2 b i,m A i 1 a i d i A i+1 c i,0 c i,1 c i,2... c i,m A i Laite A i. Kuvasta puuttuu kaaret laitteisiin B j. 250

251 Laite B j : laitteessa 6 solmua r j,1, r j,2, r j,3, s j,1, s j,2, s j,3. Laitteen sisäiset kaaret: solmut r j,k sisältävä sykli: kaaret (r j,1, r j,2 ), (r j,2, r j,3 ) ja (r j,3, r j,1 ) solmut s j,k sisältävä sykli: kaaret (s j,1, s j,3 ), (s j,3, s j,2 ) ja (s j,2, s j,1 ) (huom. suunta) syklejä kytkevät kaaret (r j,1, s j,1 ), (r j,2, s j,2 ) ja (r j,3, s j,3 ) Havaitaan että jos Hamiltonin kehä tulee laitteeseen B j solmun r j,k kautta niin sen pitää vastaavasti poistua solmun s j,k kautta. (Kehä voi vierailla laitteessa B j useita kertoja, mutta jokaisen vierailun on noudatettava tätä sääntöä.) Muuten osa solmuista jäisi eristyksiin eikä enää pääsisi mukaan kehään. 251

252 A i r j,3 s j,3 A i r j,2 s j,2 A i r j,1 s j,1 Laite B j. Tässä literaalin β j muuttujat ovat x i, x i ja x i. 252

253 Laitteet A i yhdistetään yhdeksi isoksi sykliksi: solmusta d i kaari solmuun a i+1, i = 1,..., n 1 solmusta d n kaari solmuun a 1 Laite A i yhdistetään niihin laitteisiin B j joilla klausuuli β j sisältää literaalin x i tai x i : jos z j,k = x i niin lisätään kaaret (c i,j 1, r j,k ) ja (s j,k, b i,j ) jos z j,k = x i niin lisätään kaaret (b i,j 1, r j,k ) ja (s j,k, c i,j ) Havainto: Jos klausuuli β j sisältää literaalin x i (vast. x i ) ja laitteen A i läpikäyntijärjestys vastaa valintaa x i = 1 (vast. x i = 0) niin laitteen B j läpikäynti voidaan sijoittaa laitteen A i läpikäynnin lomaan. 253

254 Verkkoon G = f(φ) ei tule muita kaaria kuin edellä luetellut. Selvästi f voidaan laskea polynomisessa ajassa. Seuraavasta väitteestä seuraa että f: 3SAT p m DHC. Väite: φ on toteutuva verkossa G on Hamiltonin kehä : Olkoon φ = 1 kun (x 1,..., x n ) = (v i,..., v n ) { 0, 1 } n. Siis jokaisella klausuulilla β j = z j,1 z j,2 z j,3 ainakin yksi literaali z j,k on tosi kun (x 1,..., x n ) = (v i,..., v n ). Valitaan jokin indeksi k(j) { 1, 2, 3 } s.e. jollain i joko z j,k(j) = x i ja v i = 1, tai z j,k(j) = x i ja v i = 0, Siis klausuulin numero j toteutuminen on siinä olevan literaalin numero k(j) vastuulla. 254

255 Verkkoon G voidaan muodostaa Hamiltonin kehä seuraavasti: 1. käy laite A i läpi järjestyksessä a i c i,0 b i,0... c i,m b i,m d i jos v i = 0 a i b i,0 c i,0... b i,m c i,m d i jos v i = 1 2. yhdistä laitteiden A i läpikäynnit järjestyksessä A 1 A 2... A n A 1 3. kaikilla j = 1,..., m: jos z j,k(j) = x i (jolloin v i = 0), korvaa laitteen A i läpikäynnin kaari (b i,j 1, c i,j ) polulla (b i,j 1, r j,k(j),..., s j,k(j), c i,j ) missä r j,k(j),..., s j,k(j) on laitteen B j läpikäynti jos z j,k(j) = x i (jolloin v i = 1), korvaa laitteen A i läpikäynnin kaari (c i,j 1, b i,j ) polulla (c i,j 1, r j,k(j),..., s j,k(j), b i,j ) missä r j,k(j),..., s j,k(j) on laitteen B j läpikäynti 255

256 : Olkoon verkossa G Hamiltonin kehä. Jos kehä sisältää kaaren (a i, b i,0 ) valitaan v i = 1. Jos kehä sisältää kaaren (a i, c i,0 ) valitaan v i = 0. Selvästi tasan yksi näistä pätee. Väitetään että φ = 1 jos x i = v i kaikilla i. Jos kehä tulee laitteeseen B j solmun r j,k kautta, se poistuu solmun s j,k kautta; muuten osa laitteen solmuista leikkautuisi pois kehältä. Siis laitteen B j kautta voidaan siirtyä solmusta c i,j 1 solmuun b i,j jos β j sisältää literaalin x i ja solmusta b i,j 1 solmuun c i,j jos β j sisältää literaalin x i. 256

257 Siis jos v i = 1, laite A i käydään läpi järjestyksessä a i b i,0 c i,0 b i,1 c i,1... b i,m c i,m d i missä c i,j 1 b i,j tarkoittaa siirtymistä solmusta c i,j 1 solmuun b i,j joko suoraan tai laitteen B j kautta. Jos v i = 0, saadaan vastaavasti a i c i,0 b i,0 c i,1 b i,1... c i,m b i,m d i. Jos laitteessa B j käydään laitteen A i läpikäynnin välissä ja v i = 1, niin laitteeseen B j mennään kaarta (c i,j 1, r j,k ) jolloin z j,k = x i. Vastaavasti jos v i = 0 niin z j,k = x i. Siis z j,k = 1 kun valitaan x i = v i. Jokaisessa laitteessa B j käydään ainakin kerran, joten jokaisessa klausuulissa β j on ainakin yksi literaali z j,k joka saa arvon 1 kun x i = v i kaikilla i. 257

258 TSP HC DHC VC IS Yhteenveto todistetuista polynomisista palautuksista 3SAT CSAT SAT NP-täyd. Nuoli A B tarkoittaa A p m B Huom. kaikki NP-ongelmat on palautettu ongelmaan SAT (Lause 3.7). NP 258

259 Muita vaativuusluokkia ( ) Käydään lyhyesti läpi tärkeimpiä vaativuusluokkiin liittyviä tuloksia. Monet tunnetuista tuloksista ovat vaikeita todistaa, ja monet kysymykset ovat vielä auki. Lause 3.20 [Ladner 1975]: Jos P NP niin luokassa NP P on muitakin kuin NP-täydellisiä kieliä. Siis ei ole mahdollista, että luokka NP jakaantuisi toisaalta polynomisesti ratkeaviin ja toisaalta NP-täydellisiin ongelmiin: joko nämä ongelmaluokat yhtyvät tai niiden välissäkin on jotain. Eräs ehdokas välissä olevaksi ongelmaksi on verkkoisomorfia: Annettu: verkot G 1 = (V 1, E 1 ) ja G 2 = (V 2, E 2 ) Kysymys: onko olemassa bijektio f: V 1 V 2 jolla (u, v) E 1 joss ((f(u), f(v)) E 2 259

260 Luokan NP ongelmien komplementit [HMU 11.1] muodostavat luokan co-np = { A A NP }. Luokalla co-np on omat täydelliset ongelmansa. Lause 3.21: A on co-np-täydellinen jos ja vain jos A on NP-täydellinen. Todistus: Jos f on palautus B p m A, se on samalla palautus B p m A. Jos P = NP niin tietysti myös P = co-np. Joka tapauksessa selvästi P NP co-np. Nykytietämyksen mukaan seuraavat vaihtoehdot ovat kaikki mahdollisia: P = NP = co-np P NP mutta NP = co-np P = NP co-np mutta P NP ja P co-np P NP co-np ja NP co-np Näistä viimeistä pidetään ehkä luultavimpana. 260

261 Toisistaan poikkeavia aika- ja tilavaativuusluokkia on ääretön määrä. Määritelmä Funktio t on aikakonstruoituva, jos syötteellä 1 n luvun t(n) binääriesitys voidaan laskea ajassa O(t(n)). Kaikki järkevät vähintään n log n olevat funktiot ovat aikakonstruoituvia, esim. n log n, n 3/2, n 5, 2 n. Lause 3.22: Jos t on aikakonstruoituva, niin on olemassa ongelma A joka voidaan ratkaista ajassa O(t(n)) mutta ei ajassa O(t(n) 1 ɛ ) millään ɛ > 0.. Määritelmä Funktio s on tilakonstruoituva, jos syötteellä 1 n luvun s(n) binääriesitys voidaan laskea tilassa O(s(n)). Kaikki järkevät vähintään log n olevat funktiot ovat tilakonstruoituvia, esim. log n, n 3/2, n 5, 2 n. Lause 3.23: Jos s on tilakonstruoituva, niin on olemassa ongelma A joka voidaan ratkaista tilassa O(s(n)) mutta ei tilassa O(s(n) 1 ɛ ) millään ɛ >

262 Koska P = NP? ja NP = co-np? ovat klassisia avoimia ongelmia, on hieman yllättävää että vastaavat tilavaativuusluokkia koskevat kysymykset helppoja : Lause 3.24 [Savitch 1970]: Olkoon s(n) n kaikilla n. Kaikki ongelmat, jotka voidaan ratkaista epädeterministisesti tilassa s(n), voidaan ratkaista deterministisesti tilassa O(s(n) 2 ). Korollaari 3.25: PSPACE = NPSPACE = co-npspace Tässä on siis merkitty co-c = { A A C } kuten aiemminkin. Komplementoinnin suhteen on saatu vielä tarkempikin tulos: Lause 3.26 [Immerman 1988, Szelepcsényi 1987]: Olkoon s(n) log n kaikilla n. Jos ongelma A voidaan tunnistaa epädeterministisesti tilassa s(n), niin A voidaan tunnistaa epädeterministisesti tilassa O(s(n)). (Tulos on mielekäs myös tapauksessa s(n) < n, kun tarkastellaan työtilaa eli syötteen säilyttämisestä ei makseta.) 262

263 Seuraava lause suhteuttaa karkeasti deterministiset aika- ja tilavaativuusluokat. Lause 3.27: Jos ongelman aikavaativuus on T (n), niin sen tilavaativuus on O(T (n)). Jos ongelman tilavaativuus on S(n), niin sen aikavaativuus on O(2 cs(n) ) jollain c > 0. Todistushahmotelma: Ajassa T (n) ei ehdi kuluttaa yli T (n) paikkaa muistia. Jos koneen M tilavaativuus on S(n) ja laskenta on kestänyt yli Q Γ S(n) askelta, jokin tilanne on toistunut, joten kone on ikuisessa silmukassa. Määritellään vielä eksponentiaalinen tilavaativuusluokka ESPACE = { L(M) M deterministinen, space M (n) = O(2 nk ) jollain k }. Korollaari 3.28: P NP PSPACE E ESPACE. Ylläolevien sisältyvyyksien aitoudesta ei tiedetä kuin seuraava Lause 3.29: P E ja PSPACE ESPACE 263

264 Yhteenveto Laskennan mallit Turingin kone on universaali laskennan malli: sen on tarkoitus kuvata kaikkia periaatteessa mahdollisia mekaanisia laskentoja alkuperäinen motivaatio logiikasta, ei tietokoneista laskettavuus Turingin koneella ei riipu mallin yksityiskohdista (erityisesti deterministisyydestä) vastaavia malleja on muitakin: rekursiiviset funktiot, yleiset kieliopit, Random Access Machine; ohjelmointikielet kaikki nämä määrittelevät saman käsitteen laskettavuus Churchin-Turingin teesi: Turingin koneet ovat oikea malli mekaaniselle laskennalle 264

265 Laskettavuusteoria peruskysymys: mitä voidaan laskea äärellisessä ajassa rekursiivisuus (ratkeavuus) ja rekursiivinen lueteltavuus (osittainratkeavuus) tärkeä tekninen yksityiskohta: Turingin koneen esitys merkkijonona, universaali Turingin kone universaalikieli L u : rekursiivisesti lueteltava, ei rekursiivinen muita ei-ratkeavia ongelmia: pysähtymisongelma, epätyhjyysongelma, tyhjyysongelma; Postin vastaavuusongelma Ricen lause: semanttiset ominaisuudet ratkeamattomia 265

266 rekursiivinen palautus A m B: ongelma A ainakin yhtä ratkeava kuin B tärkeä tekniikka: A todistetaan ratkeamattomaksi osoittamalla B m A missä B on jokin tunnettu ratkeamaton ongelma ongelma A on RE-täydellinen jos A on rekursiivisesti lueteltava ja B m A kaikilla rekursiivisesti lueteltavilla B RE-täydelliset ongelmat ovat maksimaalisen vaikeita osittain ratkeavia ongelmia esim. universaalikieli, pysähtymisongelma, epätyhjyysongelma 266

267 Vaativuusteoria peruskysymys: mitä voidaan laskea polynomisessa ajassa kertaluokat, aika- ja tilavaativuudet; vaativuusluokat, erityisesti P epädeterministiset vaativuusluokat, erityisesti NP avoin ongelma: onko P = NP, ts. vaikuttaako epädeterminismi siihen mikä on laskettavissa polynomisessa ajassa yleinen uskomus: P NP 267

268 polynominen palautus A p m B: ongelma A ainakin yhtä helppo kuin ongelma B A on NP-täydellinen jos A NP ja B p m A kaikilla B NP jos A on NP-täydellinen ja A ratkeaa deterministisesti polynomisessa ajassa, niin P = NP jos A on NP-täydellinen, on siis aihetta uskoa että A ei ratkea deterministisesti polynomisessa ajassa tärkeitä NP-täydellisiä ongelmia: SAT, 3SAT, HC, TSP, VC, IS,... ongelman A osoittaminen NP-täydelliseksi: 1. osoita A NP (yleensä helppoa) 2. osoita B p m A jollain NP-täydelliseksi tunnetulla B 268

Turingin koneen laajennuksia

Turingin koneen laajennuksia Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k

Lisätiedot

Laskennan teoria

Laskennan teoria 581336-0 Laskennan teoria luennot syyslukukaudella 2003 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa esitiedot käytännössä

Lisätiedot

Laskennan teoria

Laskennan teoria 581336-0 Laskennan teoria luennot syyslukukaudella 2004 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa

Lisätiedot

1. Universaaleja laskennan malleja

1. Universaaleja laskennan malleja 1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä

Lisätiedot

2. Laskettavuusteoriaa

2. Laskettavuusteoriaa 2. Laskettavuusteoriaa Käymme läpi ratkeamattomuuteen liittyviä ja perustuloksia ja -tekniikoita [HMU luku 9]. Tämän luvun jälkeen opiskelija tuntee joukon keskeisiä ratkeamattomuustuloksia osaa esittää

Lisätiedot

Laskennan teoria

Laskennan teoria 581336-0 Laskennan teoria luennot syyslukukaudella 2003 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa esitiedot käytännössä

Lisätiedot

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

M = (Q, Σ, Γ, δ, q 0, q acc, q rej ) 6. LASKETTAVUUSTEORIAA Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea.

Lisätiedot

Rekursiiviset palautukset [HMU 9.3.1]

Rekursiiviset palautukset [HMU 9.3.1] Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle

Lisätiedot

Laskennan teoria

Laskennan teoria 581336-0 Laskennan teoria luennot kevatlukukaudella 2006 Jyrki Kivinen tietojenkasittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkasittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa

Lisätiedot

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

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen. Lause: Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia,

Lisätiedot

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

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w} 6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = {c w pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti

Lisätiedot

5.3 Ratkeavia ongelmia

5.3 Ratkeavia ongelmia 153 5.3 Ratkeavia ongelmia Deterministisen äärellisten automaattien (DFA) hyväksymisongelma: hyväksyykö annettu automaatti B merkkijonon w? Ongelmaa vastaava formaali kieli on A DFA = { B, w B on DFA,

Lisätiedot

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

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 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

Lisätiedot

Chomskyn hierarkia ja yhteysherkät kieliopit

Chomskyn hierarkia ja yhteysherkät kieliopit Chomskyn hierarkia ja yhteysherkät kieliopit Laskennan teorian opintopiiri Tuomas Hakoniemi 21. helmikuuta 2014 Käsittelen tässä laskennan teorian opintopiirin harjoitustyössäni muodollisten kielioppien

Lisätiedot

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

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri } 135 4.3 Algoritmeista Churchin ja Turingin formuloinnit laskennalle syntyivät Hilbertin vuonna 1900 esittämän kymmenennen ongelman seurauksena Oleellisesti Hilbert pyysi algoritmia polynomin kokonaislukujuuren

Lisätiedot

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Pysähtymisongelman ratkeavuus [Sipser luku 4.2] Pysähtymisongelman ratkeavuus [Sipser luku 4.2] Osoitamme nyt vihdoin, että jotkin Turing-tunnistettavat kielet ovat ratkeamattomia ja jotkin kielet eivät ole edes Turing-tunnistettavia. Lisäksi toteamme,

Lisätiedot

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

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}. 42 Turingin koneiden laajennuksia 1 oniuraiset koneet Sallitaan, että Turingin koneen nauha koostuu k:sta rinnakkaisesta urasta, jotka kaikki kone lukee ja kirjoittaa yhdessä laskenta-askelessa: Koneen

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 ICS-C2000 Tietojenkäsittelyteoria Kevät 206 Kierros 0, 2. 24. maaliskuuta Huom! Perjantaina 25. maaliskuuta ei ole laskareita (pitkäperjantai), käykää vapaasti valitsemassanne ryhmässä aiemmin viikolla.

Lisätiedot

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

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 13. lokakuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 13.10.2016 klo 9:42 passed waiting redo submitters

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

Yhteydettömän kieliopin jäsennysongelma

Yhteydettömän kieliopin jäsennysongelma Yhteydettömän kieliopin jäsennysongelma Yhteydettömän kieliopin jäsennysongelmalla tarkoitetaan laskentaongelmaa Annettu: yhteydetön kielioppi G, merkkijono w Kysymys: päteekö w L(G). Ongelma voidaan periaatteessa

Lisätiedot

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja 582206 Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja 1. Seuraavissa laskennoissa tilat on numeroitu sarakkeittain ylhäältä alas jättäen kuitenkin hyväksyvä tila välistä. Turingin koneen laskenta

Lisätiedot

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

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS. TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. joulukuuta 2015 Sisällys TM vs yleiset kieliopit Lause Jokaiselle kielelle A seuraavat ovat yhtäpitävät: 1.

Lisätiedot

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rajoittamattomat kieliopit (Unrestricted Grammars) Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli

Lisätiedot

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

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi: T-79.148 Kevät 2004 Tietojenkäsittelyteorian perusteet Harjoitus 12 Demonstraatiotehtävien ratkaisut 4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi: Hyväksyykö annettu Turingin kone

Lisätiedot

Pinoautomaatit. Pois kontekstittomuudesta

Pinoautomaatit. Pois kontekstittomuudesta TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Pinoautomaatti NFA:n yleistys automaatilla on käytössään LIFO-muisti 1 eli pino Pino

Lisätiedot

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut Pisteytys on ilmoitettu välikoevaihtoehdon mukaan (joko tehtävät 1, 2 ja 3 välikokeen 1 uusintana tai tehtävät 4, 5 ja 6 välikokeen 2 uusintana).

Lisätiedot

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

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 20. kesäkuuta 2013 Sisällys Päätösongelmat Ongelma on päätösongelma (engl. decision problem), jos se on muotoa Onko

Lisätiedot

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja sekä muita TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. kesäkuuta 2013 Sisällys Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton

Lisätiedot

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Hahmon etsiminen syotteesta (johdatteleva esimerkki) Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux

Lisätiedot

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

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3 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

Lisätiedot

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

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. kesäkuuta 2013 Sisällys Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton kontekstinen

Lisätiedot

Muita vaativuusluokkia

Muita vaativuusluokkia Muita vaativuusluokkia Käydään lyhyesti läpi tärkeimpiä vaativuusluokkiin liittyviä tuloksia. Monet tunnetuista tuloksista ovat vaikeita todistaa, ja monet kysymykset ovat vielä auki. Lause (Ladner 1975):

Lisätiedot

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja 582206 Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja 1. Esitä tilakaaviona NFA N = (Q, Σ, δ, q 0, F ), missä Q = { q 0, q 1, q 2, q 3, q 4, q 5, q 6, q 7 }, Σ = { a, b, c }, F = { q 4 } ja δ on

Lisätiedot

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

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi Äärellisten automaattien ja säännöllisten kielten ekvivalenssi Osoitamme seuraavan keskeisen tuloksen: Lause 1.8: [Sipser Thm. 1.54] Kieli on säännöllinen, jos ja vain jos jokin säännöllinen lauseke esittää

Lisätiedot

3. Laskennan vaativuusteoriaa

3. Laskennan vaativuusteoriaa 3. Laskennan vaativuusteoriaa tähän asti puhuttu siitä, mitä on mahdollista laskea äärellisessä ajassa siirrytään tarkastelemaan laskemista kohtuullisessa ajassa vaihtoehtoisesti voidaan laskenta-ajan

Lisätiedot

Kertausta 1. kurssikokeeseen

Kertausta 1. kurssikokeeseen Kertausta. kurssikokeeseen. kurssikoe on to 22.0. klo 9 2 salissa A (tai CK2). Koealueena johdanto ja säännölliset kielet luentokalvot 3 ja nämä kertauskalvot harjoitukset 6 Sipser, luvut 0 ja Edellisvuosien.

Lisätiedot

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

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä Edellä esitetyt kielten A TM ja HALT TM ratkeamattomuustodistukset ovat esimerkkejä palautuksesta (reduction). Intuitiivisesti ongelman A palauttaminen ongelmaan B tarkoittaa, että Oletetaan, että meillä

Lisätiedot

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

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys. Ei-säännöllisiä kieliä [Sipser luku 1.4] Osoitamme, että joitain kieliä ei voi tunnistaa äärellisellä automaatilla. Tulos ei sinänsä ole erityisen yllättävä, koska äärellinen automaatti on äärimmäisen

Lisätiedot

Ratkeavuus ja efektiivinen numeroituvuus

Ratkeavuus ja efektiivinen numeroituvuus Luku 6 Ratkeavuus ja efektiivinen numeroituvuus Proseduurit Olkoon A aakkosto. Proseduuri aakkoston A sanoille on mikä hyvänsä prosessi (algoritmi) P, jolle annetaan syötteeksi sana w A, ja joka etenee

Lisätiedot

Automaatit. Muodolliset kielet

Automaatit. Muodolliset kielet Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria ICS-C2000 Tietojenkäsittelyteoria Luento 10: Lisää ratkeamattomuudesta Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016 Aiheet: Pysähtymisongelma Epätyhjyysongelma Rekursiiviset

Lisätiedot

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

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

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää S AB CA... A CB...... ja kutsua Derives(S, abcde), niin kutsu Derives(B,

Lisätiedot

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

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut T-79.148 Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S tuottama

Lisätiedot

Output. Input Automaton

Output. Input Automaton 16 Aakkostot, merkkijonot ja kielet Automaattiteoria diskreetin signaalinkäsittelyn perusmallit ja -menetelmät ( diskreettien I/O-kuvausten yleinen teoria) 1011 Input Automaton Output Automaatin käsite

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M := ICS-C2000 Tietojenkäsittelyteoria Luento 5: Säännöllisten kielten pumppauslemma; yhteydettömät kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Alue ja aiheet: Orposen prujun

Lisätiedot

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

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko 9.5. Turingin kone Turingin kone on järjestetty seitsikko TM = (S, I, Γ, O, B, s 0, H), missä S on tilojen joukko, I on syöttöaakkosto, Γ on nauha-aakkosto, I Γ, O on äärellinen ohjeiden joukko, O S Γ

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. maaliskuuta 2012 Sisällys Ongelma-analyysiä Sisällys Ongelma-analyysiä Hypoteettinen ongelma The Elite Bugbusters

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e

Lisätiedot

Säännöllisten kielten sulkeumaominaisuudet

Säännöllisten kielten sulkeumaominaisuudet Säännöllisten kielten sulkeumaominaisuudet Osoitamme nyt, että säännöllisten kielten joukko on suljettu yhdisteen, konkatenaation ja tähtioperaation suhteen. Toisin sanoen jos A ja B ovat säännöllisiä,

Lisätiedot

S BAB ABA A aas bba B bbs c

S BAB ABA A aas bba B bbs c T-79.148 Kevät 2003 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S) tuottama

Lisätiedot

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

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e) Tik-79.148 Kevät 2001 Tietojenkäsittelyteorian perusteet Laskuharjoitus 7 Demonstraatiotehtävien ratkaisut 1. Pinoautomaatti M = K Σ Γ s F missä K Σ s ja F on määritelty samalla tavalla kuin tilakoneellekin.

Lisätiedot

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja 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

Lisätiedot

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

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 24. toukokuuta 2013 Sisällys Formaalit kielet On tapana sanoa, että merkkijonojen joukko on (formaali) kieli. Hieman

Lisätiedot

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen

Lisätiedot

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. marraskuuta 2015 Sisällys Tunnistamis- ja jäsennysongelma Olkoon G = (N, Σ, P, S) kontekstiton kielioppi ja

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

Lisätiedot

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS .. TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. lokakuuta 2016 Sisällys. Harjoitustehtävätilastoja Tilanne 6.10.2016 klo 8:28 passed potential redo submitters

Lisätiedot

582206 Laskennan mallit

582206 Laskennan mallit 582206 Laskennan mallit luennot syksylla 2006, periodit I{II Jyrki Kivinen tietojenkasittelytieteen aineopintokurssi, 6 op, paaaineopiskelijoille pakollinen esitietoina Tietorakenteet (ja sen esitiedot)

Lisätiedot

Johdatus matematiikkaan

Johdatus matematiikkaan Johdatus matematiikkaan Luento 7 Mikko Salo 11.9.2017 Sisältö 1. Funktioista 2. Joukkojen mahtavuus Funktioista Lukiomatematiikassa on käsitelty reaalimuuttujan funktioita (polynomi / trigonometriset /

Lisätiedot

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

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

Lisätiedot

DFA:n käyttäytyminen ja säännölliset kielet

DFA:n käyttäytyminen ja säännölliset kielet säännölliset kielet TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2015 Sisällys toiminta formaalisti Olkoon M = (Q, Σ, δ, q 0, F) deterministinen

Lisätiedot

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa. Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa. Vastaus 2. Vertaillaan

Lisätiedot

Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?

Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }? Vastaus

Lisätiedot