Laskennan teoria
|
|
|
- Sami Lattu
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Laskennan teoria luennot kevatlukukaudella 2006 Jyrki Kivinen tietojenkasittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkasittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa ja bioinformatiikan ja laskennallisen biologian suuntautumisvaihtoehdossa esitiedot kaytannossa Tietorakenteet, Ohjelmoinnin ja laskennan perusmallit, joitain matematiikan opintoja 1
2 Opetusmuodot luennot (11 3 tuntia) harjoitukset (ks. opetusohjelma) 11 harjoituskertaa, 4 tehtavaa per kerta ) 44 tehtavaa kurssikoe to 4.5. (tarkista aikanaan) harjoitukset pakollisia: ratkaistava vah. 25% tehtavista luennoijan vast.otot ke , pe seuraava erilliskoe
3 Kurssin suorittaminen maksimi 60 pistetta: koe 54 p., harjoitukset 6 p. hyvaksymisraja noin 30 p., arvosanan 3/3 raja noin 50 p. harjoituspisteet tehty 0{11 12{15 16{19 20{23 24{27 28{31 32{35 36{44 pisteet hyl Hyvaksymisrajaan suhtaudutaan vakavasti. Jos laskarien kertymisessa on ongelmia, selvita ajoissa luennoijan kanssa. 3
4 Oppimateriaali Kurssikirja Hopcroft, Motwani, Ullman: Introduction to Automata Theory, Languages, and Computation (luvut 8{10; kurssikirjahyllyssa) Oheislukemisto Orponen: Laskennan teoria (luvut 4{7 kattavat kurssin asiat) Muitakin kirjoja on paljon, esim. Sipser: Introduction to the Theory of Computation on suositeltava Luentomateriaali ilmestyy kurssin kotisivulle mutta ei ole taydellinen esitys kurssin asioista (eras) suositeltava materiaali itseopiskeluun: kalvokopiot + kurssikirja merkinnalla ( ) varustetut luentojen kohdat eivat valttamatta loydy kurssikirjasta eivatka kuulu koealueeseen 4
5 Vihjeita (?) opiskeluun Karkea kaavamainen tyomaaraarvio (esim. kurssipalautteen yhteydessa olisi mukava kuulla, paljonko aikaa kurssi todella vei): luennot 11 3 = 33 tuntia laskuharjoitustilaisuudet 11 1,5 = 16,5 tuntia harjoitustehtavien itsenainen ratkaiseminen 11 5 = 55 tuntia kertaaminen ja tentti 12,5 + 3 = 15,5 tuntia yhteensa 120 tuntia Asioiden omaksuminen edellyttaa riittavan maaran itsenaista pohdiskelua, esim. harjoitustehtavien ratkaisemista oppikirjaa apuna kayttaen. Pelkka luentojen seuraaminen ei tyypillisesti riita. Kurssin pakollisuus kannattaa ottaa vakavasti. Suorituksen lykkaaminen johtaa ongelmiin. 5
6 Motto Computational problems are not only things that have to be solved, they are also objects that can be worth studying. Christos H. Papadimitriou 6
7 Tavoitteet tutustua universaaleihin laskennan malleihin hallita Turingin koneiden peruskonstruktiot ymmartaa etta laskennalliset ongelmat voivat olla ratkeamattomia tai tyolaita ymmartaa NP-taydellisyyden merkitys (myos matemaattinen merkitys) tunnistaa tyypilliset ratkeamattomat ja NP-taydelliset ongelmat osata yksinkertaiset ratkeamattomuus- ja NP-taydellisyystodistukset 7
8 Miksi? (tehokkaan) laskennan perusolemuksen selvittamista ratkeamattomia ongelmia esiintyy logiikassa ja siihen liittyen tekoalyssa, formaalissa verioinnissa jne. tyolaita ongelmia esiintyy kaikenlaisissa sovelluksissa (pakkaus, verkot,... ) nama asiat ovat niin keskeisia etta ne pitaa tuntea pintaa syvemmalta { mista tarkalleen on kysymys { mihin vaitteet perustuvat johdatusta teoreettisen tietojenkasittelytieteen ajatteluun (ja esitystapaan) (Lyhyt vastaus: hauskaa ja hyodyllista) 8
9 Sisalto 0. Johdanto: laskennalliset ongelmat, pysahtymisongelman 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, epadeterministiset vaativuusluokat, polynomiset palautukset, NP-taydellisyys 9
10 0. Johdanto Merkintoja ja konventioita [HMU luku 1.5]:, : aarellisia aakkostoja; esim. = f 0; 1 g, = f a; b; c; d g. j j: aakkoston koko; esim. j j = 4. pienet kirjaimet a; b; c; : : :: aakkosmerkkeja pienet kirjaimet x; y; z; u; v; w; : : :: merkkijonoja; esim. x = ab, y = bac. jxj: merkkijonon pituus; esim. jxj = 2. xy: merkkijonojen katenaatio; esim. xy = abbac. 10
11 : aakkoston (aarellisten) merkkijonojen joukko ": tyhja merkkijono (merkitaan usein myos ); siis j"j = 0 esim. jos = f 0; 1 g niin = f "; 0; 1; 00; 01; 10; 11; 000; 001; : : : g milla tahansa aarellisella joukko on numeroituvasti aareton; ts. on olemassa bijektio f: N! (intuitiivisesti aakkoston merkkijonoja on "yhta paljon" kuin luonnollisia lukuja) esim. f(0) = ", f(1) = 0, f(2) = 1, f(3) = 00 jne.; leksikogranen jarjestys kieli on mika tahansa joukko merkkijonoja; esim. Primes = f x 2 f 0; 1 g j x on alkuluvun binaariesitysg siis Primes = f 10; 11; 101; 111; 1011; : : : g 4 = f 2; 3; 5; 7; 11; : : : g (merkinta " 4 =" tarkoittaa etta joukot jossain mielessa esittavat samaa asiaa) 11
12 laskennallinen ongelma on mika tahansa kuvaus :! milla tahansa ; paatosongelma on laskennallinen ongelma jonka arvojoukko on f 0; 1 g ( 4 = f ei; kylla g); paatosongelma samastetaan usein kielen f x j (x) = 1 g kanssa intuitiivisesti algoritmi ratkaisee ongelman, jos milla tahansa syotteella x 2 se tulostaa funktion arvon (x) 2 (maaritellaan pian tasmallisemmin) olkoon P(X) joukon X osajoukkojen joukko; siis esim. P(f a; b g) = f ;; f a g ; f b g ; f a; b g g siis yllamainittu samaistus huomioonottaen P( ) on aakkoston paatosongelmien joukko yksinkertainen argumentti osoittaa, etta paatosongelmia on "enemman" kuin algoritmeja ) kaikilla (paatos)ongelmilla ei mitenkaan voi olla ratkaisualgoritmia 12
13 Lukumaaraargumentti hieman tarkemmin ( ): Java-ohjelmat ovat merkkijonoja, joten mahdollisia Java-ohjelmia on numeroituva maara (eli "korkeintaan yhta paljon" kuin luonnollisia lukuja) Tunnetuista joukko-opin tuloksista seuraa, etta jos X on numeroituvasti aareton niin P(X) on ylinumeroituva (eli ei ole surjektiota N! P(X)) Intuitiivisesti, jos joukon X alkioita on "yhta paljon" kuin luonnollisia lukuja, niin joukon X osajoukkoja on "enemman" kuin luonnollisia lukuja Tama perustuu oleellisesti samaan Cantorin kuuluisaan diagonalisointiargumenttiin kuin tulos, etta reaalilukuja on "enemman" kuin luonnollisia lukuja. Erityisesti jos valitaan = ASCII merkit niin nahdaan, etta aakkoston paatosongelmia on "enemman" kuin Java-ohjelmia. Koska maaritelman mukaan mikaan ohjelma ei voi ratkaista kuin yhden paatosongelman, niin on olemassa ASCII-aakkoston paatosongelmia joille ei "riita" ne ratkaisevaa Java-ohjelmaa 13
14 Onko em. lukumaaraargumentti relevantti: kenties kaikki ratkeamattomat ongelmat ovat keinotekoisia ja mielenkiinnottomia, tai kenties jokainen ongelma voidaan ratkaista jollain ohjelmointikielella? Osoittautuu kuitenkin, etta monet luonnostaan esiintyvat ongelmat ovat ratkeamattomia, ja ratkeamattomuuden kasite on suunnilleen sama kaikilla riittavan voimakkailla laskentaformalismeilla (ohjelmointikielilla) Johtopaatoksella on siis vakavasti otettavia seuraamuksia. 14
15 Pysahtymisongelman ratkeamattomuus (( )/ [HMU 8.1]) (Epamuodollinen johdatteleva esimerkki; yksityiskohtiin palataan.) Vaite: ei ole olemassa C-funktiota halts(p, x) joka saa syotteena mielivaltaisen C-funktion tekstin p ja talle sopivan syotteen x, palauttaa 1 jos laskenta p(x) pysahtyy ja palauttaa 0 muuten. Huom. 1: halts ei siis saa millaan parametreilla joutua ikuiseen silmukkaan. Huom. 2: syntaksivirheet p:n tekstissa jne. kohtaan "muuten". 15
16 "Todistus" (hieman C:n syntaksia muokaten): Tehdaan vastaoletus etta tallainen 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 spesikaatiota: confuse(c) pysahtyy, halts(c, c)==1, confuse(c) jaa silmukkaan; ristiriita. " " 16
17 Johtopaatos: hyvinkin perustavanlaatuiset ohjelmointiin liittyvat kysymykset ovat ratkeamattomia. Seuraavaksi tarkastellaan tamantyyppisia ilmioita ohjelmointikielten sijaan formaaleilla laskennan malleilla, erityisesti Turingin koneilla. Formaalien mallien etuja: semantiikka helppo maaritella formaalisti valtetaan ohjelmointikielten hankalat erikoispiirteet valtetaan tulosten riippuvuus ohjelmointikielesta saadaan yleinen matemaattinen teoria joka on taysin riippumaton kaytettavissa olevista laskentalaitteista 17
18 1. Universaaleja laskennan malleja Esimerkkina universaalista laskennan mallista tarkastellaan Turingin konetta muunnelmineen. Lyhyesti esitellaan myos muita malleja. Taman luvun jalkeen opiskelija tuntee Turingin koneen ja sen muunnelmien peruskasitteet, osaa laatia yksinkertaisia Turingin koneita, tuntee periaatetasolla tarkeimmat Turingin koneisiin liittyvat yleiset konstruktiot ja niiden merkityksen, ymmartaa Turingin koneen suhteen muihin (teoreettisiin ja kaytannollisiin) laskennan malleihin ja tuntee Churchin-Turingin teesin ja osaa arvioida laskennan malleja sen valossa. 18
19 Universaalilla laskennan mallilla tarkoitetaan tassa epamuodollisesti sellaista mallia, jonka avulla on tarkoitus pystya formalisoimaan kaikki mahdolliset algoritmiset prosessi. Tarkoitus on siis vastata tasmallisesti kysymykseen "Mika on algoritmi?" Kaytannon tietojenkasittelijalle tyypillisesti riittaa vastaus "Tunnen kylla algoritmin, kun naen sellaisen." Tasmallista maaritelmaa tarvitaan kuitenkin, jos halutaan tarkastella kysymyksia tyyppia "Onko ongelmalle X olemassa ratkaisualgoritmi?" Ilman tasmallista maaritelmaa ei voitaisi erottaa tapauksia 1. algoritmi on olemassa, sita vain ei viela ole keksitty ja 2. algoritmia ei periaatteellisista syista voi olla olemassakaan. Kaytannossa ensin asetetaan algoritmille matemaattinen maaritelma (oikeastaan useita vaihtoehtoisia), katsotaan sitten mita seuraa, ja keskustellaan lopuksi lososista ja kaytannon seuraamuksista. 19
20 Historiallista taustaa 1900-luvun alkupuolella matemaatikot tarkastelivat kysymysta, voiko annetulle vaitteelle loytaa todistuksen annetuista aksioomista jollain "mekaanisella" menettelylla. Turingin kone on alkujaan eras tapa formalisoida "mekaaninen" tassa yhteydessa. Myos muita, lopulta Turingin koneen kanssa yhtapitaviksi osoittautuneita, malleja esitettiin. Kun sittemmin keksittiin yleiskayttoiset elektroniset tietokoneet, Turingin kone osoittautui myos hyvaksi malliksi sille, mita niilla periaatteessa voidaan laskea (olettaen rajoittamaton muistikapasiteetti). Erityisesti universaali Turingin kone [luvussa 2] vastaa kasitteellisella tasolla ohjelmoitavaa yleiskayttoista tietokonetta: ohjelma voidaan tulkita osaksi syotetta, ja ohjelmaa vaihtamalla sama laite saadaan ratkaisemaan mika tahansa ratkaistavissa oleva ongelma. (Yksinkertaistettu vastaus alkuperaiseen kysymykseen: todistamista ei voida mekanisoida.) 20
21 Turingin kone (Alan Turing, 1936) [HMU 8.2] q 3 q 3 q 0 q 2 q 1 Ohjausyksikko: kone tilassa q 1 Nauhapaa osoittaa merkkia B Tyonauha sis. merkkijonon ABAAB Koneen siirtymafunktio maaraa mika merkki kirjoitetaan nauhapaan kohdalle, mihin suuntaan nauhapaa liikkuu ja mika on seuraava tila kun on annettu nykyinen tila ja nauhapaan alla oleva merkki. 21
22 Motivaatio: yritetaan tehda abstrakti malli siita, millaista laskentaa matemaatikko (tms.) voi tehda "mekaanisesti": kaytettavissa kyna, kumi ja rajattomasti paperia kerralla nahdaan vain vakiokokoinen osa muistiinpanoista matemaatikon oma muisti on aarellinen Vaikuttaa vahan erilaiselta kuin tietokoneet, mutta vuonna 1936 ei ollut tietokoneita malli osoittautuu yhta voimakkaaksi kuin suoremmin moderneja tietokoneita esittavat mallit (lisaa tuonnempana) 22
23 Muodollisemmin Turingin kone (Turing machine, TM) on seitsikko M = (Q; ; ; ; q 0 ; B; F) missa Q on tilajoukko jonka on oltava aarellinen on nauha-aakkosto ja syoteaakkosto (kumpikin aarellinen) on siirtymafunktio q 0 2 Q on alkutila B 2 on tyhjamerkki (blank) F Q on hyvaksyvien tilojen joukko 23
24 on osittainen funktio joukolta Q joukkoon Q f L; R g. Siirtymafunktion arvo (q; X) = (q 0 ; Y; D) tarkoittaa etta jos M on tilassa q ja nauhapaan alla on merkki X niin seuraavalla laskenta-askelella M siirtyy tilaan q 0, kirjoittaa nauhalle merkin Y (merkin X tilalle) ja siirtaa nauhapaata yhden askelen suuntaan D (L: vasen, R: oikea). Jos (q; X) on maarittelematon niin M pysahtyy. 24
25 Intuitiivisesti jos M pysahtyy hyvaksyvaan tilaan se hyvaksyy syotemerkkijonon jos M pysahtyy muunlaiseen tilaan se hylkaa syotemerkkijonon. On myos mahdollista, etta M ei lainkaan pysahdy. Turingin koneen M hyvaksyma (tai tunnistama) kieli L(M) on niiden merkkijonojen joukko jotka M hyvaksyy. Huom. kieleen L M eivat kuulu ne syotteet joilla M ei pysahdy. Huom. erityisesti siis vaihtamalla koneen M hyvaksyvat ja ei-hyvaksyvat tilat keskenaan ei saada konetta joka hyvaksyy kielen L(M) = L(M) paitsi jos kone M on sellainen etta se pysahtyy kaikilla syotteilla. 25
26 Kielta L sanotaan rekursiivisesti lueteltavaksi (recursively enumerable, RE) jos L = L(M) jollain Turingin koneella M, ja rekursiiviseksi (recursive, REC) jos lisaksi M pysahtyy kaikilla syotteilla. Termilla (osittain) rekursiivinen ei ole suoranaista yhteytta ohjelmointikielten rekursioon. Sen taustalla on Kleenen 30-luvulla esittamat -rekursiiviset funktiot, jotka ovat vaihtoehtoinen formalisointi algoritmin kasitteelle. Palaamme tahan myohemmin. Kuten muistetaan, paatosongelma on kuvaus :! f 0; 1 g, ja paatosongelma samaistetaan usein kielen f x 2 j (x) = 1 g kanssa. Paatosongelmaa sanotaan ratkeavaksi (decidable), jos vastaava kieli on rekursiivinen, ja osittain ratkeavaksi (semi-decidable), jos vastaava kieli on rekursiivisesti lueteltava. Jatkamme nyt Turingin koneen teknisten yksityiskohtien kasittelya. Intuitiona on, etta kaikilla syotteilla pysahtyva Turingin kone on matemaattinen formulaatio sille, mika on algoritmi. 26
27 Turingin koneen tilannetta (conguration) merkitaan merkkijonolla vqw missa q 2 Q on koneen tila, v 2 on nauhan sisalto vasemmanpuolimmaisesta ei-tyhjasta merkista nauhapaan vasemmalla puolella olevaan merkkiin ja w 2 on nauhan sisalto nauhapaan kohdalla olevasta merkista oikeanpuolimmaiseen tyhjaan merkkiin. Siis alussa ollut esimerkkitilanne merkitaan Aq 1 BAAB. Jos nauhapaan vasemmalla puolella on vain tyhjaa, niin v = " ja merkkijonon w alussa voi olla tyhjaa; vastaavasti oikealla. Koneen alkutilanne syotteella w 2 on q 0 w. Siis aluksi kone on alkutilassa, syote on nauhalla tyhjien ymparoimana ja nauhapaa syotteen alussa. 27
28 Jos siirtymafunktion mukaan tilannetta vqw seuraa tilanne v 0 q 0 w 0, merkitaan Siis vqw `M v 0 q 0 w 0 : jos (q; a) = (q 0 ; b; R) niin vqaw ` vbq 0 w kaikilla v; w 2 jos (q; a) = (q 0 ; b; L) niin vcqaw ` vq 0 cbw kaikilla c 2, v; w 2 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 0 q 0 w 0 missa v i q i w i ` v i+1 q i+1 w i+1, merkitaan vqw ` M v0 q 0 w 0 : Siis jos hyvaksyvista tiloista ei ole siirtymia (kuten yleensa ei ole), patee L(M) = x 2 j q 0 x ` M vqw joillain q 2 F, v; w 2 : 28
29 Esimerkki Konstruoidaan Turingin kone joka hyvaksyy kielen A = f 0 n 1 n j n 1 g. Perusidea: Apumerkkeina X ja Y. Toistetaan seuraavaa: vaihdetaan 0:n tilalle X siirrytaan nauhalla oikealle kunnes tulee 1 vaihdetaan 1:n tilalle Y palataan vasemmalle kunnes loytyy X aloitetaan seuraava iteraatio taman X:n oikealta puolelta 29
30 Muodollisemmin A = L(M) missa M = (f q 0 ; q 1 ; q 2 ; q 3 ; q 4 g ; f 0; 1 g ; f 0; 1; X; Y; # g ; ; q 0 ; #; f q 4 g) 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 esittaa siirtymakaaviona. 30
31 .. 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 f 0 n 1 n j n 1 g tunnistaminen; siirtymakaavio 31
32 Esimerkki 2 Tunnistetaan kieli a k b k c k j k 0 Perusajatus: korvataan yksitellen jotkin a, b ja c merkeilla A, B ja C samalla tulee tarkastetuksi etta a:t on ennen b:ita jne. kun a:t loppuvat, tarkastetaan ettei b- tai c-merkkeja jaanyt yli Huom. kieli ei ole kontekstiton. 32
33 . 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 f a n b n c n j n 0 g tunnistaminen 33
34 Huom. Turingin koneen laskentavoima (se mitka kielet ovat tunnistettavissa) on sama vaikka mallia muunneltaisiin paljonkin erilliset hylkaava ja hyvaksyva lopputila nauha vain toiseen suuntaan aareton sallitaan nauhapaan pysya paikallaan nauhalla useita uria useita nauhoja... Viela oleellisempaa on, etta Turingin kone on laskentavoimaltaan sama kuin aivan muista lahtokohdista johdetut formalismit (Kleenen rekursiiviset funktiot, yleiset kieliopit, RAM-koneet,... ). 34
35 monimutkaisia turinginkonekonstruktioita ei tietenkaan voi kaytannossa esittaa siirtymakaavion tarkkuudella myos Turingin koneista puhuttaessa voidaan kayttaa aliohjelmia ja muita vastaavia ajattelumalleja perusteiden ymmartamiseksi kurssilla kaytetaan jonkin verran aikaa yksinkertaisten Turingin koneiden tarkkaan kasittelyyn samalla Turingin koneen varianttien asema selvenee ja nahdaan tarkemmin miten Turingin kone suhtautuu moderniin tietokoneeseen 35
36 Turingin koneen laajennuksia [HMU 8.3{8.4] Turingin koneen maaritelmaan voidaan tehda erilaisia muutoksia siten etta edelleen voidaan tunnistaa tasan sama luokka kielia. Moniuraiset Turingin koneet: nauha jakautuu k uraan (track) joilla kuitenkin on yhteinen nauhapaa. kontrolliyksikko # K O L M E U R A I N E N # # # # T U R I N G I N # # # # # # # # # K O N E # # # # # # # 36
37 jokaisella askelella luetaan ja kirjoitetaan kullekin uralle samalle kohdalle mutta muuten toisista urista riippumatta formaalisti nyt siis siirtymafunktio on : Q k! Q k f L; R g alkutilanteessa syote ensimmaisella uralla, muilla urilla tyhjamerkkia helppo simuloida yksiuraisella koneella: vaihdetaan aakkoston tilalle k, tyhjamerkiksi (#; : : : ; #) jne. ) voidaan kayttaa moniuraisia koneita silloin kun se tuntuu helpommalta 37
38 Moninauhaiset Turingin koneet: nyt meilla on k nauhaa joilla omat nauhapaat (voivat liikkua eri suuntiin, ja yksinkertaisuuden vuoksi myos pysya paikallaan). kontrolliyksikko # 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 # # # # # # # 38
39 formaalisti nyt siis siirtymafunktio on : Q k! Q k f L; R; S g k alkutilanteessa syote ensimmaisella nauhalla, muilla nauhoilla tyhjamerkkia Osoitetaan etta k-nauhaista konetta voi simuloida 2k-uraisella yksinauhaisella koneella Idea: merkataan ylimaaraisille urilla nauhapaiden 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 # # # # # # # 39
40 Moninauhaisen koneen yhden askelen simuloimiseksi luetaan koko nauha kerran lapi ja muistetaan (aarellistilaisessa kontrollissa) mitka merkit ovat nauhapaiden kohdalla valitaan siirtyma ja kirjoitettavat merkit luetaan koko nauha uudestaan lapi ja tehdaan asiaankuuluvat muutokset Oletetaan etta syotteella x simuloitava kone tekee t(x) siirtymaa ) kasiteltavan nauhanosan pituus myos kork. t(x) merkkia ) simuloiva kone suorittaa O(t(x)) askelta per simuloitava askel ) simuloiva kone tekee kaikkiaan O(t(x) 2 ) askelta 40
41 Johtopaatos: 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 samantyyppisia variaatioita: syote erillisella read only -nauhalla nauhoilla alkukohta jonka vasemmalle puolelle ei saa menna Naissa tapauksissa on myos selvaa etta tunnistamiseen kaytettavien laskenta-askelien maara ei muutu "liikaa". Epadeterministiset koneet, joita seuraavaksi kasitellaan, ovat ilmaisuvoimaltaan samoja kuin deterministiset mutta laskenta-aikojen suhteen tilanne on ongelmallisempi. 41
42 Epadeterministiset Turingin koneet analoginen epadeterministisen aarellisen ja pinoautomaatin kanssa yhdesta tilanteesta voi olla useita vaihtoehtoisia siirtymia intuitio: ajatellaan etta kone osaa "arvata" vaihtoehdon joka johtaa lopulta hyvaksyvaan tilaan (jos mahdollista) epadeterminismi on nappara "ohjelmointitekniikka" Erityyppinen variantti kuin moninauhaiset jne. koneet ei (kovin) realistinen laskennan malli ratkeavien ongelmien luokka ei muutu vaikka epadeterminismi sallitaan tilanne muuttuu oleellisesti jos puhutaan nopeasta ratkaisemisesta; tahan palataan kurssin loppupuoliskolla 42
43 Muodollinen maarittely: Epadeterministinen Turingin kone (Nondeterministic Turing machine, NTM) on seitsikko missa M = (Q; ; ; ; q 0 ; B; F) Q,,, q 0, B ja F kuten deterministisessa tapauksessa siirtymafunktio on funktio missa : Q! P(Q f L; R g) P(A) = joukon A potenssijoukko = f B j B A g (Vrt. epadeterministinen aarellinen automaatti) 43
44 Epadeterministisen koneen hyvaksyma kieli Intuitiivisesti (q; X) sisaltaa kaikki mahdolliset siirtymat tilasta q merkilla X, ja jokin kaikkitietava agentti saa valita naista sopivat tavoitteena paatya hyvaksyvaan tilaan. Muodollisesti maaritellaan tilanteet vqw kuten deterministisessa tapauksessa samoin seuraajarelaatio `M ja sen sulkeuma ` M, paitsi etta ehdot muotoa (q 0 ; Y; D) = (q; X) korvataan ehdoilla (q 0 ; Y; D) 2 (q; X) ) voi patea vqw `M v 0 q 0 w 0 nollalla, yhdella tai useammalla v 0 q 0 w 0 (kuitenkin kork. 2jQjj j) koneen M hyvaksyma kieli on L(M) = x 2 j q 0 x ` M vqw joillain q 2 F, v; w 2 44
45 Olkoon M epadeterministinen Turingin kone. Osoitetaan nyt miten kieli L(M) voidaan tunnistaa deterministisella Turingin koneella. Perusidea koneen M simuloimiseksi annetulle syotteella: tutkitaan (mahdollisesti aaretonta) verkkoa, jonka solmuina ovat alkutilanteesta saavutettavissa olevat koneen M tilanteet tilanteiden vqw ja v 0 q 0 w 0 valilla on kaari jos vqw `M v 0 q 0 w 0 M hyvaksyy jos alkutilanteesta on polku hyvaksyvaan tilanteeseen etsitaan tallainen polku leveyssuuntaisesti 45
46 Tarkemmin: Oletetaan etta M on yksinauhainen. Simuloidaan deterministisella 3-nauhaisella konella M 0. nauha 1 on tyonauha nauha 2 sisaltaa jonon (queue) jolla leveyshakua ohjataan nauhaa 3 kaytetaan tilanteiden "monistamiseen" jonon jatkoksi Jos koneen M nauha-aakkosto on, otetaan uudeksi nauha-aakkostoksi 0 = [ f g [ 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 ### : : : 46
47 Simulaatio (eli polunetsinta) etenee vaiheittain. vaiheen 1 aluksi nauhalla 2 on syotetta x vastaava alkutilanne q 0 x jos vaiheen k aluksi nauhalla 2 on (tyhjamerkkien lisaksi) v 1 q 1 w 1 v 2 q 2 w 2 : : : v n q n w n niin vaiheen k lopuksi nauhalla on v 2 q 2 w 2 : : : v n q n w n v 0 1 q0 1 w0 1 v 0 2 q0 2 w0 2 : : : v 0 p q0 p w0 p missa v 0 i q0 i w0 i, i = 1; : : : ; p, ovat ne tilanteet joilla v 1 q 1 w 1 `M v 0 i q0 i w0 i. jos joskus tulee kirjoitettavaksi koneen M hyvaksyvan tilan koodi, niin M 0 hyvaksyy syotteen jos jono tyhjenee, niin M 0 hylkaa syotteen 47
48 Vaiheen k toteutus suunnilleen: tarkista kuinka monta seuraajaa tilanteella v 1 q 1 w 1 on (huom. talla on vakioylaraja 2j jjqj) tee tilanteesta v 1 q 1 w 1 taman mukainen maara kopioita nauhalle 3 kay kopiot jarjestyksessa lapi ja muuta kukin vastaamaaan "oikeannumeroista" seuraajaa kopioi nauhalta 3 nauhalle 2 48
49 Oletetaan etta koneella M on jokin hyvaksyva kork. n askelen pituinen laskenta, ja millaan tilanteella ei ole yli m seuraajaa. M 0 vie ensin jonoon tilanteet yhden (koneen M) laskenta-askelen paassa alkutilanteesta, sitten kahden askelen jne. k askelen paassa olevan tilanteen loytamiseksi voidaan joutua kaymaan lapi 1 + m + m 2 + : : : + m k tilannetta siis riittaa tutkia nm n tilannetta yhden koneen M tilanteen kuvaus on O(n) merkkia ) selvasti M 0 hyvaksyy jossain aarellisessa ajassa 49
50 Johtopaatos: Jos A = L(M) jollain epadeterministisella M, niin A = L(M 0 ) eraalla deterministisella M 0. Kaanteinen suunta tietysti myos patee. Siis kieli A voidaan tunnistaa epadeterministisella Turingin koneella jos ja vain jos se voidaan tunnistaa deterministisella Turingin koneella. Mutta edellaesitetyssa konstruktiossa laskenta-askelia voi tulla eksponentiaalisesti lisaa; tata ongelmapiiria kasitellaan kurssin loppupuoliskolla. Huom. Tassa vaiheessa olisi tarkoitus tuntua suunnilleen uskottavalta, etta Turingin koneella voidaan ratkaista tasan ne ongelmat joille on olemassa algoritmi, siina mielessa kuin sanaa "algoritmi" on kaytetty esim. kurssilla Tietorakenteet. Tata vaittamaa perustellaan pian tarkemmin. 50
51 Muita universaaleja laskennan malleja Talla kurssilla Turingin kone on valittu algoritmikasitteen formalisoinniksi. Toisin sanoen tulkitsemme, etta laskentaongelmalle on olemassa algoritmi, jos ja vain jos se voidaan ratkaista Turingin koneella. Jotta tama valinta ei tuntuisi aivan mielivaltaiselta, kaymme lyhyesti lapi edustavan kokoelman muita algoritmikasitteelle ehdotettuja formalismeja: Random Access Machine: idealisoitu moderni tietokone Rajoittamattomat kieliopit: mahdollisimman yleinen produktiosaantohin perustuva malli Rekursiiviset funktiot: "algoritmisesti ratkeavien ongelmien joukko" maaritellaan sellaisten sulkeumaominaisuuksien kautta, joita silla tulisi olla ("jos ongelmalla A on ratkaisualgoritmi, niin silloin myos siita muodostetulla ongelmalla B pitaisi olla ratkaisualgoritmi") Osoittautuu, etta kaikki nama lahestymistavat johtavat oleellisesti samaan algoritmin kasitteeseen kuin Turingin koneet. 51
52 Edella on yksinkertaisuuden vuoksi rajoituttu paatosongelmiin. Seuraavaksi esiteltavista formalismeista Random Access Machine ja rekursiiviset funktiot ovat luontevampia ajatella osittaisten funktioden kautta. Olkoon M deterministinen Turingin kone, jonka syoteaakkosto on. Oletetaan lisaksi, etta M pysahtyy vain muotoa vqw olevissa tilanteissa, missa v; w 2. Koneen M laskema osittainen funktio f:! maaritellaan nyt seuraavasti: jos M syotteella x pysahtyy tilanteeseen vqw, niin f(x) = vw 2 jos M syotteella x ei pysahdy, niin f(x) ei ole maaritelty. (Jos M jollain syotteella pysahtyy siten, etta nauhalla on ylimaaraisia syoteaakkostoon kuulumattomia merkkeja, se ei siis ylipaansa laske mitaan osittaista funktiota. Funktion laskemisessa ei kiinniteta huomiota siihen, pysahtyyko kone hyvaksyvaan vai ei-hyvaksyvaan tilaan.) Yleisessa tapauksessa f ei ole "oikea" funktio, koska se ei ole maaritelty kaikilla argumentin arvoilla x. Niinpa laskettavuuden teoriassa esiintyy paljon osittaisia funktioita. Jos M pysahtyy kaikilla syotteilla, asiaa usein korostetaan sanomalla etta se laskee totaalisen funktion. 52
53 Random Access Machine (RAM) ( ) (ks. esim. Lewis & Papadimitriou, luku 4.4) abstraktin tietokoneen konekieliohjelma koneessa rajoittamaton maara rekistereita jotka voivat sisaltaa mielivaltaisen suuren kokonaisluvun merkitaan rekisterin j sisaltoa r j, j = 0; 1; 2; : : : rekisteri 0 akku; lisaksi kaskyosoitin syotteena luvut i 1 ; i 2 ; i 3 ; : : : tuloste on rekisterin 0 sisalto laskennan pysahtymishetkella; jos laskenta ei pysahdy, tuloste ei ole maaritelty 53
54 RAMin kaskykanta kasky 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) kasky merkitys HALF r 0 := br 0 =2c 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 pysahtyy r j on rekisterin numero j sisaltama kokonaisluku x voi olla jokin vaihtoehdoista %j, j tai j missa j 2 N. val(%j) = j, val(j) = r j ja val( j) = r rj (epasuora osoitus) 54
55 Turingin koneiden ja RAMin vertaamiseksi samastetaan luonnolliset luvut ja niiden binaariesitykset. Toisin sanoen olkoon b(n) 2 f 0; 1 g luvun n binaariesitys, kun n 2 N. Sanomme, etta Turingin kone M laskee osittaisen funktion f: N! N, jos M laskee osittaisen funktion ^f: f 0; 1 g! f 0; 1 g, missa jos x = b(n) jollain n ja f(n) = m 2 N, niin ^f(x) = b(m) muuten ^f(x) ei ole maaritelty. 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 pitaa ensin muuntaa syoteluku binaariesityksekseen ja sen jalkeen simuloida Turingin konetta. Tama on suoraviivainen ohjelmointiharjoitus. "Jos"-suuntaa varten kontruoidaan annetulle RAMille sita simuloiva 7-nauhainen Turingin kone. Seuraavassa esitetaan vain nauhojen sisalto, yksityiskohdat sivuutetaan. 55
56 Nauha 1: syoteluvut sopivasti koodattuna Nauha 2: rekisterien sisalto koodattuna jonoiksi b(j) : b(r j ) missa siis b( ) tarkoittaa binaariesitysta; naiden jonojen valilla voi olla mielivaltainen maara tyhjamerkkeja Nauha 3: kaskyosoitin Nauha 4: se indeksi j jota vastaavaa r j ollaan etsimassa nauhalta 2 Nauhat 5{7: tyonauhoja aritmetiikkaan jne. " " 56
57 Turingin kone vs. tietokone [HMU 8.6] Edella esitetyn perusteella Turingin kone on sopiva malli modernille tietokoneelle, jolla on kaytettavissaan rajoittamaton maara muistia. Reaalisissa tietokoneissa on aina jokin kiintea ylaraja kaytettavissa olevan muistin maaralle. Periaatteessa oikea malli tietokoneelle, jossa on B bittia muistia, olisi aarellinen 2 B -tilainen automaatti. Nain monitilaisen systeemin ajatteleminen aarellisena automaattina ei kuitenkaan ole kovin intuitiivista. Kun systeemia ajatellaan Turingin koneena, saavutetaan se etu, etta "kontrolliosa" on pieni, hallittavissa oleva ja sama kaiken kokoisille syotteille. Taman takia siedetaan mallissa se eparealistinen piirre, etta Turingin koneen simulaatio voi joillain syotteilla vaatia enemman muistia kuin fyysisesti on kaytettavissa. Milla tahansa yksittaisella paattyvalla laskennalla tosin tarvitaan vain jokin aarellinen maara muistia, mutta tata maaraa ei voi tietaa ennakolta. 57
58 Rajoittamattomat kieliopit ( ) Ohjelmoinnin ja laskennan perusmalleista muistetaan, etta kieli voidaan kuvata (esim.) kieliopilla joka tuottaa sen, tai automaatilla joka tunnistaa sen. saannolliset lausekkeet aarelliset automaatit kontekstittomat kieliopit pinoautomaatit Nyt saadaan yksi vastaava pari lisaa: rajoittamattomat kieliopit Turingin koneet 58
59 Rajoittamaton kielioppi on nelikko G = (V; ; P; S) missa V aakkosto paatemerkit; N = V valikemerkit P (V f " g) V produktiot S 2 N lahtosymboli Produktiota (; ) merkitaan yleensa!. Erona kontekstittomiin kielioppeihin, etta produktion vasemmalla puolella voi olla mika tahansa epatyhja merkkijono. 59
60 Merkkijono 2 V johtaa suoraan merkkijonon 0 2 V jos voidaan kirjoittaa =! ja 0 =! 0 missa!!! 0 2 P. Talloin merkitaan ) G 0 : Merkkijono 2 V johtaa merkkijonon 0 2 V jos on olemassa 0 =, 1, 2,..., n = 0 joille i 1 ) G i. Talloin merkitaan ) G 0 : Kieliopin G tuottama kieli on L(G) = n o x 2 j S) x G : 60
61 Esimerkki: muodostetaan G = (V; ; P; S) jolle L(G) = a k b k c k j k 0 : (Huom. kieli a k b k c k j k 0 ei ole kontekstiton.) Siis = f a; b; c g. Valitaan N = f S; X; T; A; B; C g 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 61
62 Siis merkkijonon a k b k c k tuottamiseksi tuotetaan X(ABC) k jarjestetaan A-, B- ja C-merkit aakkosjarjestykseen; tuloksena XA k B k C k korvataan isot kirjaimet pienilla vasemmalta alkaen. Tama osoittaa etta rajoittamattomilla kieliopeilla voidaan tuottaa muitakin kuin kontekstisia kielia. Seuraavaksi kaydaan periaatetasolla lapi konstruktiot, jotka osoittavat etta itse asiassa rajoittamattomilla kieliopeilla voidaan tuottaa tasan ne kielet, jotka voidaan tunnistaa Turingin koneella. 62
63 Lause: Jos kieli voidaan tuottaa rajoittamattomalla kieliopilla, niin se voidaan tunnistaa Turingin koneella. Todistus (periaate): Olkoon G rajoittamaton kielioppi. Aiemmin esitetyn perusteella riittaa muodostaa kaksinauhainen epadeterministinen Turingin kone M jolle L(M) = L(G). Nauha 1 sisaltaa vain kopion syotejonosta. Nauhalle 2 tuotetaan (epadeterministisesti) lahtosymbolista tuotettavissa olevia merkkijonoja. Laskennan aluksi nauhalle 2 kirjoitetaan pelkka lahtosymboli. Jos jossain vaiheessa nauhojen sisallot ovat samat, hyvaksytaan. 63
64 Laskenta koostuu vaiheista joissa kussakin viedaan epadeterministisesti nauhan 2 nauhapaa mielivaltaiseen paikkaan valitaan epadeterministisesti mielivaltainen kieliopin G produktio jos nauhapaan kohdalta loytyy produktion vasen puoli, kirjoitetaan sen paikalle produktion oikea puoli verrataan nauhojen 1 ja 2 sisaltoja Koska produktioita on aarellinen maara, ne voidaan koodata Turingin koneen tiloihin. Tarkemmat yksityiskohdat sivuutetaan. 64
65 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. Valikkeiksi otetaan siis ainakin koneen M tilojen symbolit. Produktiot suunnitellaan siten etta [vqw] ) G [v 0 q 0 w 0 ] jos ja vain jos vqw `M v 0 q 0 w 0 missa "[" ja "]" ovat uusia valikesymboleja. Tama on mahdollista koska vqw `M v 0 q 0 w 0 edellyttaa etta vqw ja v 0 q 0 w 0 eroavat toisistaan vain merkin q lahiymparistossa. 65
66 Merkkijonon x 2 L(M) tuottaminen tapahtuu kolmessa vaiheessa: 1. tuotetaan lahtosymbolista S merkkijono x[q 0 x]. 2. muunnetaan x[q 0 x]) G x[vq f w] missa q f 2 F 3. siistitaan x[vq f w]) G x Varsinainen tyo tapahtuu vaiheessa 2 jossa G "simuloi" konetta M. Jos x 62 L(M), niin G ei pysty tuottamaan muotoa x[vq f w] olevia merkkijonoja. 66
67 Esitetaan viela konstruktion yksityiskohdat. Aakkostona on (huom. ). V = [ Q [ f S; T; [; ]; X; Y g [ f A a j a 2 g Produktiot jakautuvat edellaesitettyjen 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 2 ) 67
68 Vaihe 2: siirtymien simulointi (nama niille a; b; c 2 jotka ilmenevat siirtymafunktiosta) Siirtyma (q; a) = (q 0 ; b; R) (q; a) = (q 0 ; b; L) (q; #) = (q 0 ; b; R) (q; #) = (q 0 ; b; L) (q; a) = (q 0 ; b; L) Vastaava produktio qa! bq 0 cqa! q 0 cb q]! bq 0 ] cq]! q 0 cb] [qa! [q 0 #b Vaihe 3: lopputilanteen siistiminen (kaikille a 2, q f 2 F) q f! XY ax! X [X! " Y a! Y Y ]! " 68
69 Chomskyn hierarkia Noam Chomskyn vuonna 1956 esittama 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 saannollinen oikealle lin. aarellinen autom. tyyppi 0 on juuri esitelty (ja esitellaan kohta lisaa) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit kuvan taydentamiseksi kaydaan tassa lyhyesti lapi taso 1 69
70 Kontekstinen kielioppi: kuten rajoittamaton kielioppi mutta produktioiden muotoa rajoitetaan sallitaan produktiot! missa jj jj lisaksi sallitaan produktio S! " olettaen etta S ei esiinny minkaan produktion oikealla puolella Nimi "kontekstinen" tulee siita, etta tallaiset kielet voidaan muuntaa muotoon jossa produktiot (pl. mahd. S! ") ovat tyyppia A!! missa A on valike ja! 6= ". Siis intuitiivisesti produktiota A!! saadaan kayttaa vain kontekstissa. 70
71 Lineaarisesti rajoitettu Turingin kone on epadeterministinen yksinauhainen Turingin kone joka ei koskaan kirjoita mitaan muuta niiden tyhjamerkkien paalle jotka nauhalla on alkutilanteessa. Siis kone kayttaa ainoastaan syotteen pituuden verran nauhatilaa. Lause Kieli voidaan tuottaa kontekstisella kieliopilla jos ja vain jos se voidaan tunnistaa lineaarisesti rajoitetulla Turingin koneella. (Todistus sivuutetaan.) Tama on siis esimerkki laskennan mallista, jossa pelkastaan syotteen koon perusteella saadaan ylaraja sen vaatiman laskennan maaralle. Universaaleilla laskennan malleilla nain ei ole, vaan lyhytkin syote voi johtaa pitkaan laskentaan. 71
72 Rekursiiviset funktiot (Godel ja Kleene 1936) ( ) Palautetaan mieliin: kieli A on rekursiivisesti lueteltava jos A = L(M) jollain Turingin koneella M A on rekursiivinen jos lisaksi M pysahtyy kaikilla syotteilla Kaytetaan taas luvun n binaariesitykselle merkintaa b(n), ja oletetaan etta A f 0; 1 g n on joukko tallaisia binaariesityksia (jos x 2 A niin x = b(n) jollain n 2 N). Seuraavassa maaritellaan rekursiiviset funktiot f: N! N joille osoittautuu patevan A on rekursiivinen kieli jos ja vain jos A on rekursiivinen funktio, missa A (n) = 1 jos b(n) 2 A ja A (n) = 0 muuten. A on rekursiivisesti lueteltava jos ja vain jos jollain rekursiivisella f patee A = f b(f(x)) j x 2 N g 72
73 Rekursiivisten funktioiden maaritelman idea on seuraava: tietyt alkeisfunktiot pitaisi ilman muuta osata laskea jos on annettu joitain perusfunktioita jotka osataan laskea, niin niista tietyilla yksinkertaisilla operaatioilla muodostetut funktiot pitaisi myos osata laskea Rekursiivisia funktioita ovat tasan ne jotka taman logiikan mukaan pitaisi osata laskea. Tassa on siis tavallaan deklaratiivinen maaritelma laskettavuudella, itse laskentaprosessista ei puhuta mitaan. Tietysti intuitio laskentaprosesseista on vahvasti taustalla kun valitaan sopivat alkeisfunktiot ja operaatiot. 73
74 Maaritellaan 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 2 N ja 1 i n projektiofunktio U n i : N n! N, U n i (x 1 ; : : : ; x n ) = x i kaikilla x 1 ; : : : ; x n 2 N Nama ovat kaikki totaalisia funktioita eli maaritelty kaikilla argumenttien arvoilla 74
75 Maaritellaan 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 maaritelty, niin myoskaan sijoittamalla saatu h(x) ei ole maaritelty talla x jne. Jos annetut funktiot ovat totaalisia, myos sijoittamalla ja rekursiolla syntyvat funktiot ovat. 75
76 Primitiivirekursiivisten funktioiden joukko PR on pienin joukko joka sisaltaa 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, myos niista sijoituksella tai rekursiolla saadut funktiot ovat) Siis PR koostuu tasan niista funktioista, jotka voidaan muodostaa alkeisfunktioista Z, S ja Ui n sijoitusta ja rekursiota kayttaen. Tasta seuraa etta kaikki primitiivirekursiiviset funktiot ovat totaalisia. 76
77 Esimerkkeja Identiteettifunktio f(x) = x on sama kuin projektio U 1 1. Muodostetaan g yhdistamalla S ja U 3 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 yllaolevista 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. 77
78 Kaikki tavalliset aritmeettiset perusfunktiot nahdaan helposti primitiivirekursiivisiksi. Yleisemmin primitiivirekursiivisia ovat tasmalleen ne funktiot, jotka voidaan laskea kayttaen vain for-silmukoita joissa iteraatioiden maara pitaa kiinnittaa ennen silmukan suorituksen alkua. On kuitenkin funktioita joiden laskemiseen tarvitaan yleisempaa while-silmukkaa. Esim. voidaan osoittaa etta Ackermannin funktio (0; y) = y + 1 (x + 1; 0) = (x; 1) (x + 1; y + 1) = (x; (x + 1; y)) kasvaa nopeammin kuin mikaan primitiivirekursiivinen funktio Siis universaaliin laskennan malliin tarvitaan jokin primitiivirekursiota voimakkaampi mekanismi 78
79 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 maariteltyja ja f(x; y) = 0, niin g(x) on pienin tallainen y 2. muuten g(x) ei ole maaritelty Arvoa y = g(x) voi tietysti etsia laskemalla jarjestyksessa f(x; 0), f(x; 1), f(x; 2), f(x; 3),... ja pysahtymalla kun tulee nolla. Etukateen ei kuitenkaan ole mitaan arviota, kuinka pitkalle joudutaan laskemaan. 79
80 Osittaisrekursiivisten funktioiden joukko PR on pienin joukko joka sisaltaa 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 binaarikoodeja) etta A on rekursiivinen kieli jos ja vain jos A on rekursiivinen funktio A on rekursiivisesti lueteltava jos ja vain jos jollain rekursiiviselle f patee A = f b(f(x)) j x 2 N g lisaksi A on rekursiivisesti lueteltava jos ja vain jos 0 A on osittaisrekursiivinen, missa 0 A(x) = 1 jos b(x) 2 A ja 0 A(x) ei ole maaritelty muuten 80
81 Churchin-Turingin teesi [HMU 8.2.1] Turing esitti oman maaritelmansa matemaattisen logiikan tarpeisiin malliksi siita, mita ihminen voi laskea "saantoja mekaanisesti seuraamalla". Samoihin aikoihin samoihin tarpeisiin esitettiin useita muitakin maaritelmia (Godel & Kleene; Postin produktiojarjestelmat). Nama kaikki osoittautuivat Turingin maaritelman kanssa yhtapitaviksi. Myohemmin Turingin kone osoittautui hyvaksi malliksi myos nykyaikaiselle tietokoneelle. Tasta seuraava askel on Churchin-Turingin teesi: Turingin koneet on oikea malli sille, mita ylipaansa on mahdollista laskea mekaanisesti saantoja seuraamalla. Teesi ei tietenkaan ole matemaattinen vaittama. Sita voidaan pitaa empiirisena vaittamana, koska se on periaatteessa falsioitavissa esittamalla laskulaite, joka laskee ei-rekursiivisia funktioita. Tamakin on tosin hieman ongelmallista, koska kaytannossa voidaan tarkastella vain rajoitetun kokoisia syotteita. Nykyaan teesi on varsin laajasti hyvaksytty, mutta ideoita Turingin konetta voimakkaammista laskulaitteista esitetaan toisinaan. 81
82 2. Laskettavuusteoriaa Kaymme lapi ratkeamattomuuteen liittyvia ja perustuloksia ja -tekniikoita [HMU luku 9]. Taman luvun jalkeen opiskelija tuntee joukon keskeisia ratkeamattomuustuloksia osaa esittaa tyypillisia Turingin koneisiin liittyvia ongelmia formaalisti ja tarkastella niiden ratkeavuutta tunnettujen tulosten valosssa osaa yhdistaa kaytannon algoritmiongelmia tunnettuihin formaaleihin ratkeamattomuustuloksiin osaa tehda yksinkertaisia ratkeamattomuustodistuksia 82
83 Palautetaan mieliin terminologiaa: Kieli L on rekursiivisesti lueteltava jos A = L(M) jollain Turingin koneella M. Turingin kone on totaalinen jos se pysahtyy kaikilla syotteilla. (Joissain lahteissa kaytetaan termia "algoritmi" spesisti tallaisista koneista.) Kieli L on rekursiivinen jos A = L(M) jollain totaalisella Turingin koneella M. Vastaavasti Paatosongelma :! f 0; 1 g on osittain ratkeava jos vastaava kieli A = f x 2 j (x) = 1 g on rekursiivisesti lueteltava. Paatosongelma on ratkeava jos A on rekursiivinen. 83
84 Termien selityksia "rekursiivinen" tulee siita etta tama kieliluokka historiallisesti vakiintui Kleenen ja Godelin rekursiokonstruktion kautta "lueteltava" tulee siita etta A on rekursiivisesti lueteltava jos ja vain jos on olemassa "algoritmi" joka "luettelee" joukon A alkiot (ja vain ne) { jos x 2 A niin x esiintyy luettelossa jonkin aarellisen ajan kuluttua ja asia on selva { jos x 62 A niin x ei tule koskaan esiintymaan luettelossa, mutta tatahan ei voi tietaa pelkastaan katsomalla jotain luettelon aarellista alkuosaa Luetteloimisidea esitetaan myohemmin yksityiskohtaisemmin. Huom. kaikista laskennallisista ongelmista vain haviavan pieni osa on edes osittain ratkeavia, mutta tietojenkasittelytieteessa tietysti yleensa keskitytaan ratkeaviin ongelmiin. 84
85 Churchin-Turingin teesin mukaan ratkeavuus tarkoittaa samaa, kuin etta ongelma voidaan ratkaista jollain algoritmisella menettelylla. Esitamme jatkossa joukon Turingin koneita koskevia eksakteja matemaattisia tuloksia, mutta jos uskomme C-T:n teesin, nailla on siis yleisempia seurauksia. C-T:n teesi oikeastaan motivoi koko taman tutkimusohjelman, koska muuten Turingin koneet eivat valttamatta olisi kovin kiinnostava tutkimuskohde. (Tosin voidaan kumminkin argumentoida, etta Turingin kone on oikea malli sille mita ihminen voi mekaanisesti laskea, ja mita nykyiset tietokoneet voivat laskea.) Joka tapauksessa on kuitenkin selvaa, etta jos ongelma osataan ratkaista esim. Java-kielella, se voidaan ratkaista myos Turingin koneella (vrt. RAM-malli luvussa 1). Samoin joka tapauksessa jonkin ongelman ratkeamattomuuden osoittaminen on aina ei-triviaalia, koska pitaa osoittaa etta mikaan Turingin kone ei ratkaise sita. 85
86 Formaalin logiikan todistuvuusongelma (Motivoiva esimerkki yleisella tasolla; yksityiskohdat ks. esim. Matemaattinen logiikka) Annettu: ensimmaisen kertaluvun predikaattilogiikan kaava Kysymys: onko kaavalle olemassa todistus predikaattilogiikan aksioomista Voidaan "helposti" luetella kaikki logiikan aakkoston merkkijonot esim. leksikograsessa jarjestyksessa ja tarkistaa, sattuuko kyseinen merkkijono olemaan todistus jollekin kaavalle. Jos kaavalle ylipaansa on olemassa todistus, se loytyy jossain aarellisessa ajassa talla menettelylla. Siis todistuksen omaavien kaavojen joukko on rekursiivisesti lueteltava, ja todistuvuusongelma osittain ratkeava. Kuitenkin osoittautuu, etta todistuvuusongelma ei ole ratkeava. Emme siis voi taysin kiertaa sita ongelmaa, etta edella hahmoteltu ratkaisu ei pysahdy, jos kaavalla ei ole todistusta. 86
87 Pysahtymisongelma (johdanto) [HMU 9.1] Intuitiivisesti on kysymys seuraavasta ongelmasta: Annettu: Turingin kone M, merkkijono x Kysymys: pysahtyyko kone M syotteella x Tavoitteena on osoittaa tama ongelma ratkeamattomaksi. Ensimmainen osatavoite, puhtaasti tekninen ja kasitteellisesti yksinkertainen, on esittaa Turingin koneet merkkijonoina. Muutenhan niista ei olisi formaalisti mielekasta edes puhua algoritmin syotteena tms. Esitamme siis seuraavaksi yksinkertaisen koodauksen, joka liittaa jokaiseen Turingin koneeseen M = (Q; : : : ; F) merkkijonon w 2 f 0; 1 g ja kaantaen. 87
88 Turingin koneiden koodaus Rajoittaudutaan yksinauhaisiin koneisiin ja syoteaakkostoon =f 0; 1 g. Lisaksi oletetaan etta hyvaksyvia tiloja on tasan yksi ja se ei ole alkutila. Numeroidaan aakkoston f 0; 1 g merkkijonot siten, etta merkkijonon w numero on 1w binaariluvuksi 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; f 0; 1 g ; ; ; q 1 ; #; F) missa jqj = k, Q = f q 1 ; : : : ; q k g ja F = f q 2 g j j = m 3, = f X 1 ; : : : ; X m g, X 1 = 0, X 2 = 1, X 3 = # suunnat on numeroitu L = D 1 ja R = D 2 88
89 Nyt kaikki muu paitsi on numeroitu. koodataan yksittainen siirtyma (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 tassa ei koskaan tule kahta ykkosta perakkain merkkijono C 1 11C 2 11 : : : C n 1 11C n on koodi koneelle jossa on n siirtymaa joiden koodit ovat C 1 ; : : : ; C n Huomaa etta samalla koneella on tyypillisesti useita eri koodeja yksi merkkijono ei kuitenkaan voi koodata useita eri koneita jotkin merkkijonot eivat ole minkaan koneen koodeja 89
90 Olkoon M triv jokin kiintea Turingin kone joka hylkaa kaikki syotteet. Maaritellaan kaikille w 2 f 0; 1 g Turingin kone M w seuraavasti: jos w on jonkin koneen M koodi, niin M w on tama M muuten M w = M triv Aputuloksena pysahtymisongelman ratkeamattomuustodistuksessa osoitetaan, etta "diagonaalikieli" L d = f w 2 f 0; 1 g j w 62 L(M w ) g ei ole edes rekursiivisesti lueteltava. Kieli L d on hieman keinotekoinen. Sen merkitys on lahinna, etta sen avulla voidaan osoittaa muita kiinnostavampia ongelmia ratkeamattomaksi. 90
91 Analogia: Koodit ja ohjelmointikielet Eras mahdollinen analogia on seuraava: Tulkitaan, etta ohjelma hyvaksyy syotteen, jos sen suoritus paattyy normaalisti, ja hylkaa jos suoritus paattyy virheeseen. Lisaksi ohjelma voi jaada silmukkaan. Nyt Turingin kone M konekieliohjelma merkkijono w 2 f 0; 1 g ASCII-merkkijono (esim. C-ohjelma) M w ohjelma w kaannettyna M triv konekieliohjelma joka aina jakaa nollalla Lisaksi sovimme, etta M w = M triv jos w ei ole syntaktisesti korrekti C-ohjelma. Nyt C-ohjelma kuuluu joukkoon L d, jos se ei pysahdy normaalisti, kun (se kaannetaan ja) siille annetaan syotteena oma lahdekoodinsa. Huom. C-kieli ja konekieli ovat yhta "laskentavoimaisia", joten analogia voitaisiin ajatella toisinkin pain: konekieliohjelmasta voidaan kaantaa C-ohjelma. 91
92 Lause 2.1: [HMU Thm. 9.2] Kieli L d = f w 2 f 0; 1 g j w 62 L(M w ) g ei ole rekursiivisesti lueteltava. Todistus: Tehdaan vastaoletus etta L d = L(M) jollain M. Olkoon w jokin koneen M koodi; siis L d = L(M w ). Nyt w 2 L d, w 62 L(M w ), w 62 L d missa on ensin kaytetty kielen L d maaritelmaa ja sitten koodin w valintaperustetta; ristiriita. Nyt olemme saaneet ensimmaisen konkreettisen ratkeamattomuustuloksen. Jatkossa osoitamme suurelle joukolle ongelmia X, etta jos X osattaisiin ratkaista, niin L d voitaisiin tunnistaa. Tasta seuraa ongelman X ratkeamattomuus yo. lauseen nojalla. 92
93 Huomaa, etta edellisessa todistuksessa ei viela puhuttu mitaan Turingin koneista. Se on vain esimerkki yleisesta diagonalisoinnista: Jos A 1 ; A 2 ; : : : on mika tahansa jono kielia, voidaan muodostaa kieli B, missa w i 2 B jos ja vain jos w i 62 A i : Talloin B 62 f A 1 ; A 2 ; : : : g. Jatkossa tulee tarkeaksi, etta olemme valinneet nimenomaan A i = L(M wi ), jolloin siis B = L d. Karkeasti ottaen tasta valinnasta seuraa, etta jos osaisimme algoritmisesti vastata kysymykseen pateeko x 2 L(M w ) mielivaltaisilla x ja w, osaisimme myos vastata kysymykseen pateeko x 2 L d, joka on (negaatiota vaille) edellisen kysymyksen erikoistapaus x = w. Edellisen lauseen perusteella tama on kuitenkin mahdotonta. 93
94 Rekursiivisuuden perusominaisuuksia [HMU ] Ennen kuin ruvetaan tarkastelemaan varsinaisen pysahtymisongelman ratkeamattomuutta, on hyodyllista tarkastella rekursiivisten kielten luokan joitain perusominaisuuksia. Oletetaan jatkossa etta Turingin koneissa on tasan yksi hyvaksyva tila, ja tasta ei mitaan siirtymia tasan yksi sellainen ei-hyvaksyva tila, josta ei ole mitaan siirtymia (hylkaava lopputila) muuten kaikki siirtymat maariteltyja On helppo muuntaa mika tahansa Turingin kone tallaiseen muotoon. 94
95 Lause 2.2: Olkoot A; B rekursiivisia. Nyt myos A = A \ B ovat rekursiivisia. Todistus: Olkoon A = L(M A ) ja B = L(M B ) missa M A ja M B ovat totaalisia. Esitetaan Turingin koneet kaavamaisesti: A, A [ B ja alkutila M hyvaksyva hylkaava 95
96 Kielen A hyvaksyva kone saadaan vaihtamalla koneen M A hyvaksyva ja hylkaava lopputila keskenaan Kielen A [ B hyvaksymiseksi simuloidaan ensin konetta M A. { jos M A hyvaksyy, niin hyvaksytaan { jos M A hylkaa, niin simuloidaan konetta M B, jonka ratkaisu jaa voimaan (kuva seuraavalla sivulla) Tapaus A \ B seuraa koska A \ B = A [ B 96
97 M A M B Kielen A [ B tunnistaminen koneiden M A ja M B avulla 97
98 Lause 2.3: Olkoot A; B rekursiivisesti lueteltavia. Nyt myos A [ B ja A \ B ovat rekursiivisesti lueteltavia. Todistus: Harjoitustehtava. Sen sijaan yleisesti ei pade etta rekursiivisesti lueteltavan kielen A komplementti A olisi rekursiivisesti lueteltava. Sen sijaan patee Lause 2.4: Kieli A on rekursiivinen jos ja vain jos seka A etta A ovat rekursiivisesti lueteltavia. 98
99 Todistus: Jos A rekursiivinen, niin A on rekursiivinen, joten suunta vasemmalta oikealle on selva. 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 kayttaen ykkosnauhaansa ja konetta M A kayttaen kakkosnauhaansa. Simulaatiot suoritetaan lomittain, aina yksi askel kerrallaan kumpaakin. Jos simuloitava M A hyvaksyy, M hyvaksyy. Jos simuloitava M A hyvaksyy, M hylkaa. Koska jokaisella x joko x 2 L(M A ) tai x 2 L(M A ), aina tasan yksi simulaatioista hyvaksyy. (kuva seuraavalla sivulla) 99
100 M A M A Kielen A tunnistaminen totaalisella koneella jos A ja A ovat rekursiivisesti lueteltavia 100
101 Formalistisemmin tulos voidaan esittaa seuraavasti: Olkoon RE rekursiivisesti lueteltavien kielten joukko: RE = f L(M) j M mielivaltainen Turingin koneg : Olkoon co-re rekursiivisesti lueteltavien kielten komplemettien joukko: co-re = A j A 2 RE : Olkoon REC rekursiivisten kielten joukko: REC = f L(M) j M totaalinen g : Edella esitetyn mukaan REC = RE \ co-re: 101
102 Huomaa yhteys "rekursiivisen luettelemisen" ajatukseen: Oletetaan, etta jokin "algoritmi" M A osaa luetella kielen A; samoin M A kielelle A. Kun halutaan tietaa pateeko x 2 A, listataan rinnakkain joukkoja A ja A. Koska joko x 2 A tai x 2 A, niin jonkin aarellisen ajan kuluttua x esiintyy jommassa kummassa listassa ja vastaus tiedetaan. Myos A-lista tarvitaan, jotta voidaan taata pysahtyminen myos kielteisessa tapauksessa. 102
103 Universaalikieli [HMU ] Seuraava askel kohti pysahtymisongelman ratkeamattomuutta on universaalikieli L u joka on muutenkin hyvin tarkea: Huom. L u = f w111x 2 f 0; 1 g j x 2 L(M w ) g : mikaan Turingin koneen koodi ei sisalla merkkijonoa 111 siis merkkijono z 2 f 0; 1 g voidaan esittaa korkeintaan yhdella tavalla muodossa z = w111x siten, etta w on validi Turingin koneen koodi jos w ei ole validi koodi, edella sovitun mukaan x 62 L(M w ) kaikilla x Osoitamme nyt etta universaalikieli on rekursiivisesti lueteltava, mutta ei rekursiivinen. Kielen L u tunnistavaa Turingin konetta U sanotaan universaaliksi Turingin koneeksi. (Universaalikone ei tietenkaan ole yksikasitteinen.) 103
104 Lause 2.5: [HMU Thm. 9.6(a)] Universaalikieli L u on rekursiivisesti lueteltava. Todistus: Muodostetaan nelinauhainen U jolle L u = L(U). Nauhojen kaytto syotteella z = w111x missa w on koneen M koodi: Nauha 1 sisaltaa syotteen z ja siis erityisesti koneen M siirtymafunktion koodin w Nauha 2 simuloi koneen M nauhan sisaltoa kayttaen samaa koodausta kuin siirtymafunktiossa; siis esim. patkaa : : : X 3 X 1 X 4 : : : esittaisi : : : : : : Nauha 3 simuloi koneen M tilaa; tila q i koodataan 0 i Nauha 4 on tyotilaa 104
105 Koneen U laskenta: Aluksi tarkista, onko syote muotoa w111x jollain validilla koodilla w. Jos ei ole, niin hylkaa. Muuten rupea simuloimaan konetta M = M w syotteella x. Kussakin askelessa 1. Olkoon nauhalla 3 jono : : : #0 i # : : : ja nauhalla 2 nauhapaasta alkaen jono 0 j Etsi koneen M kuvauksesta nauhalla 1 kohta : : : 110 i 10 j 1 : : :; jos ei loydy, niin hylkaa. 3. Olkoon nauhalta 1 loytynyt jono : : : 110 i 10 j 10 k 10 l 10 m 11 : : :. 4. Vaihda nauhan 3 sisalloksi 0 k ja nauhalle 2 nauhapaasta alkaen 0 l ; siirra nauhan 2 loppuosuutta tarpeen mukaan. 5. Siirra nauhan 2 nauhapaa seuraavaan ykkoseen vasemmalla (jos m = 1) tai oikealla (jos m = 2). 6. Jos q k on hyvaksyva tila (siis k = 2), hyvaksy. 105
106 Lause 2.6: [HMU Thm. 9.6(b)] Universaalikieli L u ei ole rekursiivinen. Seuraavalla kalvolla on varsinainen todistus, jossa kaytetaan tasmallisemmin Turingin kone -formalismia. Todistuksen idea on seuraava: Tehdaan vastaoletus, etta kieli L u = f w111x j x 2 L(M w ) g voidaan tunnistaa totaalisella Turingin koneella. Tama tarkoittaa, etta on olemassa kaikilla syotteilla x ja w pysahtyva proseduuri p(w; x), joka palauttaa tosi joss x 2 L(M w ). Nyt seuraava proseduuri q(w) palauttaa tosi joss w 2 L d (eli w 62 L(M w )): q(w): jos p(w; w) niin palauta epatosi muuten palauta tosi Tama on ristiriita, koska L d ei ole rekursiivinen (eika edes rekursiivisesti lueteltava). 106
107 Todistus: Tehdaan vastaoletus etta L u = L(M) jollain totaalisella M. Muodostetaan totaalinen M 0 jolle L(M 0 ) = L d, missa L d on aiemmin ei-rekursiiviseksi osoitettu diagonaalikieli; ristiriita. Kone M 0 toimii syotteella w seuraavasti: 1. Jos w ei ole validi koodi, hyvaksy. 2. Muuten muunna nauhan sisalloksi w111w. 3. Simuloi koneen M laskentaa; oletuksen mukaan tama johtaa joko hylkaavaan tai hyvaksyvaan lopputilaan. 4. Jos M hyvaksyy, niin hylkaa; jos M hylkaa, niin hyvaksy. Nyt w 2 L(M 0 ), (w ei validi koodi tai w111w 62 L u ), w 62 L(M w ), w 2 L d : 107
108 Pysahtymisongelma Voimme nyt formuloida pysahtymisongelman kieleksi H = f w111x 2 f 0; 1 g j w validi koodi ja M w pysahtyy syotteella x g : Lause 2.7: Kieli H on rekursiivisesti lueteltava. Todistus: Universaalikoneen U konstruktiota on helppo muuttaa siten etta se hyvaksyy jos ja vain jos simuloitavan koneen laskenta pysahtyy. Lause 2.8: Kieli H ei ole rekursiivinen. Todistus: Tehdaan vastaoletus etta H = L(M) jollain totaalilla M. Tasta saadaan helposti sellainen totaali M 0, etta L(M 0 ) = H ja hyvaksyessaan syotteen x kone M 0 jattaa laskennan lopuksi nauhalle alkuperaisen syotteen tyhjamerkkien ymparoimana. 108
109 Tasta saadaan totaalinen kone M 00 joka tunnistaa universaalikielen L u seuraavasti: 1. Tarkista etta syote on muotoa w111x missa w on validi koodi; jos ei ole, niin hylkaa. 2. Simuloi sitten konetta M 0 ; jos hylkasi niin hylkaa. 3. Jos M 0 hyvaksyi, kasittele sama syote universaalikoneella U, jonka hyvaksyminen tai hylkaaminen jaa voimaan. Universaalikoneen konstruktiosta nahdaan, etta U pysahtyy syotteella w111x jos ja vain jos M w pysahtyy syotteella x. Siis M 00 on totaali ja tunnistaa saman kielen kuin U; ristiriita 109
110 Seuraava ongelma on oleellisesti pysahtymisongelman komplementti eika siis edes osittain ratkeava. Lause 2.9: "Pysahtymattomyysongelma" e H missa eh = f w111x j w validi koodi, M w ei pysahdy syotteella x g ei ole rekursiivisesti lueteltava. Todistus: Pysahtymisongelman komplementti H voidaan esittaa muodossa H = e H [ E missa E = f z 2 f 0; 1 g n j z ei ole w111x millaan validilla koodilla w g : Selvasti E on rekursiivinen Siis jos e H olisi rekursiivisesti lueteltava, myos H = e H [ E olisi (Lause 2.3). Kieli H on rekursiivisesti lueteltava, joten jos H myos olisi, niin H olisi rekursiivinen (Lause 2.4); ristiriita. Siis e H ei voi olle rekursiivisesti lueteltava 110
111 Ohjelmointikielen pysahtymisongelma Turingin koneet ovat analogisia jollain ohjelmointikielella kirjoitettujen ohjelmien kanssa: Turingin kone -formalismi jonkin ohjelmointikieli Turingin kone talla kielella kirjoitettu ohjelma Turingin koneen koodi ohjelma kaannettyna konekielelle universaali Turingin kone konekielen tulkki joitain ohjelmointikielten ratkeamattomuustuloksia voidaan katevasti osoittaa suoraan (kuten johdannossa C-kielen pysahtymisongelma) voidaan myos kayttaa hyvaksi Turingin koneiden ja minka tahansa yleisohjelmointikielen samaa ilmaisuvoimaa ja siirtaa tulokset Turingin koneista ohjelmointikieliin "sama ilmaisuvoima" tarkoittaa tassa, etta mika tahansa ongelma voida ratkaista Turingin koneella jos ja vain jos se voidaan ratkaista kyseisella ohjelmointikielella 111
112 Esimerkki 2.10: C-kielen pysahtymisongelma Rajoitutaan tarkastelemaan C-kielen funktioita jotka saavat parametrina yhden merkkijonon ja palauttavat 0 tai 1 tai jaavat silmukkaan. Sanotaan etta tallainen funktio f hyvaksyy merkkijonon x jos f(x) palauttaa 1, ja on totaalinen jos f(x) pysahtyy kaikilla x. Ollaan valmiit uskomaan, etta kieli A voidaan tunnistaa (totaalisella) Turingin koneella jos ja vain jos se voidaan tunnistaa tallaisella (totaalisella) C-funktiolla. Taman uskomuksen tarkka perusteleminen vaatisi tietysti C-kielen semantiikan tarkkaa lapikaymista, mutta intuitiivisesti se on "selvasti" totta (vrt. RAM-malli). Halutaan osoittaa Turingin koneiden pysahtymisongelmalle analoginen tulos: mikaan totaalinen C-funktio ei tunnista kielta H C = f w x j w on C-funktio joka syotteella x pysahtyy g 112
113 Argumentti menee paapiirtessaan seuraavasti: koska C on yhta ilmaisuvoimainen kuin Turingin koneet, voidaan Turingin koneiden universaalikieli L u tunnistaa jollain (ei-totaalisella) C-funktiolla univt siis kysymykset Turingin koneen M w toiminnasta syotteella x palautuvat kysymyksiksi C-funktion univt toiminnasta syotteella w111x. erityisesti jos jokin C-funktio halts ratkaisisi C-funktioiden pysahtymisongelman, niin tata kautta se ratkaisisi myos Turingin koneiden pysahtymisongelman koska toisaalta Turingin koneet ovat yhta ilmaisuvoimaisia kuin C-funktiot, funktiota halts voitaisiin simuloida Turingin koneella nain saataisiin ratkaistuksi Turingin koneiden pysahtymisongelma; ristiriita 113
114 Esitetaan sama hieman yksityiskohtaisemmin. Vastaoletus siis on, etta jokin totaalinen C-funktio haltsc ratkaisee C-kielen pysahtymisongelman. "Tunnetusti" on olemassa C-funktio f u joka simuloi universaalia Turingin konetta U. Siis erityisesti f u syotteella w111x pysahtyy, jos ja vain jos M w syotteella x pysahtyy. Olkoon haltst C-funktio, joka syotteella z tekee kutsun haltsc(p*z) missa p on funktion f u teksti (joka siis on jokin merkkijonovakio). Tama 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) pysahtyy, w111x 2 H: Toisaalta on selvasti olemassa totaalinen Turingin kone M H joka simuloi C-funktiota haltst. Siis M H ratkaisee Turingin koneiden pysahtymisongelman; ristiriita. 114
115 Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, etta ongelma P voidaan palauttaa ongelmaan Q, jos mista tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle P ratkaisualgoritmi. Palauttaminen, epaformaalisti ymmarrettyna, on keskeinen valine normaalissa ohjelmoinnissa jne: 1. Halutaan ratkaista ongelma P. 2. Kirjoitetaan ongelman P ratkaiseva ohjelma p, joka kutsuu aliohjelmaa q (esim. sort). Aliohjelmasta q oletetaan, etta se ratkaisee tunnetun ongelman Q (esim. jarjestaa taulukon), mutta sen toteutuksesta ei sanota viela mitaan. 3. Aliohjelma p on nyt ongelman P palautus ongelmaan Q. 4. Jos jostain kirjastosta loydetaan ongelmalle Q ratkaisualgoritmi (esim. quicksort), saadaan ratkaisu myos ongelmalle P. 115
116 Talla kurssilla palautuksia kaytetaan lahinna "vaaraan" suuntaan osoittamaan ongelmia ratkeamattomiksi: 1. Halutaan osoittaa, etta ongelma Q on ratkeamaton. 2. Palautetaan jokin tunnetusti ratkeamaton ongelma P (esim. L d ) ongelmaan Q, ts. osoitetaan miten mista tahansa ongelman Q ratkaisualgoritmista saataisiin ongelman P ratkaisualgoritmi. 3. Koska oletuksen mukaan kuitenkin P on ratkeamaton, myoskaan ongelmalle Q ei voi olla ratkaisualgoritmia. Seuraavaksi maaritellaan palautuksen kasite tasmallisesti, tarkastellaan esimerkkeja edella esitetyn tyyppisista todistuksista ja samalla laajennetaan tunnettujen ratkeamattomien ongelmien "kirjastoa", josta saadaan kandidaatteja ongelmaksi P. 116
117 Ruvetaan nyt maarittelemaan palautuksen kasitetta tasmallisemmin. Idea: Maaritellaan laskennallisten ongelmien relaatio A B, "ongelma A voidaan palauttaa ongelmaan B" Intuitiivinen tulkinta: Kun A B niin B on ainakin yhta vaikea kuin A, eli ongelma A voidaan ratkaista ongelman B avulla. Tyypillinen kayttotapa: Halutaan osoittaa ongelma B "vaikeaksi". Valitaan jokin "vaikeaksi" tunnettu A, ja osoitetaan A B. Huomaa palautuksen suunta! Huom. kurssikirja ei maarittele palautukselle merkintaa A B, mutta kaytamme sita tassa koska se on vakiintunut ja helpottaa asioiden esittamista. 117
118 Palautus voidaan formalisoida monella tavalla. Maarittelemme seuraavaksi yksinkertaisen ns. many-one-palautuksen, jota merkitaan m. Johdatteleva esimerkki: Tunnetusti kaikilla x; y 2 R patee 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 ; missa (a; b) = (ln a; ln b), s(x; y) = x + y ja (z) = e z. Yleisemmin kun nain patee, sanomme etta (; ) palauttaa funktion r funktioon s. (Nykyaan taman esimerkkipalautuksen merkitys on vahentynyt, mutta aikanaan se oli tarkea koska eksponentti- ja logaritmifunktiot saatiin taulukosta ja yhteenlasku kynalla ja paperilla on helpompaa kuin kertolasku.) 118
119 ... V U s r Y X. Funktion r: U! X palautus funktioon s: V! Y kayttaen funktioita : U! V ja : Y! X: Esimerkissa 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). 119
120 Olkoot nyt A ja B paatosongelmia. Funktio f:! on rekursiivinen palautus kielesta A kieleen B (eli kielen A rekursiivinen palautus kieleen B) jos f on rekursiivinen ja kaikilla x 2 patee x 2 A jos ja vain jos f(x) 2 B. Talloin merkitaan f: A m B. Olkoon id joukon f 0; 1 g identiteettikuvaus. Edella esitettyja kasitteita kayttaen f: A m B siis tarkoittaa, etta pari (f; id) palauttaa ongelman A karakteristisen funktion A ongelman B karakteristiseen funktioon B, eli A (x) = B (f(x)) kaikilla x 2 ; ja lisaksi f on rekursiivinen. 120
121 B A fa A fa B Periaatekuva palautuksesta f: A m B (Tassa A = A.) 121
122 Kieli A palautuu rekursiivisesti kieleen B jos on olemassa rekursiivinen palautus kielesta A kieleen B. Talloin merkitaan A m B. Lause 2.11: [HMU Thm 9.7] Olkoon A m B ja B rekursiivinen (rekursiivisesti lueteltava). Talloin A on rekursiivinen (vast. rekursiivisesti lueteltava). Todistus: Helppo. Huomaa, etta m -palautus on vain eras erikoistapaus palautuksesta. On olemassa tilanteita, joissa ongelma A kylla intuitiivisesti voidaan ratkaista ongelman B avulla, mutta ei pade A m B. Esimerkki: yleensa ei pade A m A, missa A = A. Tallaisten tilanteiden tarkastelemiseen tarvitaan jotain voimakkaampaa (ja hankalammin maariteltavaa) palautuksen kasitetta, kuten Turing-palautus T. Talla kurssilla sivuutamme ongelman. 122
123 Epatyhjyysongelma [HMU 9.3.2] Esimerkkina palautustekniikasta, ja johdatuksena yleisempaan Ricen lauseeseen, tarkastellaan kielta L ne = f w 2 f 0; 1 g j L(M w ) 6= ; g : Ongelmana on siis paattaa annetusta Turingin koneesta, hyvaksyyko se ylipaansa mitaan merkkijonoja. Lause 2.12: [HMU Thm. 9.8, 9.9] Kieli L ne on rekursiivisesti lueteltava mutta ei rekursiivinen. Todistus Kiinnostavampi puoli vaitteesta on ei-rekursiivisuus, mutta tarkastetaan kuitenkin ensin rekursiivinen lueteltavuus. Tama kay helpoimmin konstruoimalla epadeterministinen Turingin kone M jolle L ne = L(M). 123
124 Koneen M laskenta etenee seuraavasti: 1. Kirjoita nauhalle syotteen w jatkoksi 111 ja epadeterministisesti generoitu mielivaltainen x 2 f 0; 1 g. 2. Palaa nauhan alkuun ja simuloi universaalikonetta U syotteella w111x. Nyt w 2 L ne, x 2 L(M w ) jollain x 2 f 0; 1 g, w111x 2 L(U) jollain x 2 f 0; 1 g, w 2 L(M): /2 124
125 Ei-rekursiivisuus osoitetaan palautuksella universaalikielesta L u. Siis muodostetaan funktio f jolle f(z) 2 L ne jos ja vain jos z 2 L u, ja lisaksi funktio f on rekursiivinen. Talloin f: L u m L ne, joten jos L ne olisi rekursiivinen niin myos L u olisi; ristiriita. Funktion f pitaa siis annetulla syotteella z = w111x muodostaa Turingin kone M (tai oikeastaan sen koodi) siten, etta jos x 62 L(M w ) niin M ei hyvaksy yhtaan merkkijonoa jos x 2 L(M w ) niin M hyvaksyy ainakin jonkin merkkijonon Konstruktiossa itse asiassa kay jopa niin, etta jos x 2 L(M w ) niin M hyvaksyy kaikki merkkijonot 125
126 Tarkastellaan jotain kiinteaa z = w111x. Syotteella y kone M toimii seuraavasti: 1. Pyyhi syote y pois nauhalta; nauha on nyt tyhja. 2. Kopioi nauhalle merkkijono x; palauta nauhapaa alkuun. 3. Simuloi konetta M w. Konstruktion perusteella on ilmeista etta jos w111x 2 L u niin L(M) = jos w111x 62 L u niin L(M) = ; Siis jos on olemassa rekursiivinen funktio joka syotteella z tuottaa koodin v siten, etta kone M v toimii kuten M ylla, todistus on valmis. 126
127 Tarkastellaan nyt tarkemmin, millaisia tiloja ja siirtymia yllakuvatussa koneessa M = M v pitaisi olla. Olkoon z = w111x missa x = x 1 : : : x n. pohjana toimii kone M w lisataan alkutilaksi uusi tila ^q 0, jossa kone kirjoittaa nauhalle tyhjaa niin kauan kuin ei-tyhjamerkkeja riittaa. Kun tulee vastaan tyhja, siirrytaan uuteen tilaan ^q 1. lisataan tilat ^q i, i = 1; : : : ; n, missa tilassa ^q i, 1 i n 1, kone kirjoittaa merkin x i, siirtyy tilaan ^q i+1 ja siirtaa nauhapaata oikealla. tilasta ^q n siirrytaan uuteen tilaan ^q n+1 jossa kone siirtaa nauhapaata takaisin vasemmalle kunnes taas loytyy tyhjamerkki tilasta ^q n+1 siirrytaan alkuperaisen koneen M w alkutilaan siirtymat koneen M w alkuperaisten tilojen valilla sailyvat ennallaan, samoin lopputilat 127
128 Selvasti ylla kuvattu M = M v toimii kuten vaitetaan: jos x 2 L(M w ) niin se hyvaksyy kaikki syotteet y, muuten ei hyvaksy mitaan. Kuvaus f, missa f(w111x) = v edella kuvattuun tapaan, on selvasti rekursiivinen. Siis f on rekursiivinen palautus L u m L ne. Koska L u ei ole rekursiivinen, niin kieli L ne ei sekaan ole rekursiivinen. 128
129 Lause 2.13: [HMU Thm. 9.10] Tyhjyysongelma ei ole osittain ratkeava; ts. kieli L e = f w 2 f 0; 1 g j L(M w ) = ; g ei ole rekursiivisesti lueteltava. 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. Esimerkkina yksinkertaisesta palautuksesta tarkastellaan kysymysta, onko kahden rekursiivisesti lueteltavan kielen leikkaus tyhja. Lause 2.14: Kieli L ep = f v111w j v; w 2 f 0; 1 g ; L(M v ) \ L(M w ) = ; g ei ole rekursiivisesti lueteltava. 129
130 Tekninen huomio: "syntaksintarkistus" Kielen L ep kiinnostavia tapauksia ovat tietysti sellaiset merkkijonot z = v111w, missa seka v etta w ovat valideja koodeja (eli M v 6= M triv ja M w 6= M triv ). Koska validi koodi alkaa ja loppuu nollalla eika sisalla merkkijonoa 111, niin merkkijonolla z tallaisessa tapauksessa ei voi olla mitaan vaihtoehtoista tulkintaa z = v 0 111w 0, missa v 0 6= v tai w 0 6= w. Jos merkkijono z on "syntaktisesti virheellinen" eli ei muotoa v111w tallaisilla v; w, kysymys pateeko z 2 L ep ei vaikuta edes hyvin maaritellylta. Voi nimittain olla z = v111w = v 0 111w 0, missa v 6= v 0 ja w 6= w 0. Talloin kuitenkin seka parista (v; w) etta parista (v 0 ; w 0 ) ainakin toinen osapuoli sisaltaa merkkijonon 111, tai alku- tai loppuykkosen, eika siis ole validi koodi. Sopimuksen mukaan ei-validille koodille x patee L(M x ) = ;, joten tassa tapauksessa L(M v ) \ L(M w ) = L(M v 0) \ L(M w 0) = ; ja z 2 L ep patee tulkinnasta riippumatta. Siis "syntaksivirheelliset" syotteet tulevat tassa mukaan kieleen L ep (kunhan niissa on ainakin yksi 111). 130
131 Lauseen 2.14 todistus: Palautus kielesta L e. Siis muodostetaan rekursiivinen funktio f: f 0; 1 g! f 0; 1 g, jolle patee f(v) 2 L ep, v 2 L e : Olkoon w all jokin sellainen koodi, etta L(M wall) = f 0; 1 g. Palautusfunktio f maaritellaan f(v) = v111w all : Nyt jos v on validi koodi, patee L(M v ) = L(M v ) \ f 0; 1 g = L(M v ) \ L(M wall) ja siis v 2 L e, L(M v ) = ;, L(M v ) \ L(M wall) = ;, f(v) 2 L ep : Jos taas v ei ole validi koodi, niin edella esitetyn huomautuksen mukaan v 2 L e ja f(v) 2 L ep. 131
132 Siis joka tapauksessa v 2 L e jos ja vain jos f(v) 2 L ep. Funktio f voidaan helposti laskea Turingin koneella: 1. Siirra nauhapaa syotemerkkijonon loppuun. 2. Kirjoita nauhalle merkkijono 111w all. Siis on muodostettu rekursiivinen palautus f: L e m L ep. Jos L ep olisi rekursiivisesti lueteltava, myos L e olisi; ristiriita. 132
133 Semanttisten ongelmien ratkeamattomuus [HMU 9.3.3] Intuitiivisesti semanttinen ongelma on Turingin konetta koskeva kysymys, jonka vastaus riippuu vain koneen hyvaksymasta kielesta. Siis jos L(M) = L(M 0 ), vastauksen on oltava sama koneille M ja M 0. Muodollisemmin semanttinen ominaisuus S on kokoelma rekursiivisesti lueteltavia aakkoston f 0; 1 g kielia. Toisin sanoen S RE, missa siis RE = f L(M) f 0; 1 g j M Turingin kone syoteaakkostolla f 0; 1 g g Ominaisuus S on ratkeava jos joukko on rekursiivinen. L S = f w 2 f 0; 1 g n j L(M w ) 2 S g Esimerkki 2.15: Valitaan S = f ; g, siis pelkan tyhjan kielen sisaltava luokka. Nyt L S = L e, edella esitetty tyhjyysongelma, joten S ei ole ratkeava. 133
134 Semanttinen ominaisuus S on triviaali jos joko S = ; tai S = RE. Siis ominaisuus on ei-triviaali jos on olemassa kaksi kielta L; L 0 2 RE joille L 2 S ja L 0 62 S. Lause 2.16 (Rice): [HMU Thm. 9.11] Kaikki ei-triviaalit semanttiset ominaisuudet ovat ratkeamattomia. Siis esim. seuraavat ongelmat ovat ratkeamattomia: hyvaksyyko M tasan k merkkijonoa (milla tahansa k) hyvaksyyko M aarettoman monta merkkijonoa onko koneen M hyvaksyma kieli saannollinen onko koneen M hyvaksyma kieli kontekstiton (kaikissa ongelmissa siis syotteena koneen M koodi) 134
135 Ricen lauseen todistus: Olkoon S ei-triviaali. Jatkossa esitetaan todistus tapaukselle ; 62 S. Jos ; 2 S, voidaan samaa todistusta soveltaa ominaisuuteen S = RE S joka on ei-triviaali eika sisalla kielta ;. Todistus perustuu palautukseen universaalikielesta L u. Siis muodostetaan rekursiivinen f: f 0; 1 g! f 0; 1 g, jolle f(v) 2 L S jos ja vain jos v 2 L u. Toisin sanoen on oltava L(M f(v) ) 2 S jos ja vain jos v = w111x missa x 2 L(M w ). Kun v ei ole muotoa v = w111x millekaan koodille w, maaritellaan f(v) = w 0 missa w 0 on jokin kiintea koodi jolle L(M w0) 62 S. Tarkastellaan nyt miten f(v) maaritellaan, kun v = w111x, missa w on validi koodi jollekin koneelle M. 135
136 Nyt on siis annettuna M = M w ja x, ja pitaa konstruoida M 0 = M v jolle L(M 0 ) 2 S jos ja vain jos x 2 L(M). (Ja sitten asetetaan f(w111x) = v.) Olkoon M L jokin kiintea kone jolle L(M L ) 2 S. Kone M 0 konstruoidaan parin (M; x) perusteella siten, etta jos x 2 L(M) niin L(M 0 ) = L(M L ) jos x 62 L(M) niin L(M 0 ) = ; mika toteuttaa vaatimukset. 136
137 Kone M 0 on kaksinauhainen ja toimii syotteella z seuraavasti: 1. Kopio merkkijono x kakkosnauhalle. 2. Kakkosnauhaa kayttaen simuloi koneen M laskenta syotteella x 3. Jos simulointi johti hylkaamiseen, hylkaa z. (Tassa vaiheessa syotetta z ei ole vilkaistukaan!) 4. Jos simulointi johti hyvaksymiseen, simuloi koneen M L laskentaa varsinaisella syotteella z; hyvaksy jos M L hyvaksyy. Nyt L(M 0 ) = L(M L ) jos x 2 L(M); muuten L(M 0 ) = ;. Selvasti merkkijonosta v = w111x, missa w on koneen M indeksi, voidaan laskea f(v) joka on kuvatun koneen M 0 indeksi. Huomaa, etta x tulee koodatuksi koneen M 0 sisaan eika ole sen syote. 137
138 z M L x M Koneen M 0 konstruktio Ricen lauseessa 138
139 Muita ratkeamattomuustuloksia ( )/[HMU 9.5] Ricen lause voidaan ilmeisella tavalla siirtaa Turingin koneista koskemaan esim. C-kielisia ohjelmia. Turingin koneiden semanttiset ominaisuudet vastaavat C-ohjelmien syote-tuloste-relaation ominaisuuksia. On siis esim. ratkeamatonta pysahtyyko ohjelma millaan syotteella pysahtyyko ohjelma kaikilla syotteilla tulostaako ohjelma "1" millaan syotteella jne. Turingin koneille on ratkeamatonta, kayko kone annetussa tilassa q 2 Q millaan syotteella. Vastaavasti on ohjelmille on ratkeamatonta suoritetaanko ohjelman rivia numero k millaan syotteella 139
140 Matematiikan ratkeamattomuustuloksia Klassinen tulos (Church, Godel 1930-luvulla) sanoo, etta seuraava ongelma on ratkeamaton: Annettu: luonnollisten lukujen aritmetiikkaa koskeva ensimmaisen kertaluvun logiikan kaava Kysymys: onko tosi Tassa ei menna tarkemmin siihen, miten kaavat ja niiden totuus muodollisesti maaritellaan. Huomataan kuitenkin, etta jos rajoitutaan kaavoihin ilman kertolaskua, ongelma on ratkeava. 140
141 Yllattaen Matijasevitsh 1970 osoitti paljon vahvemmin, etta jo seuraava paljon rajoitetumpi ongelma on ratkeamaton: Annettu: kokonaislukukertoiminen n muuttujan polynomi p(x 1 ; : : : ; x n ) Kysymys: onko olemassa (y 1 ; : : : ; y n ) 2 Z n joilla p(y 1 ; : : : ; y n ) = 0 Itse asiassa Matijasevitsh osoitti viela vahvemmin, etta mille tahansa osittain ratkeavalle luonnollisten lukujen ongelmalle on olemassa kokonaislukukertoiminen polynomi p jolle (x) = 1 jos ja vain jos 9y 1 ; : : : ; y n : p (x; y 1 ; : : : ; y n ) = 0: 141
142 Formaalien kielten ratkeamattomia ongelmia Olkoot G 1 ja G 2 kontekstittomia kielioppeja ja R saannollinen lauseke. Talloin 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 Naiden ratkeamattomuustulosten todistukset sivuutetaan tassa. (Mutta palaamme asiaan lyhyesti myohemmin.) Todetaan kuitenkin, etta ne kaikki voidaan tehda palutuksella Postin vastaavuusongelmasta joka seuraavaksi kaydaan lapi tarkemmin. 142
143 Postin vastaavuusongelma [HMU 9.4] (Post Correspondence Problem, E. Post 1946) Edella on todistettu ratkeamattomuustuloksia vain melko suoraan Turingin koneisiin liittyville ongelmille. Tarkastellaan nyt seuraavaa merkkijonojen jarjestelemiseen liittyvaa ongelmaa: Annettu: Jono merkkijonopareja ((w 1 ; x 1 ); : : : ; (w k ; x k )) missa k 2 N on mielivaltainen ja w i ; x i 2 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 kylla, mika nahdaan indeksijonolla (2; 1; 3; 2; 4). Nimittain w 2 w 1 w 3 w 2 w 4 = abcaaabc = x 2 x 1 x 3 x 2 x 4 : 143
144 Edellisen kalvon esimerkkivastaavuus kuvallisesti: w a b c a a a b c a b c a a a b c x
145 Tekninen huomio: Jotta voisimme esittaa taman ongelman formaalina kielena, meidan pitaa sopia miten merkkijonopari, ja sellaisten muodostama jono, koodataan yhdeksi merkkijonoksi. Eras ilmeinen ratkaisu on laajentaa aakkostoa merkeilla "(", "," ja ")". Monissa yhteyksissa on kuitenkin katevaa, jos pareja ja jonoja voidaan koodata aakkostoa laajentamatta. Kun w = x 1 x 2 : : : x n missa x i 2, maaritellaan ^w = x 1 x 1 x 2 x 2 : : : x n x n ; siis kaikki merkit tuplataan. Kun j j 2, maaritellaan jononmuodostusfunktio h i seuraavasti: h w 1 ; w 2 ; w 3 ; : : : ; w n 1 ; w n i = ^w 1 ab ^w 2 ab ^w 3 ab : : : ^w n 1 ab ^w n missa a ja b ovat mitka tahansa kaksi aakkoston merkkia. Esim. h 101; 01; 10 i = missa on valittu a = 0; b = 1. Nyt h i on helppo laskea ja kuvaa kaikki aakkoston merkkijonojen aarelliset jonot aakkoston merkkijonoiksi. Kaantan jos v = h w 1 ; : : : ; w k i on annettu, niin komponentit w i ovat yksikasitteiset ja helppo loytaa. 145
146 Olkoon nyt j j 2. Maaritellaan formaali kieli PCP seuraavasti: PCP koostuu merkkijonoista h w 1 ; x 1 ; : : : ; w k ; x k i joille on olemassa indeksijono i 1 ; : : : ; i m missa w i1 : : : w im = x i1 : : : x im : Seuraavassa tarvitaan myos modioitua PCP-kielta, jossa vaaditaan, etta sovituksen pitaa alkaa parilla (w 1 ; x 1 ): MPCP koostuu merkkijonoista h w 1 ; x 1 ; : : : ; w k ; x k i joille on olemassa indeksijono i 2 ; : : : ; i m missa w 1 w i2 : : : w im = x 1 x i2 : : : x im : 146
147 Seuraavassa todistetaan Lause 2.18: Kieli MPCP ei ole rekursiivinen. Tasta paastaan alkuperaiseen ongelmaan PCP seuraavan aputuloksen nojalla: Lemma 2.19: MPCP m PCP. Todistus: Harjoitustehtava [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 myos MPCP olisi, vastoin edellista lausetta. 147
148 Kielen MPCP ratkeamattomuus osoitetaan konstruoimalla rekursiivinen palautus f: L u m MPCP universaalikielesta L u. Kaydaan lapi palautuksen konstruktio paapiirteissaan. Pitaa siis maaritella f siten, etta f(v) 2 MPCP jos ja vain jos v 2 L u. Mielenkiintoinen tapaus on se, jossa v = w111x missa w on koodi jollekin Turingin koneelle M. Seuraavassa esitellaan ne parit (w i ; x i ) joille f(v) = h w 1 ; x 1 ; : : : ; w n ; x n i. MPCP-tapauksen kieleksi tulee [ Q [ f # g missa on koneen M nauha-aakkosto, Q sen tilojen joukko ja # symboli joka ei kuulu kumpaankaan. 148
149 MPCP-tapauksen osaratkaisu on indeksijono (i 2 ; : : : ; i n ) missa joko merkkijono w 1 w i2 : : : w in on merkkijonon x 1 x i2 : : : x in alkuosa, tai paivastoin. Siis osaratkaisuja ovat erityisesti ne indeksijonot jotka voidaan taydentaa varsinaisiksi ratkaisuiksi. Osaratkaisulta ei kuitenkaan edellyteta, etta tallainen taydennys olisi olemassa. Esimerkki 2.21: tyhja indeksijono (n = 1) on aina osaratkaisu (edellyttaen etta w 1 on merkkijonon x 1 alkuosa tai kaantaen). 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, silla 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. 149
150 Koneelle M ja syotteelle x konstruoidaan nyt MPCP-tapaus jonka osaratkaisut vastaavat koneen M laskentoja syotteella x. Olkoon tama laskenta q 0 x `M y 1 q 0 1 z 1 `M : : : `M y p q 0 p z p missa q 0 on koneen M alkutila. Esitetaan laskenta kielen [ Q [ f # g merkkijonoina #q 0 x#y 1 q 0 1 z 1#y 2 q 0 2 z 2# : : : #y p q 0 p z p# Nyt MPCP-tapaukselle on kaikilla t = 0; 1; : : : ; p 1 osaratkaisu (i 2 ; : : : ; i n ) missa w 1 w i2 x 1 x i2 w in = #q 0 x#y 1 q1 0 z 1#y 2 q2 0 z 2# : : : #y t qt 0 z t# x in = #q 0 x#y 1 q1 0 z 1#y 2 q2 0 z 2# : : : #y t qt 0 z t#y t+1 qt+1 0 z t+1# 150
151 MPCP-tapaukseen tulee kaikki seuraavanlaiset parit (w; x), missa q on mielivaltainen tila, q F hyvaksyva tila, X ja Y mielivaltaisia nauha-aakkosia ja B tyhjamerkki (siis B 6= #) (A) (#; #q 0 x#) tulee alkupariksi (w 1 ; x 1 ) (B) (a; a) kaikilla a 2 [ f # g (C) (qx; Y p) jos (q; X) = (p; Y; R) (C) (ZqX; pzy ) kaikilla Z 2 jos (q; X) = (p; Y; L) (D) (q#; Y p#) jos (q; B) = (p; Y; R) (D) (Zq#; pzy #) kaikilla Z 2 jos (q; B) = (p; Y; L) (E) (Xq F ; q F ) ja (q F X; q F ) kaikilla q F 2 F, X 2 (F) (q F ##; #) kaikilla q F 2 F Idea on etta (A)-pari esittaa laskennan alun ja (E)- ja (F)-tyyppiset parit lopun. (C)-parit esittavat laskennan siirtymia normaalitilanteessa ja (D)-parit nauhan "reunoilla". (B)-parit kopioivat ne nauhan osat joita siirtyma ei muuta. 151
152 Tarkastellaan esimerkkina Turingin konetta M = (f q 0 ; q 1 ; q 2 ; q 3 g ; f 0; 1 g ; f 0; 1; B g ; ; q 0 ; B; f q 1 g) missa (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 siirtymia ei ole. Kone M hyvaksyy syotteen 01 seuraavasti: q 0 01 ` 1q 2 1 ` 10q 3 ` 1q 2 01 ` 10q 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 yllaolevaa laskentaa simuloiden. 152
153 Merkitaan W = w 1 w i2 : : : w ik ja X = x 1 x i2 : : : x ik missa (i 2 ; : : : ; i k ) on tahan mennessa kasattu osaratkaisu. Aluksi pitaa siis ottaa pari (#; #q 0 01#): W: # X: #q 0 01# Nyt W-merkkijonon peraan pitaa 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#, mika pitaa saada W-merkkijonoon; pitaa 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 # 153
154 Nyt ollaan syotteen 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 pitaa 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 paasty lopputilaan q 1, ja voidaan "syoda" 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# 154
155 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 lisaamalla 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 ## 155
156 Yleisemmin jos M hyvaksyy syotteen x, niin hyvaksyvaa laskentaa vastaa MPCP-tapauksen ratkaisu edellaesitettyyn tapaan. On myos selvaa, etta ainoa mahdollisuus saada osittainen MPCP-ratkaisu on laskennan simuloiminen, ja ainoa tapa saada ratkaisu valmiiksi on paatya laskennassa hyvaksyvaan tilaan. Siis M hyvaksyy 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. 156
157 Esimerkkina 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 ) 6= ; Todistus: Osoitetaan, etta mista tahansa PCP-tapauksesta (w 1 ; x 1 ); : : : ; (w k ; x k ) voidaan muodostaa sellaiset kontekstittomat kieliopit G 1 ja G 2, etta L(G 1 ) \ L(G 2 ) 6= ; jos ja vain jos kyseisella PCP-tapauksella on ratkaisu. Koska PCP on ratkeamaton, tama todistaa vaitteen. Kielioppien G 1 ja G 2 paateaakkostoksi tulee [ f a 1 ; : : : ; a k g, missa on PCP-tapauksen aakkosto (w i ; x i 2 ), ja a i missa i = 1; : : : ; k on uusi symboli ("nimi" parille (w i ; x i )). 157
158 Maaritellaan kielet L A ja L B seuraavasti: L A = f w i1 w i2 : : : w in a in : : : a i2 a i1 j i j 2 f 1; : : : ; k g g L B = f x i1 x i2 : : : x in a in : : : a i2 a i1 j i j 2 f 1; : : : ; k g g 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 2 L A \ L B. Jos z 2 L A \ L B, niin z on muotoa va in : : : a i2 a i1 missa v 2. Lisaksi z 2 L A ) v = w i1 w i2 : : : w in z 2 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 6= ;. 158
159 Pitaa viela 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 valikkeeksi tulee A. Produktioita tulee 2k kappaletta, nimittain A! w i Aa i ja A! w i a i kaikilla i = 1; : : : ; k. Vastaavasti kieliopissa G 2 ainoa valike on B, ja produktioina ovat B! x i Ba i ja B! x i a i kaikilla i = 1; : : : ; k. Selvasti nama kieliopit tayttavat halutut ehdot. 159
160 Luokan RE rakenne ( ) Seuraavan lauseen intuitiivinen tulkinta on, etta universaalikieli L u on "ainakin yhta vaikea" kuin mika tahansa rekursiivisesti lueteltava kieli. Lause 2.24: Jos A 2 RE niin A m L u. Todistus: Olkoon A 2 RE; siis A = L(M) jollain M. Olkoon w koneen M koodi. Maaritellaan f(x) = w111x kaikilla x. Selvasti f on rekursiivinen. Koska x 2 A jos ja vain jos f(x) 2 L u, funktio f on haluttu palautus A m L u. Koska lisaksi L u itse on rekursiivisesti lueteltava, sanomme etta L u on "maksimaalisen vaikea" rekursiivisesti lueteltavien kielten joukossa. Seuraavaksi formalisoimme taman kayttaen RE-taydellisyyden kasitetta. 160
161 Maaritelma Jos C on kokoelma aakkoston kielia, sanomme etta kieli A on C-taydellinen rekursiivisten palautusten suhteen jos 1. A 2 C ja 2. B m A kaikilla B 2 C. Yleensa on selvaa millaisista palautuksista puhutaan, jolloin sanotaan yksinkertaisesti, etta A on C-taydellinen. Siis C-taydelliset ongelmat ovat luokan C maksimaalisen vaikeita ongelmia. Esimerkki 2.25: L u on RE-taydellinen. 161
162 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 2 C ja B m A jollain C-taydellisella B, niin A on C-taydellinen. Todistus: Jos C 2 C, niin C m B (koska B on C-taydellinen) joten C m A (transitiivisuus). Esimerkki 2.28: Kun todistimme, etta epatyhjyysongelma L ne ei ole rekursiivinen, teimme sen muodostamalla palautuksen L u m L ne. Koska lisaksi L ne 2 RE, niin L ne on RE-taydellinen. 162
163 Lisaa esimerkkeja: Ricen lauseen todistuksessa osoitettiin, etta L u m L S milla tahansa ei-triviaalilla semanttisella ongelmalla S. Siis jos ei-triviaali L S ylipaansa on rekursiivisesti lueteltava, se on RE-taydellinen. Toisaalta jos A on rekursiivinen, niin A m B mille tahansa B kunhan B 6= ; ja B 6=. Siis rekursiiviset kielet ovat "maksimaalisen helppoja". Yleisesti kaikista "luonnollisista" rekursiivisesti lueteltavista kielista osoittautuu, etta ne ovat joko rekursiivisia tai RE-taydellisia. On kuitenkin mahdollista konstruoida esimerkkeja RE-kielista, joiden vaikeus on naiden kahden aaripaan valilla: Lause 2.29: Luokassa RE REC on kielia jotka eivat ole RE-taydellisia. 163
164 Vastaavasti voidaan puhua luokan co-re = A j A 2 RE taydellisista kielista. Lause 2.30: Kieli A on RE-taydellinen jos ja vain jos A on co-re-taydellinen. Todistus: Maaritelman mukaan A 2 RE jos ja vain jos A 2 co-re. Jos f on palautus B m A, niin se on samalla palautus B m A. 164
165 Kielet A ja B ovat rekursiivisesti isomorset jos f: A m B jollain bijektiolla f:!. Lause 2.31: Kaikki RE-taydelliset kielet ovat keskenaan rekursiivisesti isomorsia. Siis RE-taydelliset kielet ovat kaikki "samoja" modulo merkkijonojen rekursiivinen uudelleenjarjestaminen. Laskennallisten ongelmien vaativuusluokat jatkuvat (pitkalle) RE- ja co-re-taydellisten kielten ulkopuolelle. Esim. totaalisuusongelma L tot = f w 2 f 0; 1 g n j M w pysahtyy kaikilla syotteillag jaa luokan RE [ co-re ulkopuolelle. 165
166 kaikki funktiot RE-tayd. co-re-tayd. RE co-re REC Funktioiden laskettavuusluokkia kuvannollisesti 166
167 Yhteenveto laskettavuudesta monet tarkeat ongelmat ovat ratkeamattomia kieli REC? RE? co-re? universaalikieli L u ei on ei pysahtymisongelma H ei on ei epatyhjyysongelma L ne ei on ei tyhjyysongelma L e ei ei on totaalisuusongelma L tot ei ei ei ratkeamattomat ongelmat matematiikassa ja formaaleissa kielissa universaalien laskennan mallien ekvivalessin perusteella tulokset siirtyvat koskemaan RAM-mallia, ohjelmointikielia,... jos hyvaksymme Churchin-Turingin teesin, tama kertoo siita mita missaan realistisessa mallissa on mahdollista laskea Perustekniikka: Osoitetaan A 62 REC todistamalla B m A jollain tunnetulla B 62 REC; vastaavasti A 62 RE 167
168 3. Laskennan vaativuusteoriaa Siirrymme tarkastelemaan, mita laskennallisia ongelmia voidaan ratkaista tehokkaalla algoritmilla [HMU luku 10]. Taman luvun jalkeen opiskelija tuntee laskennallisen vaativuuden peruskasitteet ja osaa soveltaa niita tuttuihin algoritmeihin tuntee NP-taydellisyyden teknisen maaritelman ja kaytannon merkityksen tunnistaa tyypilliset NP-taydelliset ongelmat osaa laatia yksinkertaisia NP-taydellisyystodistuksia 168
169 Tahan asti on puhuttu siita, mita on mahdollista laskea "aarellisessa ajassa". Nyt siirrymme tarkastelemaan laskemista "kohtuullisessa ajassa". Maarittelemme pian peruskasitteet tasmallisesti. Sovellettaessa teoreettisia tuloksia kaytannon tilanteisiin on syyta miettia tarkasti, onko tama teoreettinen maaritelma hyva formalisointi sille, mita sovelluksessa oikeasti voidaan pitaa "kohtuullisena". Kaikki tassa luvussa kasiteltavat ongelmat (kuten kursseilla Tietorakenteet jne. kohdatutkin) ovat selvasti ratkeavia. Ne ovat siis laskettavuuden teorian kannalta ekvivalentteja (ja "helppoja"). Laskennan vaativuusteoriassa pyrimme tavallaan loytamaan luokan REC ("helpot" ongelmat) sisalla "hienorakennetta": jotkin ratkeavat ongelmat ovat kuitenkin jossain mielessa helpompia, jotkin vaikeampia. Laskennan vaativuusteoria on tutkimuksen kannalta jossain mielessa vaikeampaa kuin laskettavuuden teoria: monet perustavanlaatuiset kysymykset ovat viela avoinna. 169
170 Keskeinen kysymyksenasettelu Laskennan vaativuusteorian peruskysymykset ovat intuitiivisesti seuraavan tyyppisia (ajan sijaan voidaan puhua muistista tms.): Annettu laskennallinen ongelma A ja aikaraja T. Voiko ongelman A ratkaista ajassa T (tai alle)? (ylaraja aikavaativuudelle) Annettu laskennallinen ongelma A ja aikaraja T. Vieko ongelman A ratkaiseminen valttamatta vahintaan ajan T? (alaraja aikavaativuudelle) Ylarajoja todistetaan tyypillisesti laatimalla tehokas algoritmi ja analysoimalla sen aikavaativuus. Tietojenkasittelytieteilijat ovat hyvia tassa. Alarajojen todistaminen on vaikeaa. Tyypillisesti se onnistuu vain jos ongelma A on sopiva keinotekoinen ongelma (esim. diagonalisoimalla saatu) tai tehdaan lisarajoituksia sille, millaiset algoritmit ovat sallittuja (esim. O(n log n)-alaraja jarjestamiselle). Ideaalitapauksessa yla- ja alaraja yhtyvat, jolloin on loydetty optimaalinen algoritmi. 170
171 Deterministinen aikavaativuus Sovellamme Tietorakenteista yms. tuttua algoritmin aikavaativuuskasitetta Turingin koneisiin [HMU , ]. Olkoon M deterministinen (mutta mahdollisesti moninauhainen) Turingin kone. Jos syotteella x 2 kone M tekee tasan k laskenta-askelta ja pysahtyy, merkitsemme steps M (x) = k: Jos laskenta ei pysahdy, niin steps M (x) = 1. Koneen M aikavaativuus on funktio time M : N! N [ f 1 g, jolla time M (n) = max f steps M (x) j jxj = n g : Siis koneen aikavaativuus on T, jos millaan pituutta n olevalla syotteella kone kone ei laske yli T(n) askelta, ja T on pienin mahdollinen jolle tama patee. Koneen M aikavaativuus on polynominen, jos jollakin polynomilla p patee time M (n) p(n) kaikilla n. 171
172 Huomioita aikavaativuuden maaritelmasta Aikavaativuuden polynomisuus voitaisiin yhtapitavasti ilmaista vaatimalla, etta jollakin k 2 N patee time M (n) n k + k kaikilla n tai etta jollakin l patee time M (n) = O(n l ): Yleensa ei tarkastellakaan tarkkaa aikavaativuutta time M, vaan jotain ylarajaa T jolla time M (n) = O(T(n)). [O-notaatio: ks. Tietorakenteet] Kaytamme tassa pahimman tapauksen aikavaativuutta eli kullakin n tarkastelemme vaikeinta syotetta, jonka pituus on n. On mahdollista tarkastella myos keskimaaraisen tapauksen aikavaativuutta, mutta tama on teknisesti vaikeaa ja edellyttaa usein eparealistisia oletuksia syotteen jakaumasta. Voimme vastaavasti maaritella koneen M tilavaativuuden space M (n), joka on suurin koneen kayttama nauhapaikkojen lukumaara kun syotteen pituus on n. 172
173 Tarkeita deterministisia vaativuusluokkia Ryhmittelemme paatosongelmia niiden vaatimien laskentaresurssien mukaan. Paatosongelma A kuuluu luokkaan P, jos se voidaan tunnistaa polynomisessa ajassa, eli A = L(M) jollain deterministisella M jonka aikavaativuus on polynominen. Formaalisti P = L(M) j M deterministinen, time M (n) = O(n k ) jollain k : Paatosongelma A kuuluu luokkaan E, jos A = L(M) jollain M jonka aikavaativuus on korkeintaan eksponenttifunktio. Formaalisti E = L(M) j M deterministinen, time M (n) = O(2 nk ) jollain k : Paatosongelma A kuuluu luokkaan PSPACE, jos se voidaan tunnistaa polynomisessa tilassa, eli A = L(M) jollain M jonka tilavaativuus on polynominen. Formaalisti PSPACE = L(M) j M deterministinen, space M (n) = O(n k ) jollain k : 173
174 Huomautuksia vaativuusluokista Kaikki vaativuusluokat ovat triviaalisti rekursiivisten kielten luokan REC aitoja osajoukkoja. Selvasti P E. On mahdollista osoittaa, etta P 6= E, mutta tama ei ole mitenkaan ilmeista. On melko helppo osoittaa, etta P PSPACE ja PSPACE E. Ei tiedeta, pateeko P = PSPACE tai PSPACE = E. (Arvellaan, etta kumpikaan ei pade.) Kun sanotaan, etta ongelman aikavaativuus on "eksponentiaalinen", tarkoitetaan yleensa, etta aikavaativuus on vahintaan 2 cn jollain c > 0, eika kuulumista luokkaan E. Maarittelemme jatkossa myos epadeterministisiin Turingin koneisiin perustuvat vaativuusluokat NP jne. jotka ovat myos tarkeita. Kirjallisuudesta loytyy runsaasti muitakin vaativuusluokkia ("structural complexity theory"). 174
175 Tila- ja aikavaativuus eri laskennan malleissa Jos A = L(M) moninauhaisella Turingin koneella M, niin A = L(N) missa 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 esitetyissa universaaleissa laskennan malleissa aika- ja tilavaativuudet (kun ne maaritellaan jarkevasti) ovat polynomisesssa suhteessa: ts. jos jokin ongelma ratkeaa jossain mallissa ajassa t(n) niin missa tahansa toisessa mallissa se ratkeaa ajassa O(t(n) k ) jollain vakiolla k (joka riippuu kaytetyista malleista, mutta ei ongelmasta). Johtopaatos: luokat P, E ja PSPACE eivat ole kovin herkkia sille, mita laskennan mallia kaytetaan. 175
176 Usein ajatellaan, etta polynomisessa ajassa ratkeavat ongelmat ovat "kaytannossa ratkeavia". Mahdollista kritiikkia: Jos vaativuus on esim. luokkaa n 100 niin ongelma ei varmaan ole kaytannossa ratkeava. Kommentti: harvoja poikkeuksia lukuunottamatta ei tunneta kaytannon esimerkkeja joissa aikavaativuus olisi polynominen mutta korkeaa astetta Kaytannossa syotteen koolla on jokin aarellinen ylaraja, joten ei-polynomisuus ei ole ongelma Kommentti: nain voi olla jos ylaraja on riittavan pieni; tyypilliset ei-polynomiset aikavaativuusfunktiot kuitenkin kasvat nopeasti jo melko pienilla n. Pahin tapaus ei kerro koko totuutta. Kommentti: voi hyvin pitaa paikkansa, mutta esim. keskimaaraisen tapauksen analyysi vaikeaa ja usein edellyttaa kyseenalaisia oletuksia. Johtopaatos: yleensa "polynomisuus = tehokkuus" mutta mallin rajoituksia pitaa harkita tapauskohtaisesti 176
177 Esimerkkeja polynomisista ja ei-polynomisista ongelmista Ennen yleisempia teoriatarkasteluja katsotaan joitain tyypillisia esimerkkeja ongelmista ja niiden vaativuudesta kaikki nama ongelmat ratkeavia (nahdaan helposti) paakysymys: mitka niista ratkeavat polynomisessa ajassa osoittautuu, etta tama on yllattavan vaikea kysymys Kuten ratkeavuustarkasteluissa, meidan pitaa tehda joitain teknisia esitysmuoto-oletuksia. luokat P, PSPACE ja E maaritelty luokkina formaaleja kielia ts. formaalisti ongelmien syotteet ovat merkkijonoja kaytannon ongelmissa syotteet ovat verkkoja, loogisia kaavoja, joukkoja jne. ) taytyy sopia syotteiden esittamisesta merkkijonoina 177
178 Esimerkki: suunnattu verkko Kurssilla Tietorakenteet opittuun tapaan suunnattu verkko G = (V; E) voidaan esittaa esim. vierusmatriisina tai vieruslistana. a b c Vierusmatriisi A a = v 1, b = v 2, c = v 3 A(i; j) = 1 joss (v i ; v j ) 2 E Vieruslista ((2; 3); (); (1)) Alilista i sisataa ne j joilla (v i ; v j ) 2 E V = f a; b; c g E = f (a; b); (a; c); (c; a) g Vierusmatriisi tai vieruslista voidaan esittaa merkkijonona silla tavalla kuin tallaisia rakenteita koodataan esim. ASCII-jonoiksi normaalisssa ohjelmoinnissa. 178
179 Kun sanomme etta jokin esim. verkkoja koskeva paatosongelma ratkeaa polynomisessa ajassa, tarkoitamme etta vastaava merkkijonoesityksista koostuva formaali kieli kuuluu luokkaan P. Jatkossa ei kiinniteta huomiota esitystavan yksityiskohtiin, vaan oletetaan se tehdyksi jollain "jarkevalla" tavalla. Lopputulos on, etta muodollinen maaritelma on sama kuin esim. kurssilta Tietorakenteet tuttu polynominen aikavaativuus Pitaa kuitenkin muistaa, etta aikavaativuus maaritellaan syotteen pituuden suhteen. Siis "jarkeva" pitaa sisallaan sen, etta syotteen koko ei kasva liikaa Huom. tarkea erikoistapaus: luonnollisen luvun n koodin pituus on O(log n) (esim. binaariesitys blog 2 nc + 1 bittia) 179
180 Esimerkkeja verkko-ongelmista vierusmatriisiesityksen koko on O(n 2 ), vieruslistaesityksen koko O(n + m) = O(n 2 ) missa n = jv j ja m = jej (huom. m = O(n 2 )) ) verkon tapauksessa oletetaan, etta syotteen pituus on polynominen verkon solmujen lukumaaran n suhteen siis ongelmaa vastaavan formaalin kielen kuuluminen luokkaan P tarkoittaa samaa kuin etta ongelma ratkeaa solmujen lukumaaran 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 etsinta 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. nama on tassa muotoiltu paatosongelmina; palaamme pian kysymykseen etsinta- ja optimointiongelmista 180
181 Eulerin keha (Euler tour) Verkko Eras Eulerin keha Eulerin keha on polku, joka kayttaa verkon jokaista kaarta tasan kerran ja palaa lahtopisteeseensa Kysymys "Onko annetussa suuntaamattomassa verkossa Eulerin keha?" ratkeaa polynomisessa ajassa Ratkaisu perustuu havaintoon, etta Eulerin keha on olemassa, jos ja vain jos verkko on yhtenainen ja jokaisen solmun aste on parillinen (Euler 1736). 181
182 Hamiltonin keha (Hamiltonian Circuit, HC) Verkko Eras Hamiltonin keha Hamiltonin keha on polku, joka kay jokaisessa solmussa tasan kerran ja palaa lahtopisteeseensa. Ongelmalle "Onko annetussa suuntaamattomassa verkossa Hamiltonin keha?" ei tunneta polynomisessa ajassa toimivaa algoritmia. Pidetaan luultavana, ettei tallaista algoritmia ole olemassa, eli etta HC 62 P. 182
183 Hamiltonin keha -ongelmalle on seuraava (erittain) naiivi ratkaisualgoritmi: Olkoon G = (V; E) missa V = f v 1 ; : : : ; v n g. 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 ) 2 E kun j = 1; : : : ; n 1 ja (u n ; u 1 ) 2 E niin palauta "kylla" Palauta "ei". Algoritmi toimii selvasti polynomisessa tilassa; siis HC 2 PSPACE Tarkistettavia permutaatioita on n! kappaletta, yhden tarkistus sujuu selvasti polynomisessa ajassa. Koska (n=2) n=2 n! n n ; niin HC 2 E, mutta taman algoritmin aikavaativuus ei ole polynominen. Itse asiassa HC on NP-taydellinen ongelma, mista lisaa pian. 183
184 Paatosongelmaan HC liittyy myos ilmeinen etsintaongelma: Syote: suuntaamaton verkko G = (V; E) Tuloste: jokin verkon G Hamiltonin keha H E jos olemassa; "ei ole" muuten Oletetaan nyt, etta funktio DecideHC(G) ratkaisee paatosongelman HC, ts. palauttaa tosi joss verkossa G on Hamiltonin keha. Talloin seuraava algoritmi FindHC ratkaisee yo. etsintaongelman: FindHC(V; E): /* Olkoon E = f e 1 ; : : : ; e m g. */ H := E; for i := 1 to m do if DecideHC(V; H f e i g) then H := H f e i g; return polku joka koostuu joukon H kaarista; Erityisesti jos olisi HC 2 P, niin myos etsintaongelma ratkeaisi polynomisessa ajassa. Toisaalta jos HC 62 P kuten luullaan, niin etsintaongelma ei tietenkaan ratkea polynomisessa ajassa. 184
185 Alkulukutestaus Luonnollinen luku n 2 on alkuluku jos luvun n ainoat tekijat ovat 1 ja n. Maaritellaan paatosongelma PRIMES = f n 2 N j n alkuluku g : Ongelmalle PRIMES on askettain loydetty polynomisessa ajassa toimiva ratkaisualgoritmi ("PRIMES is in P", M. Agrawal, N. Kayal ja N. Saxena, 2002). Aikavaativuuspolynomi on korkeaa astetta, kaytannossa 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. Tama ei kuitenkaan auta jos n on esim bittinen, siis n Tassa tapauksessa etsintaongelma nayttaisi olevan vaikeampi kuin paatosongelma. Edelleenkaan ei osata tehokkaasti jakaa lukua alkutekijoihin. Tehokas algoritmi tekijoihin jaolle murtaisi monet salausmenetelmat. 185
186 Yleistettyja lautapeleja 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 epatriviaaleja oletuksia saantojen yksityiskohdista.) 186
187 Epadeterministiset vaativuusluokat [HMU , ] Maarittelemme nyt epadeterministisen Turingin koneen aika- ja tilavaativuuden. Tama on hyodyllinen kasite ongelmien analysoimisessa; ei realistinen mitta ongelman ratkaisuajalle "oikeilla" tietokoneilla. Annetun yksittaisen laskennan aika- ja tilavaativuus voidaan maaritella kuten deterministisessa tapauksessa. Epadeterministisella koneella N voi syotteella x olla useita mahdollisia laskentoja, joten maaritellaan steps N (x) = koneen N pisimman laskennan pituus syotteella x: Aikavaativuusfunktio on kuten ennenkin time N (n) = max f steps N (x) j jxj = n g : Vastaavasti space N (n) on suurin tila, joka voidaan kayttaa pituutta n olevalla syotteella. 187
188 Epadeterministisen Turingin koneen N laskentaa syotteella x on usein hyodyllista ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtina tilanteet joista ei siirtymaa, erityisesti hyvaksyvat tilanteet : : : qyes : : : : : : qyes : : : solmun vqw jalkelaisia ne v 0 q 0 w 0 joilla vqw `N v 0 q 0 w 0 : : : qyes : : : N hyvaksyy syotteen x joss puussa ainakin yksi hyvaksyva lehti. 188
189 Jos time N (x) = t, laskentapuussa kork. d t solmua missa d suurin maara seuraajia millaan yksittaisella tilanteella. Haarautumisasteelle d saadaan triviaali ylaraja d 2j jjqj, joka riippuu koneen N rakenteesta mutta ei syotteesta x. Maaritelman mukaan aikavaativuus maaraytyy puun pisimman haaran mukaan. Tama voi tuntua ei-intuitiiviselta, mutta itse asiassa ei ole oleellista. Seuraava lause naet osoittaa, etta jos lyhimman hyvaksyvan polun pituudelle tunnetaan ylaraja, laskennasta voidaan karsia kaikki tata pitemmat haarat. Tunnistettu kieli pysyy samana, ja karsinnan toteuttamisesta tulee korkeintaan neliollinen lisaaikarasite. 189
190 Lause 3.1: Jos A = L(N) missa N on yksinauhainen epadeterministinen Turingin kone ja jokaisella x 2 A koneen N lyhimman hyvaksyvan laskennan pituus on O(jxj k ), niin A = L(N 0 ) missa N 0 on yksinauhainen epadeterministinen Turingin kone ja time N (x) = O(jxj 2k ). Todistushahmotelma Muodostetaan ensin kaksinauhainen N 00, joka aluksi kirjoittaa kakkosnauhalle O(jxj k ) nollaa ja sen jalkeen simuloi konetta N kayttaen kakkosnauhaa kaskylaskurina (vrt. harj. 4, teht. 4). Tama kaksinauhainen kone toimii ajassa O(n k ), joten sita voidaan simuloida yksinauhaisella ajassa O(n 2k ). 190
191 Tarkeita epadeterministisia vaativuusluokkia Paatosongelma A kuuluu luokkaan NP (nondeterministic polynomial time), jos se voidaan tunnistaa epadeterministisella Turingin koneella. jonka aikavaativuus on polynominen. Formaalisti NP = L(N) j N epadeterministinen, time N (n) = O(n k ) jollain k : Kuten deterministisessa tapauksessa, voidaan maaritella myos NE = L(N) j N epadeterministinen, time N (n) = O(2 nk ) jollain k NPSPACE = L(N) j N epadeterministinen, space N (n) = O(n k ) jollain k : Koska deterministiset koneet ovat epadeterminististen erikoistapaus, on triviaalisti P NP jne. Itse asiassa voidaan osoittaa PSPACE = NPSPACE, joten epadeterministinen tilavaativuus ei yleensa ole kiinnostavaa. Sen sijaan kysymys, pateeko P 6= NP, on avoin. 191
192 Sivulla 49 esitetysta laskelmasta seuraa, etta jos A 2 NP, niin A voidaan tunnistaa deterministisella Turingin koneella ajassa O(2 p(n) ) jollakin polynomilla p. Tama laskelma perustuu oleellisesti edellaesitetyn laskentapuun lapikaymiseen leveyssuuntaisesti. Periaatteessa on mahdollista, etta on jokin tehokkaampikin tapa simuloida epadeterministisia laskentoja. Oleellisesti tehokkaampaa tapaa ei kuitenkaan tunneta, eika sellaisen loytymista pideta todennakoisena. Toisin sanoen arvellaan, etta luokan NP "vaikeimmat" ongelmat todella vaativat eksponentiaalisen laskenta-ajan (realistisissa laskennan malleissa). Ennen taman ajatuksen tarkempaa tutkimista tarkastellaan, millaisia ongelmia luokassa NP on. 192
193 Esimerkki: Hamiltonin keha Osoitetaan, etta HC 2 NP. Tehdaan ensin pseudokoodiesitys "epadeterministiselle algoritmille", joka toimii polynomisessa ajassa ja ratkaisee ongelman HC. Maaritellaan ensin normaali deterministinen apuproseduuri CheckHC(V; E; Q), joka tarkistaa onko annettu solmujono Q Hamiltonin keha verkossa (V; E): CheckHC(V; E; Q): /* Olkoon Q = (u 1 ; : : : ; u m ). */ if m 6= jv j or f u 1 ; : : : ; u m g 6= V then return false; if (u m ; u 1 ) 62 E then return false; for i := 1 to m 1 do if (u i ; u i+1 ) 62 E then return false; return true Selvasti CheckHC toimii polynomisessa ajassa. 193
194 Hamiltonin keha -ongelmalle saadaan nyt seuraava epadeterministinen algoritmi: HC(G): 1. Olkoon G = (V; E) ja jv j = n. 2. Arvaa epadeterministisesti solmujono Q = (u 1 ; : : : ; u n ) 2 V n. 3. Jos CheckHC(V; E; Q) = true niin hyvaksy, muuten hylkaa. Tama toimii polynomisessa ajassa, ja on epadeterministinen algoritmi ongelmalle HC koska 1. jos G 2 HC niin jokin arvaus Q johtaa hyvaksymiseen ja 2. jos G 62 HC niin kaikki arvaukset Q johtavat hylkaamiseen. 194
195 Maaritelmien konkretisoimiseksi kaannetaan viela tama pseudokoodi Turingin koneeksi. Koodataan syote G = (V; E), missa V = f v 1 ; : : : ; v n g ja E = f (v i1 ; v j1); : : : ; (v im ; v jm ) g, aakkoston f 0; 1; g merkkijonona ^n ^i1 ^j1 ^i2 ^j2 : : : ^ im missa ^i on luvun i binaariesitys. Tama esitys on helppo muodostaa vieruslistasta tai -matriisista. Esim. jos V = f a; b; c; d g ja E = f (a; b); (a; c); (b; c); (c; d) g niin koodataan a 7! 1, b 7! 10, c 7! 11 ja d 7! 100 ja esitykseksi tulee ^ jm
196 Kielen HC tunnistava kone N on kaksinauhainen ja toimii seuraavasti: 1. Kirjoita kakkosnauhalle epadeterministisesti jokin merkkijono v 2 f 0; 1; g, jonka pituus on korkeintaan n 2 + n Olkoon v = w 1 w 2 : : : w n missa w i 2 f 0; 1 g ja n = jv j; jos v ei ole tata muotoa niin hylkaa. 3. Jos jollain i = 1; : : : ; n koodi ^i esiintyy merkkijonossa v kaksi kertaa tai ei esiinny lainkaan, hylkaa. 4. Jos syote ei sisalla merkkijonoa w 1 w n eika w n w 1, niin hylkaa. 5. Jos jollain i = 1; : : : ; n 1 syote ei sisalla merkkijonoa w i w i+1 eika w i+1 w i niin hylkaa (huom. suuntaamaton verkko, jompi kumpi suunta riittaa) 6. Muuten hyvaksy. 196
197 Askelten perusteella kone N hyvaksyy syotteen, jos ja vain jos nauhalle 2 generoitu merkkijono v esittaa jotain Hamiltonin polkua verkossa G. Triviaalisti tallainen merkkijono v on olemassa, jos ja vain jos G 2 HC. Toisin sanoen koneella N on hyvaksyvia laskentoja, jos ja vain jos G 2 HC. Kone N toimii selvasti polynomisessa ajassa: Askel 1 vie ajan O(n 2 ). Askelet 2 ja 3 menevat samoin ajassa O(n 2 ). Askelissa 4 ja 5 pitaa oleellisesti kayda lapi syotteeseen koodattu verkon G vieruslista n kertaa, mika vie karkeasti ajan O(n 3 ). Siis N on polynomisessa ajassa toimiva epadeterministinen Turingin kone, joka ratkaisee Hamiltonin keha -ongelman, joten HC 2 NP. Kaytannossa ongelman kuuluminen luokkaan NP voidaan tehda korkean tason pseudokoodilla, kunhan ymmarretaan mita "epadeterministinen arvaaminen" tarkoittaa. 197
198 Propositiologiikan toteutuvuusongelma (Satisability, SAT) Otetaan viela esimerkkina yksi tarkea luokan NP ongelma. [HMU , ] Propositiologiikan kaava muodostuu loogisista konnektiiveista _, ^ ja :, sulkumerkeista ( ja ), vakiosymboleista 0 ja 1 seka muuttujasymboleista x i, i = 1; 2; 3; : : :, tuttuun tapaan; esim. x 4 _ :(x 7 ^ x 1 ). Kaavat voidaan ilmeisella tavalla esittaa aakkoston f _; ^; :; (; ); 0; 1; x g merkkijonoina; esim. x100 _ :(x111 ^ x1). Kaavan totuus maaritellaan tuttuun tapaan; 0 = epatosi ja 1 = tosi. Jos (x 1 ; : : : ; x n ) on muuttujia x 1 ; : : : ; x n sisaltava kaava ja (v 1 ; : : : ; v n ) 2 f 0; 1 g 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 ) 2 f 0; 1 g n. 198
199 Maaritellaan nyt propositiologiikan toteutuvuusongelma SAT = f j on toteutuva g : Toteutuvuusongelma voidaan helposti ratkaista epadeterministisesti polynomisessa ajassa: 1. Lue (x 1 ; : : : ; x n ). 2. Arvaa epadeterministisesti (v 1 ; : : : ; v n ) 2 f 0; 1 g n. 3. Jos (v 1 ; : : : ; v n ) = 1 niin hyvaksy; muuten hylkaa. Siis SAT 2 NP. 199
200 Luokan NP ongelmien yleinen luonne ( ) Edellisia esimerkkeja yleistaen voidaan osoittaa, etta mika tahansa luokan NP ongelma A voidaan ratkaista seuraavan tyyppisella proseduurilla: A(x): 1. Olkoon n = jxj. 2. Arvaa epadeterminisesti y, missa jyj = p(n) jollain polynomilla p. 3. Jos CheckA(x; y) = true niin hyvaksy, muuten hylkaa. Tassa CheckA(x; y) on jokin deterministinen, polynomisessa ajassa toimiva proseduuri. Emme tassa todista, miksi kaikki epadeterminismi voidaan talla tavoin rajoittaa alussa tapahtuvaan arvausvaiheeseen, mutta tarkastelemme hieman asian tulkintaa. 200
201 Jos x ja y ovat sellaisia, etta edellisen sivun merkinnoilla CheckA(x; y) = true, niin sanomme etta y on todiste sille, etta x 2 A. Esim. SAT-ongelman tapauksessa jos (x 1 ; : : : ; x n ) 2 SAT, niin taman seikan todisteita ovat sellaiset (v 1 ; : : : ; v n ) 2 f 0; 1 g n joilla (v 1 ; : : : ; v n ) = 1. Jotta edellisen sivun konstruktio todella osoittaisi A 2 NP, seuraavien ehtojen on oltava voimassa: 1. jos x 2 A, niin talle on jokin polynomisen kokoinen todiste, 2. jos x 62 A, niin mikaan y ei todista x 2 A ja 3. kysymys "todistaako y, etta x 2 A" voidaan annetuilla x ja y ratkaista deterministisesti polynomisessa ajassa. Intuitiivisesti luokan NP ongelmat siis ovat sellaisia, etta niiden "kylla"-tapauksille on suhteellisen pienet todisteet, ja annettu todiste on helppo tarkastaa. Ongelma on siina, etta potentiaalisia todisteita on 2 p(n) kappaletta. 201
202 Epadeterminismi vs. satunnaislaskenta ( ) Miten sivulla 196 esitetyn tyyppinen algoritmi voidaan suorittaa "oikealla" tietokoneella? Oletetaan y 2 f 0; 1 g. Ilmeisimmat vaihtoehdot: Vaihtoehto 1: Kaydaan lapi kaikki y 2 f 0; 1 g p(n). saadaan varmasti oikea vastaus pitaa kayda lapi 2 p(n) mahdollisuutta (paljon!) Vaihtoehto 2: Valitaan y 2 f 0; 1 g p(n) satunnaisesti tasaisesta jakaumasta aikavaativuus sama kuin epadeterministisen algoritmin aikavaativuus jos x 62 A, vastaa aina oikein jos x 2 A, vastaa oikein ainakin todennakoisyydella 1=2 p(n) (pieni!) jos halutaan aina oikea vastaus ainakin todennakoisyydella 1=2, pitaa suorittaa 2 p(n) 1 riippumatonta toistoa (monta!) 202
203 P = NP -ongelma Paasemme nyt vihdoin kysymykseen, mita (jos mitaan) tieto A 2 NP kertoo ongelman A deterministisesta aikavaativuudesta. laskettavuusteoria: mika voidaan tunnistaa epadeterministisella Turingin koneella, voidaan tunnistaa myos deterministisella Turingin koneella vaativuusteoria: koskeeko sama tunnistamista polynomisessa ajassa; ts. pateeko P = NP? kysymys ollut kiivaan tutkimuksen kohteena vuodesta 1971 (Stephen Cook, "The complexity of theorem-proving procedures"), yha avoin intuitiivisesti P = NP olisi hyvin yllattava tulos, koska em. tulkinnan mukaan se tarkoittaisi, etta todiste voidaan loytaa eksponentiaalisesta etsintaavaruudesta polynomisessa ajassa P = NP patee jos ja vain jos jokin NP-taydellinen ongelma (esim. HC, SAT) ratkeaa polynomisessa ajassa; siirrytaan tarkastelemaan naita. 203
204 Polynomiset palautukset ja NP-taydellisyys [HMU , ] Polynomisen palautuksen idea on sama kuin rekursiivisen palautuksen, paitsi etta 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, merkitaan f: A p m B, jos f on laskettavissa polynomisessa ajassa ja x 2 A, f(x) 2 B kaikilla x 2 : Jos tallainen f on olemassa, sanotaan etta kieli A palautuu polynomisesti kieleen B ja merkitaan A p m B. Lemma 3.2: Olkoon S jokin vaativuusluokista P; NP; PSPACE; E; NE. Jos A p m B ja B 2 S, niin A 2 S. Todistus: Helppo. 204
205 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) 205
206 Olkoon C P( ) luokka aakkoston kielia. Jatkossa yleensa C = NP, mutta myos tapaukset C = PSPACE ja C = E (jne.) ovat kiinnostavia. Kieli A on C-taydellinen polynomisten palautusten suhteen jos 1. A 2 C ja 2. B p m A kaikilla B 2 C Kieli A on C-kova polynomisten palautusten suhteen jos B p m A kaikilla B 2 C. Siis C-kova ongelma on ainakin yhta vaikea kuin mika tahansa luokan C ongelma. Luokan C maksimaalisen vaikeat ongelmat ovat C-taydellisia. Yleensa puhutaan vain "NP-taydellisyydesta" jne. ja yhteydesta selviaa etta puhutaan polynomisista palautuksista (mutta muunkinlaisia palautuksia esiintyy vaativuusteoriassa). 206
207 Taydellisten 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 lisaksi B 2 NP, niin B on talloin NP-taydellinen. Korollaari 3.5: [HMU Thm 10.5] Jos A on C-kova ja A 2 P, niin C P. Erityisesti jos jollakin NP-taydellisella ongelmalla on polynomisessa ajassa toimiva ratkaisu, niin P = NP (mita siis ei pideta luultavana). 207
208 Huomautuksia NP-taydellisyydesta ym. Jos A ei ole paatosongelma (vaan esim. etsintaongelma), sanotaan etta A on NP-kova, jos polynomisen algoritmin olemassaolosta ongelmalle A seuraisi P = NP. Sen sijaan muita kuin paatosongelmia ei pida sanoa NP-taydellisiksi. Kaikilla vaativuusluokilla C ei ole taydellisia ongelmia. Voi esim. olla olemassa paattymaton jono yha vaikeampia ongelmia A 0 p m A 1 p m A 2 p m : : : ; missa A i 2 C ja A i+1 6 p m A i kaikilla i. Kaikilla tahan mennessa esitellyilla luokilla kuitenkin on taydellisia ongelmia. Seuraavana tavoitteena on osoittaa, etta edella mainittu toteutuvuusongelma SAT on NP-taydellinen. Tata ennen luodaan alustava katsaus siihen, millaisia NP-taydellisia ongelmia tunnetaan. 208
209 Esimerkkeja NP-taydellisista ongelmista Toteutuvuus (Satisability, SAT) Annettu: propositiologiikan kaava Kysymys: onko toteutuva Hamiltonin keha (Hamiltonian Circuit, HC) Annettu: suuntaamaton verkko G Kysymys: onko verkossa G Hamiltonin keha Kauppamatkustajan ongelma (Travelling Salesman Problem, TSP) Annettu: suuntaamaton verkko G, painot c(u; v) 2 N kaikille kaarille (u; v) 2 E, luonnollinen luku k (Siis tarkemmin syote on sopivasti koodattu kolmikko h G; c; k i.) Kysymys: onko verkossa G Hamiltonin keha, jonka kokonaispaino on korkeintaan k 209
210 Lisaa NP-taydellisia 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 sisaltava solmupeite, ts. joukko U V joka kaikista kaarista (u; v) 2 E sisaltaa ainakin toisen paatepisteen u tai v. Riippumaton joukko (Independent Set, IS) Annettu: suuntaamaton verkko G = (V; E), luonnollinen luku k Kysymys: onko verkossa G riippumaton joukko jossa vah. k solmua, ts. sellainen U V etta (u; v) 62 E kaikilla u; v 2 U Klikki (Clique, CLIQUE) Annettu: suuntaamaton verkko G = (V; E), luonnollinen luku k Kysymys: onko verkossa G klikki jossa vah. k solmua, ts. sellainen U V etta (u; v) 2 E kaikilla u; v 2 U 210
211 Viela lisaa NP-taydellisia ongelmia Verkonvaritys (Graph Coloring, GC) Annettu: suuntaamaton verkko G, luonnollinen luku k Kysymys: voidaanko verkon G solmut varittaa k varilla niin etta minkaan kaaren paatepisteet eivat ole saman variset Ositus (Partition, PARTITION) Annettu: jono (a 1 ; : : : ; a n ) luonnollisia lukuja Kysymys: onko olemassa A f 1; : : : ; n g jolla P i2a a i = P i62a a i Repunpakkaus (Knapsack, KNAPSACK) Annettu: aarellinen joukko U ("esineet") ja jokaiselle u 2 U "arvo" v(u) 2 N ja "paino" w(u) 2 N; kokonaisluvut V ja W Kysymys: voidaanko valita sellainen joukko X U esineita, etta P x2x w(x) W ja P x2x v(x) V 211
212 Toiminta kun kohdataan NP-taydellinen ongelma 1. Havaitaan etta kasilla oleva ongelma A "nayttaa NP-taydelliselta" 2. Etsitaan kirjallisuudesta "samantyyppinen" NP-taydelliseksi tunnettu ongelma B; peruslahde Garey & Johnson: Computers and Intractability (1979) 3. Osoitetaan B p m A 4. Mietitaan mita sitten tehdaan Huom. yleensa tallaisissa tilanteissa ollaan viime kadessa kiinnostuneita muusta kuin paatosongelmasta, esim. etsintaongelmasta (vrt. HC) tai optimointiongelmasta kuten TSP-ongelmaan liittyva opt-tsp: annettu painotettu verkko, maarattava pienin Hamiltonin kehan paino 212
213 Miten kaytannossa ratkaistaan NP-kova ongelma Luultavasti ei kannata etsia algoritmia joka aina toimii polynomisessa ajassa ja antaa tarkalleen oikean ratkaisun. Ehka voidaan tehda helpottavia lisaoletuksia siita, millaisia syotteita todella esiintyy. Jos tapaukset ovat riittavan pienia, ehka huolellisesti viritetty ei-polynominen algoritmi on riittavan nopea (branch-and-bound). Ehka on olemassa tehokas approksimointialgoritmi joka todistettavasti loytaa melkein optimaalisen ratkaisun. Ehka joku heuristinen algoritmi, mahdollisesti yhdistettyna satunnaisuuteen, antaa riittavan hyvia ratkaisuja (lokaali haku, simuloitu jaahdytys). 213
214 Esimerkkeja NP-taydellisyystodistuksista Oletetaan tunnetuksi etta IS on NP-taydellinen (tama tullaan osoittamaan jatkossa) Lause 3.6: [HMU Thm 10.20] VC on NP-taydellinen. Todistus: Helposti nahdaan VC 2 NP (harj.teht.). Osoitetaan IS p m VC. Olkoon G = (V; E) missa jv j = n, ja U V. Nyt U on riippumaton joukko, millaan (u; v) 2 E ei pade u 2 U ja v 2 U, kaikilla (u; v) 2 E patee u 2 V U tai v 2 V U, V U on solmupeite. Siis verkossa G on kokoa k oleva riippumaton joukko jos ja vain jos siina on kokoa n k oleva solmupeite. Olkoon f funktio joka kuvaa parin h G; k i pariksi f(h G; k i) = h G; n k i. Siis h G; k i 2 IS joss f(h G; k i) 2 VC. Selvasti f on laskettavissa pol. ajassa, joten f: IS p m VC. 214
215 Toinen esimerkki: Oletetaan tunnetuksi, etta HC on NP-taydellinen (kuten jatkossa todistetaan). Lause 3.7: [HMU Thm 10.24] TSP on NP-taydellinen. Todistus: Helposti nahdaan etta TSP 2 NP. Osoitetaan HC p m TSP. Olkoon G = (V; E) HC-tapaus. Merkitaan n = jv j. Maaritellaan kustannus c: V V! N siten, etta c(u; v) = 1 jos (u; v) 2 E ja c(u; v) = n + 1 muuten. Tasta saadaan TSP-tapaus f(g) = h G; c; n i. Selvasti verkossa G on Hamiltonin keha, jos ja vain jos painotetussa verkossa h G; c i on Hamiltonin keha jonka paino on korkeintaan n. Siis G 2 HC, jos ja vain jos f(g) 2 TSP. Koska f: G 7! h G; c; n i voidaan laskea polynomisessa ajassa, HC p m TSP. Mutta etta tama todella olisi kiinnostavaa, meidan pitaa ensin osoittaa IS ja HC NP-taydellisiksi jollain muulla tavalla! 215
216 Toteutuvuusongelman NP-taydellisyys [HMU ] Etta paastaan osoittamaan ongelmia NP-taydellisiksi palautuksilla, pitaa ensin osoittaa jokin ongelma NP-taydelliseksi suoraan maaritelmasta. Valitaan taksi perusongelmaksi toteutuvuusongelma SAT. Lause 3.8: [HMU Thm 10.9] Toteutuvuusongelma SAT on NP-taydellinen. Todistus Tiedetaan jo, etta SAT 2 NP. Pitaa viela osoittaa A p m SAT kaikilla A 2 NP. Olkoon A = L(M) missa time M (n) p(n), p polynomi ja M yksinauhainen. Voidaan olettaa p(n) n kaikilla n. Muodostetaan palautus f M : A p m SAT; siis f M laskettavissa polynomisessa ajassa ja w 2 A jos ja vain jos f M (w) 2 SAT 216
217 f M (w) on propositiologiikan kaava joka kuvaa mahdollisia koneen M laskentoja syotteella w muuttujien intuitiiviset merkitykset ovat muotoa "hetkella t kone on tilassa q ja nauhapaan paikka on j" tai "hetkella t nauhapositiossa j on merkki c" kaava f M (w) kuvaa, mitka ajanhetkea t + 1 vastaavat muuttujien arvot ovat sallittuja, kun ajanhetken t arvot tunnetaan Muuttujien indeksoimiseksi numeroidaan ensin nauhapositiot: aluksi nauhapaa positiossa 1 nauhapaa voi enimmillaan liikkua p(n) kertaa vasemmalle tai p(n) kertaa oikealle; siis nauhapaa pysyy positioiden p(n) ja p(n) + 1 valilla aluksi syote positioissa 1; : : : ; n 217
218 Maaritellaan nyt muuttujat X t;j, arvojoukkona Q [, indekseina j = (p(n) + 1); : : : ; p(n) + 1, kuvaamaan laskentaa hetkella t: ol. koneen tilanne aqb, nauhapaan sijainti m siis kone tilassa q, nauhapaan vas. puolella a = a 1 : : : a k 2 ja nauhapaasta oikealle b = b 1 : : : b l 2 koodataan tila ja nauhapaan 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 218
219 Esimerkki 3.9: Oletetaan q 1 alkutila, q 2 hyvaksyva tila, = f a; b; c g, = [ f # g missa # on tyhjamerkki, w = aab ja siis n = 3, p(3) = 4. Olkoon koneessa (ainakin) siirtymat (q 1 ; 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). Syotteella aab on siis olemassa hyvaksyva 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 1 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 maaraytyy arvoista X t 1;j 1, X t 1;j ja X t 1;j
220 Varsinaisiksi totuusarvomuuttujiksi muodostettavaan propositiologiikan kaavaan f M (w) tulee nyt y tjz ; t = 0; : : : ; p(n); j = p(n) 1; : : : ; p(n) + 1; z 2 Q [ ; siis kaikkiaan (p(n) + 1)(2p(n) + 3)(jQj + j j) muuttujaa, joiden intuitiivinen tulkinta on y tjz = 1 joss X tj = z: Nyt f M (w) tulee olemaan muuttujia y tjz sisaltava kaava, joka saa arvon 1 tasan sellaisilla muuttujien y tjz arvoilla jotka esittavat koneen M hyvaksyvaa laskentaa syotteella w. Korkealla tasolla kaava tulee olemaan muotoa S ^ N ^ F ^ U missa osakaavoilla S, N, F ja U on seuraavat tulkinnat: S: rivi X 0; esittaa laskennan alkutilannetta N: kukin rivi X t 1; seuraa rivia X t; koneen M siirtymafunktion mukaisesti F: jollain j patee X p(n);j = q missa q on hyvaksyva tila. U: jokaisella ajanhetkella koneen tila, nauhapaan paikka ja jokaisen nauhaposition sisalto on yksikasitteisesti maaritelty; 220
221 Kaava U: tilanteen yksikasitteisyys Merkitaan indeksijoukkoja J = f p(n) ja Z = Q [. 1; : : : ; p(n) + 1 g, T = f 0; : : : ; p(n) g Kaava U t;j;z, t 2 T, j 2 J, z 2 Z, on jqj + j j osan konjunktio, joka sanoo etta X t;j saa arvon z eika mitaan muuta arvoa: ^ 1 :y t;j;r A : U t;j;z = y t;j;z ^ r2z;r6=z Kaava Ut 0 sanoo, etta X t;j saa kaikilla j jonkin yksikasitteisen arvon: Ut 0 = ^ _ U t;j;z : j2j z2z Kaavan U 0 t koko on (2p(n) + 3)(jQj + j j) 2, kun yksinkertaisuuden vuoksi lasketaan muuttujasymbolin kooksi 1 eika lasketa loogisia konnektiiveja. 221
222 Kaava U t;j;q sanoo etta X t;j on tilasymboli: U t;j;q = _ z2q U t;j;z : Kaavan U t;j;q koko on siis jqj(jqj + j j). Kaava Ut 00 tilasymboli tasan yhdella j: Ut 00 = _ ^ Ut;j;Q ^ j2j Kaavan U 00 t j 0 2J;j 0 6=j :U t;j 0;Q sanoo, etta X t;j on koko on (2p(n) + 3) 2 jqj(jqj + j j). Lopullinen kaava U on U = ^ : t2t U 0 t ^ U 00 t Koko on (p(n) + 1)((2p(n) + 3)(jQj + j j) 2 + (2p(n) + 3) 2 jqj(jqj + j j)) = O(p(n) 3 ). 1 A : 222
223 Kaava S: alkutilanne Oikeaa alkutilannetta vastaava rivi X 0; koodataan kaavaksi y 0;j;# A ^ ^ 1 0 y 0;j;wj A S = j= p(n) 1;:::; 1 ^ j=1;:::;n ^ j=n+1;:::;p(n)+1 y 0;j;# 1 A missa # on tyhjamerkki ja syote on w = w 1 : : : w n. Kaavan koko O(p(n)). Kaava F : hyvaksyminen Oletetaan kone M muunnetuksi siten, etta jokaisesta hyvaksyvasta tilasta on siirtyma itseensa kaikilla merkeilla. Tama selvasti ei muuta sita, onko annetulla syotteella kork. p(n) askelen mittaisia hyvaksyvia laskentoja. Riittaa siis tarkastaa, etta hetkella p(n) ollaan hyvaksyvassa tilassa: F = 1ik j2j y p(n);j;ai missa hyvaksyvien tilojen joukkoa on merkitty f a 1 ; : : : ; a k g. Kaavan koko on O(p(n)) 223
224 Kaava N: laskennan oikea eteneminen; todistuksen ydin on tassa Huomataan, etta koko laskennan, eli (p(n) + 1) (2p(n) + 3)-taulukon (X t;j ), oikeellisuuden tarkastamiseksi riittaa 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 sisalto voi muuttua vain nauhapaan kohdalla jos X t 1;j on tilasymboli, niin nauhapaan alla on merkki X t 1;j+1 ja siirtymafunktion 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 224
225 Esitetaan ensin eri mahdollisuudet kaavioina. Seuraavassa A; B; C jne. esittavat nauhasymboleja ja q; q 0 tilasymboleja. Nauhapaa muualla: laatikon keskikohta ei muutu; reunoista ei voi sanoa koska nauhapaa saattaa olla juuri laatikon vieressa A B C X t;j 1 B X t;j+1 Nauhapaa liikkuu oikealle: tassa (q; B) = (q 0 ; C; R) A q B A C q 0 Nauhapaa liikkuu vasemmalle: tassa (q; B) = (q 0 ; C; L) A q B q 0 A C Reunat on helpoin kasitella erikoistapauksina: X t; p(n) 1 ja X t;p(n)+1 ovat aina tyhjamerkkeja, koska nauhapaa ei voi ehtia niin kauas. 225
226 Reunat hetkella t kasitellaan kaavalla ^N t = y t; p(n) 1;# ^ y t;p(n)+1;# : Esitetaan nyt em. kolme paatapausta kaavoina N t;j, N 0 t;j ja N 00 t;j. Nauhapaa muualla: Tama on helpoin tapaus. Kaava N t;j sanoo, etta 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 = _ z2 y t 1;j 1;z! ^ z2 y t 1;j+1;z! ^ z2 (y t 1;j;z ^ y t;j;z ) 226
227 Nauhapaa siirtyy oikealle: Kaava Nt;j 0 sanoo, etta hetkella t nauhapaan sijainti nauhalla on j + 1. Lisaksi, kun q = X t 1;j on koneen tila ja B = X t 1;j+1 nauhapaan alla oleva merkki, on valittu jokin sallittu siirtyma (q 0 ; C; R) 2 (q; B). Merkki A nauhapaan vasemmalla puolella pysyy ennallaan: Nt;j 0 = y t 1;j 1;A ^ y t;j 1;A ^ y t 1;j;q ^ y t 1;j+1;B q2q A;B _ (y t;j;c ^ y t;j+1;q 0) AA (q 0 ;C;R)2(q;B) Nauhapaa siirtyy vasemmalle: Kaava N 00 t;j muodostetaan kuten N 0 t;j. Kaava H t;j sanoo, etta lahettyvilla oleva nauhapaa maaraa symbolin X t;j : H t;j = N 0 t;j 1 _ N 00 t;j 1 _ N 0 t;j _ N 00 t;j _ N 0 t;j+1 _ N 00 t;j+1 : 227
228 Laskennan oikean etenemisen esittaa nyt kaava ^ 0 0 N = ^Nt ^ j= p(n);:::;p(n) 11 (N t;j _ H t;j ) AA : Koska kukin N 0 t;j jne. on jotain (koneesta M riippuvaa) vakiokokoa, kaavan N koko on O(p(n) 2 ). Edella esitetysta seuraa, etta konstruoitu kaava f M (w) = S ^ N ^ F ^ U toteutuu joillain muuttujien y t;j;z arvoilla jos ja vain jos koneella M on syotteella w hyvaksyva laskenta jonka pituus on kork. p(jwj). Lisaksi f M voidaan selvasti laskea polynomisessa ajassa. (Huomaa, etta M on kiintea; laskettaessa f M (w) ainoat syotteesta w riippuvat asiat ovat kaava A eli alkutilanne ja p(n) eli kaavojen pituus.) Siis f M : A p m SAT. 228
229 SAT-ongelman rajoitetut muodot tahan mennessa: todistettu etta SAT on NP-taydellinen tavoite: todistetaan "A on NP-taydellinen", kun A = IS; VC; HC; TSP; : : : tekniikka: osoitetaan SAT p m A tekninen ongelma: hankalaa kasitella mielivaltaisia propositiologiikan kaavoja ratkaisu: maaritellaan luokka syntaktisesti "yksinkertaisia" kaavoja, jotka kuitenkin ovat riittavan "vaikeita" etta SAT on NP-taydellinen myos naihin "yksinkertaisiin" kaavoihin rajoitettuna tarkemmin: maaritellaan SAT-ongelman erikoistapaus CSAT, ja edelleen taman erikoistapaus 3SAT, jotka ovat kumpikin NP-taydellisia. 229
230 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 Maaritellaan nyt SAT-ongelman erikoistapaukset CSAT ja ksat, k = 1; 2; 3; : : :: CSAT = f j on toteutuva CNF-kaavag ksat = f j on toteutuva k-cnf-kaava g 230
231 Kurssikirjassa on osoitettu [HMU {10.3.3], miten mielivaltaiselle kaavalle (x 1 ; : : : ; x n ) voidaan polynomisessa ajassa konstruoida CNF-kaava (x 1 ; : : : ; x n ; y 1 ; : : : ; y m ), jolle on toteutuva joss on toteutuva; tassa y 1 ; : : : ; y m ovat muuttujasymboleita jotka eivat esiinny kaavassa. Kaymme tassa lapi yksinkertaisemman konstruktion, jossa lauseen 3.8 todistuksessa tarvittaville kaavoille etsitaan CNF-vastine. Tama riittaa osoittamaan, etta CSAT on NP-taydellinen. Osoitamme siis, miten todistuksessa (s. 220) muodostetulle kaavalle f M (w) = S ^ N ^ F ^ U muodostetaan polynomisessa ajassa CNF-kaava ~f M (w), joka on toteutuva joss f M (w) on. Jaamme taman kahteen osaongelmaan: 1. miten CNF-kaavojen disjunktio muunnetaan yhdeksi CNF-kaavaksi ja 2. miten kaavat S, N, F ja U muunnetaan CNF-kaavojen disjunktioiksi. 231
232 Periaatteessa CNF-kaavojen disjunktiolle voidaan suoraan muodostaa ekvivalentti CNF-kaava osittelulakien avulla: A _ (B ^ C), (A _ B) ^ (A _ C) A ^ (B _ C), (A ^ B) _ (A ^ C) Esimerkki Olkoot c 1 ; : : : ; c 6 klausuuleja. CNF-kaavojen disjunktion (c 1 ^ c 2 ) _ (c 3 ^ c 4 ) _ (c 5 ^ c 6 ) kanssa ekvivalentti CNF-kaava on (c 1 _ c 3 _ c 5 ) ^ (c 1 _ c 3 _ c 6 ) ^ (c 1 _ c 4 _ c 5 ) ^ (c 1 _ c 4 _ c 6 ) ^ (c 2 _ c 3 _ c 5 ) ^ (c 2 _ c 3 _ c 6 ) ^ (c 2 _ c 4 _ c 5 ) ^ (c 2 _ c 4 _ c 6 ): Ongelma: saatavan kaavan pituus riippuu eksponentiaalisesti alkuperaisten kaavojen klausuulien lukumaarasta. Ratkaisemme ongelman lisaamalla kaavoihin uusia muuttujia. 232
233 Tarkastellaan ensin kahden CNF-kaavan disjunktiota: = _, missa = a 1 ^ : : : ^ a n = b 1 ^ : : : ^ b m ja a i ja b j ovat klausuuleja. Olkoon y muuttuja, joka ei esiinny kaavassa. Muodostetaan CNF-kaava ~ = (y _ a 1 ) ^ : : : ^ (y _ a n ) ^ (:y _ b 1 ) ^ : : : ^ (:y _ b m ): Vaitamme, etta ~ on toteutuva, joss on. Jos jollain muuttujien arvojen sijoituksella ~ on tosi, niin talloin joko y saa arvon 0 ja a 1 ; : : : ; a n ovat kaikki tosia, tai y saa arvon 1 ja b 1 ; : : : ; b m ovat kaikki tosia. Kummassakin tapauksessa = _ on tosi. Oletetaan kaantaen, etta jokin muuttujien arvon sijoitus tekee kaavan = _ todeksi. Jos sijoitus tekee kaavan todeksi, niin valitsemalla y = 0 saadaan kaikki klausuulit (y _ a i ) ja (:y _ b j ) tosiksi. Jos taas kaava on tosi, niin valitaan y = 1. Vaite siis patee. 233
234 Yleisemmin jos = 1 _ 2 _ 3 _ : : : _ k on CNF-kaavojen i disjunktio, otetaan kayttoon uudet muuttujat y 1 ; : : : ; y k 1. Ensin yhdistetaan kaavat 1 ja 2 edellisella sivulla kuvatulla menettelylla lisaamalla niiden klausuuleihin muuttuja y 1 ; merkitaan syntyvaa kaavaa 1 Saadaan k 1 CNF-kaavan disjunktio = 1 _ 3 _ : : : _ k : Sovelletaan nyt menettelya uudelleen kaavoihin 1 ja 3, lisaten muuttuja y 2, jne. Lopulta saadaan yksi iso CNF-kaava, jossa kaavojen 1 ja 2 klausuuleihin on lisatty muuttujat y 1 ; : : : ; y k 1, kaavan 3 klausuuleihin muuttujat y 2 ; : : : ; y k 1 jne. Yksittainen klausuuli joutuu kasittelyn alle korkeintaan k kertaa, ja yksittainen kasittelykerta lisaa siihen korkeintaan k uutta muuttujaa. Proseduurin aikavaativuus on siis oleellisesti O(mk 2 ), missa m on alkuperaisten klausuulien kokonaislukumaara. 234
235 Esimerkki 3.10: Muodostetaan kaava ~, kun on muuttujien x1 ; : : : ; x 6 kaava = (x 1 ^ x 2 ) _ (x 3 ^ x 4 ) _ (x 5 ^ x 6 ): Tassa siis alkuperaiset klausuulit ovat vain yksittaisia muuttujia. Ensin saadaan kaavalle (x 1 ^ x 2 ) _ (x 3 ^ x 4 ) vastine (y 1 _ x 1 ) ^ (y 1 _ x 2 ) ^ (:y 1 _ x 3 ) ^ (:y 1 _ x 4 ): Ottamalla kayttoon toinen uusi muuttuja y 2 saadaan lopulta (y 2 _ y 1 _ x 1 ) ^ (y 2 _ y 1 _ x 2 ) ^ (y 2 _ :y 1 _ x 3 ) ^ (y 2 _ :y 1 _ x 4 ) ^ (:y 2 _ x 5 ) ^ (:y 2 _ x 6 ): 235
236 Osaamme siis polynomisessa ajassa muodostaa annettua CNF-kaavojen disjunktiota vastaavan yhden CNF-kaavan ~, joka on toteutuva joss on. Katsomme seuraavaksi, miten tata proseduuria kayttamalla todistuksessa (s. 220) muodostettu kaava f M (w) = S ^ N ^ F ^ U voidaan pienella vaivalla muuntaa CNF-kaavaksi ~ fm (w), joka on toteutuva joss f M (w) on. Teemme taman muuntamalla osat S, N, F ja U kunkin CNF-kaavaksi ja muodostamalla niiden klausuuleista yhden ison konjunktion. Kaava S sisaltaa jo valmiiksi pelkkia konjunktioita ja F pelkkia disjunktioita, joten niille ei tarvitse tehda mitaan. 236
237 Kaava U (s. 222) on muotoa U = ^t2t (Ut 0 ^ Ut 00 ), missa Ut 0 on CNF-kaava ja Ut 00 = _ ^ 1 Ut;j;Q ^ :U t;j 0;QA ; j2j j 0 2J;j 0 6=j tassa U t;j;q = W z2q U t;j;z. De Morganin lain nojalla :U t;j;q = ^ :U t;j;z ; joten Ut 00 muuntuu helposti DNF-kaavaksi (konjunktioiden disjunktioksi). Tama DNF-kaava puolestaan voidaan muuntaa CNF-kaavaksi edella esitetylla proseduurilla. Talloin koko U tulee CNF-kaavaksi. z2q 237
238 Kaava N on oleellisesti konjunktio muotoa N t;j _ H t;j olevista kaavoista (s. 228). Tassa N t;j valmiiksi CNF-kaava, ja H t;j on disjunktio muotoa Nt;j 0 olevista kaavoista, missa Nt;j 0 = y t 1;j 1;A ^ y t;j 1;A ^ y t 1;j;q ^ y t 1;j+1;B q2q A;B _ (y t;j;c ^ y t;j+1;q 0) AA (q 0 ;C;R)2(q;B) Koska j (q; B) j 2 j Q j j j, disjunktio _ (y t;j;c ^ y t;j+1;q 0) (q 0 ;C;R)2(q;B) voidaan osittelulakia kayttamalla muuntaa CNF-kaavaksi, jossa on korkeintaan vakiomaara 2 2j Q jj j klausuuleja. Siis kukin N 0 t;j saadaan helposti esitetyksi disjunktiona CNF-kaavoista. Siis kukin N t;j _ H t;j on disjunktio CNF-kaavoista, ja saadaan CNF-kaavaksi edella esitetylla proseduurilla. 238
239 Vetamalla edelliset konstruktiot yhteen saamme nyt halutun tuloksen. Lause 3.11: [HMU Thm 10.13] CSAT on NP-taydellinen. Todistus: Selvasti CSAT 2 NP. Olkoon A 2 NP ja M polynomisessa ajassa toimiva epadeterministinen Turingin kone, jolla A = L(M). Lauseen 3.8 todistuksen mukaisesti voimme annetulla w konstruoida polynomisessa ajassa kaavan f M (w), joka on toteutuva joss w 2 A. Naimme juuri, miten kaavasta f M (w) saadaan polynomisessa ajassa CNF-kaava ~ fm (w), joka on toteutuva joss f M (w) on. Siis kuvaus w 7! ~ fm (w) on polynominen palautus A p m CSAT. 239
240 3SAT-ongelman NP-taydellisyys [HMU ] erotukseksi yleisesta CNF-esityksesta, kaikilla kaavoilla ei ole 3-CNF-esitysta; esim. x 1 _ x 2 _ x 3 _ x 4 esitamme muunnoksen, jolla polynomisessa ajassa mielivaltaisesta CNF-kaavasta tuotetaan 3-CNF-kaava joka on toteutuva joss on Taman muunnoksen olemassaolosta seuraa siis Lause 3.12: CSAT p m 3SAT. Koska CSAT on NP-taydellinen ja 3SAT 2 NP, saadaan Korollaari 3.13: [HMU Thm 10.15] 3SAT on NP-taydellinen. Huom. SAT-ongelma rajoitettuna 2-CNF-kaavoihin ratkeaa polynomisessa ajassa. 240
241 Todistus sille etta CSAT p m 3SAT Olkoon F(x 1 ; : : : ; x n ) klausuuli (siis literaalien disjunktio). Muodostamme 3-CNF-kaavan ~ F(x1 ; : : : ; x n ; y 1 ; : : : ; y m ) missa y i :t ovat uusia muuttujia ja F(v 1 ; : : : ; v n ) = 1 jos ja vain jos ~ F(v1 ; : : : ; v n ; v 0 1 ; : : : ; v0 m) = 1 joillain (v 0 1 ; : : : ; v0 m) 2 f 0; 1 g m. Tasta seuraa yleisemmin, etta kun on CNF-kaava k^ = niin voidaan muodostaa 3-CNF-kaavojen konjunktio, eli edelleen 3-CNF-kaava, k^ = missa (v 1 ; : : : ; v n ) = 1 joss (v 1 ; : : : ; v n ; v 0 1 ; : : : ; v0 l ) = 1 jollain (v 0 1 ; : : : ; v0 l ) 2 f 0; 1 gl, joten erityisesti on toteutuva joss on toteutuva. Huom. eri kaavoihin ~ Fj lisattavien muuttujien pitaa olla erillisia. j=1 j=1 F j ~F j 241
242 Olkoon F klausuuli. Nelja tapausta sen mukaan, kuinka monta literaalia z i klausuuli F sisaltaa: 1. F = z 1 missa 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 z1 = 1 jolloin F = F = z 1 _ z 2. Uusi muuttuja w; ~F = (z 1 _ z 2 _ w) ^ (z 1 _ z 2 _ :w): Kuten edellisessa kohdassa ~ F voidaan toteuttaa vain tekemalla F todeksi. 3. F = z 1 _ z 2 _ z 3 : valmiiksi 3-CNF; ~ F = F. 242
243 4. F = z 1 _ z 2 _ : : : _ z m missa 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 yj = 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 yj :t valitaankin. Jos nimittain yritetaan saada ~ F = 1, pitaa 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 pitaa ottaa y 2 = 1. Nain paadytaan lopulta valitsemaan y m 3 = 1, mutta talloin viimeinen klausuuli jaa toteutumatta. Siis 2 CSAT jos ja vain jos 2 3SAT. Selvasti muunnos 7! voidaan laskea polynomisessa ajassa. 243
244 NP-taydellisyys tahan mennessa: jos jollakin NP-taydellisella ongelmalla on polynominen ratkaisualgoritmi, niin P = NP tata ei pideta luultavana, koska se tarkoittaisi etta eksponentiaalisen suuria hakuavaruuksia voitaisiin etsia polynomisessa ajassa suoraan maaritelmasta todistettiin, etta SAT on NP-taydellinen suoraviivaisilla palautuksilla osoitettiin, etta jo SAT-ongelman rajoitetut erikoistapaukset CSAT ja 3SAT ovat NP-taydellisia Jatko: [HMU 10.4] osoitetaan 3SAT p m IS ja 3SAT p m HC siis IS ja HC NP-taydellisia aiemmin osoitettu IS p m VC ja HC p m TSP, joten myos VC ja TSP NP-taydellisia 244
245 Lause 3.14: [HMU Thm 10.18] Riippumaton joukko -ongelma on NP-taydellinen Todistus: Tarkastellaan siis joukkoa IS = f h G; k i j G sisaltaa k-solmuisen riippumattoman joukong : Harjoitustehtavana on osoitettu, etta IS 2 NP. Muodostetaan palautus f: 3SAT p m IS. Koska 3SAT on NP-taydellinen, vaite seuraa. Siis muodostetaan f() = h G; k i, missa h G; k i 2 IS jos ja vain jos on toteutuva 3-CNF-kaava. Erityisesti jos x ylipaansa ei ole 3-CNF-kaava, pitaa olla f(x) 62 IS. Tallaisissa tapauksissa valitaan esim. f(x) = h (V; E); n + 1 i missa jv j = n. Keskitytaan jatkossa tapaukseen, jossa x todella on 3-CNF-kaava. 245
246 Olkoon siis 3-CNF-kaava, jossa m klausuulia: m^ = i=1 missa kukin z i;r on muotoa x j tai :x j. Nyt f() = h (V; E); k i missa k = m (z i;1 _ z i;2 _ z i;3 ) jv j = 3m ja V = f v i;r j i 2 f 1; : : : ; m g ; r 2 f 1; 2; 3 g g (v i;r ; v i;s ) 2 E kaikilla i 2 f 1; : : : ; m g, r; s 2 f 1; 2; 3 g, r 6= s kun i 6= j, niin (v i;r ; v j;s ) 2 E jos z i;r = :z j;s tai :z i;r = z j;s Selvasti f laskettavissa polynomisessa ajassa. 246
247 Esimerkki 3.15: Muodostetaan h G; k i = 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 ): Siis k = m = 4. Rengastetuista solmuista muodostuu kokoa 4 oleva riippumaton joukko. Tama 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 247
248 Nyt nahdaan, etta on toteutuva, verkossa G on m solmun riippumaton joukko U. ): Ol. toteutuva. Valitaan muuttujien x i arvot siten, etta jokaisessa kaavan klausuulissa i ainakin yksi literaali z i;r saa arvon 1. Valitaan joukkoon U vastaavat v i;r. Nyt U sisaltaa tasan yhden solmun jokaisesta "kolmiosta". Lisaksi valitut solmut vastaavat "tosia" literaaleja, joten minkaan kahden eri "kolmiosta" valitun solmun valilla ei ole kaarta. Siis U on riippumaton ja juj = m. (: Ol. m solmun joukko U riippumaton. Nyt U sisaltaa tasan yhden solmun joka "kolmiosta". Koska minkaan eri "kolmioista" valittujen solmujen valilla ei ole kaarta, voidaan ilman ristiriitaa asettaa "todeksi" valittuja solmuja vastaavat literaalit. Jokaiseen klausuuliin tulee ainakin yksi "tosi" literaali; toteutuva. 248
249 Tarkastellaan seuraavaksi suunnattu Hamiltonin keha -ongelmaa (Directed Hamiltonian Circuit, DHC): Annettu: suunnattu verkko G Kysymys: onko verkossa G suunnattu polku, joka kay jokaisessa solmussa tasan kerran ja palaa lahtosolmuunsa Siis eroksi alkuperaiseen Hamiltonin keha -ongelmaan (HC) verkon kaarilla on suunta, ja kehan pitaa naita suuntia noudattaa. Lause 3.16: [HMU Thm 10.21] DHC on NP-taydellinen. Koska HC 2 NP ja harjoitustehtavana osoitetaan DHC p m HC, patee Korollaari 3.17: [HMU Thm 10.23] HC on NP-taydellinen. 249
250 Todistus: Kuten suuntaamattomassa tapauksessa, nahdaan helposti, etta DHC 2 NP. Muodostetaan palautus f: 3SAT p m DHC, mista vaite nyt seuraa. Olkoon annettu n-muutujainen 3-CNF-kaava jossa m klausuulia m^ = j=1 (z j;1 _ z j;2 _ z j;3 ) : 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 kayda lapi 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 lapikaynti voidaan lomittaa laitteen A i lapikayntiin joss muuttuja x i "tekee todeksi" klausuulin j 250
251 Laite A i : laitteessa on 2m + 4 solmua a i, d i seka b i;j ja c i;j, j = 0; : : : ; m. Laitteen sisaiset 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 etta laitteen A i solmut voidaan kayda lapi kahdessa jarjestyksessa: jarjestys 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 jarjestys 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 yhdistavat kaaret esitellaan pian. 251
252 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. 252
253 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 sisaiset kaaret: solmut r j;k sisaltava 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 sisaltava sykli: kaaret (s j;1 ; s j;3 ), (s j;3 ; s j;2 ) ja (s j;2 ; s j;1 ) (huom. suunta) sykleja kytkevat kaaret (r j;1 ; s j;1 ), (r j;2 ; s j;2 ) ja (r j;3 ; s j;3 ) Havaitaan etta jos Hamiltonin keha tulee laitteeseen B j solmun r j;k kautta niin sen pitaa vastaavasti poistua solmun s j;k kautta. (Keha voi vierailla laitteessa B j useita kertoja, mutta jokaisen vierailun on noudatettava tata saantoa.) Muuten osa solmuista jaisi eristyksiin eika enaa paasisi mukaan kehaan. 253
254 A i 00 r j;3 s j;3 A i 0 r j;2 s j;2 A i r j;1 s j;1 Laite B j. Tassa literaalin j muuttujat ovat x i, x i 0 ja x i
255 Laitteet A i yhdistetaan 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 yhdistetaan niihin laitteisiin B j, joilla klausuuli j sisaltaa literaalin x i tai :x i : jos z j;k = x i niin lisataan kaaret (c i;j 1 ; r j;k ) ja (s j;k ; b i;j ) jos z j;k = :x i niin lisataan kaaret (b i;j 1 ; r j;k ) ja (s j;k ; c i;j ) Havainto: Jos klausuuli j sisaltaa literaalin x i (vast. :x i ) ja laitteen A i lapikayntijarjestys vastaa valintaa x i = 1 (vast. x i = 0) niin laitteen B j lapikaynti voidaan sijoittaa laitteen A i lapikaynnin lomaan. 255
256 Verkkoon G = f() ei tule muita kaaria kuin edella luetellut. Selvasti f voidaan laskea polynomisessa ajassa. Seuraavasta vaitteesta seuraa etta f: 3SAT p m DHC. Vaite: on toteutuva, verkossa G on Hamiltonin keha ): Olkoon = 1 kun (x 1 ; : : : ; x n ) = (v i ; : : : ; v n ) 2 f 0; 1 g 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) 2 f 1; 2; 3 g 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 siina olevan literaalin numero k(j) vastuulla. 256
257 Verkkoon G voidaan muodostaa Hamiltonin keha seuraavasti: 1. kay laite A i lapi jarjestyksessa 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. yhdista laitteiden A i lapikaynnit jarjestyksessa 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 lapikaynnin kaari (b i;j 1 ; c i;j ) polulla (b i;j 1 ; r j;k(j) ; : : : ; s j;k(j) ; c i;j ) missa r j;k(j) ; : : : ; s j;k(j) on laitteen B j lapikaynti jos z j;k(j) = x i (jolloin v i = 1), korvaa laitteen A i lapikaynnin kaari (c i;j 1 ; b i;j ) polulla (c i;j 1 ; r j;k(j) ; : : : ; s j;k(j) ; b i;j ) missa r j;k(j) ; : : : ; s j;k(j) on laitteen B j lapikaynti 257
258 (: Olkoon verkossa G Hamiltonin keha. Jos keha sisaltaa kaaren (a i ; b i;0 ), valitaanv i = 1. Jos keha sisaltaa kaaren (a i ; c i;0 ), valitaan v i = 0. Selvasti tasan yksi naista patee. Vaitetaan, etta = 1 jos x i = v i kaikilla i. Jos keha tulee laitteeseen B j solmun r j;k kautta, se poistuu solmun s j;k kautta; muuten osa laitteen solmuista leikkautuisi pois kehalta. Siis laitteen B j kautta voidaan siirtya solmusta c i;j 1 solmuun b i;j jos j sisaltaa literaalin x i ja solmusta b i;j 1 solmuun c i;j jos j sisaltaa literaalin :x i. 258
259 Siis jos v i = 1, laite A i kaydaan lapi jarjestyksessa a i b i;0 c i;0 b i;1 c i;1 : : : b i;m c i;m d i missa c i;j 1 b i;j tarkoittaa siirtymista 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 kaydaan laitteen A i lapikaynnin valissa ja v i = 1, niin laitteeseen B j mennaan 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 kaydaan ainakin kerran, joten jokaisessa klausuulissa j on ainakin yksi literaali z j;k joka saa arvon 1 kun x i = v i kaikilla i. 259
260 TSP HC DHC VC IS Yhteenveto todistetuista polynomisista palautuksista 3SAT CSAT SAT NP-tayd. Nuoli A! B tarkoittaa A p m B Huom. kaikki NP-ongelmat on palautettu ongelmaan SAT (Lause 3.7). NP 260
261 Muita vaativuusluokkia ( ) Kaydaan lyhyesti lapi tarkeimpia vaativuusluokkiin liittyvia tuloksia. Monet tunnetuista tuloksista ovat vaikeita todistaa, ja monet kysymykset ovat viela auki. Lause 3.18 [Ladner 1975]: Jos P 6= NP niin luokassa NP P on muitakin kuin NP-taydellisia kielia. Siis ei ole mahdollista, etta luokka NP jakaantuisi toisaalta polynomisesti ratkeaviin ja toisaalta NP-taydellisiin ongelmiin: joko nama ongelmaluokat yhtyvat tai niiden valissakin on jotain. Eras ehdokas "valissa olevaksi" ongelmaksi on verkkoisomora: 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) 2 E 1 joss ((f(u); f(v)) 2 E 2 Huom. osaverkkoisomora tiedetaan NP-taydelliseksi ongelmaksi (harj. 8.3). 261
262 Luokan NP ongelmien komplementit [HMU 11.1] muodostavat luokan co-np = A j A 2 NP : Luokalla co-np on omat taydelliset ongelmansa. Lause 3.19: A on co-np-taydellinen, jos ja vain jos A on NP-taydellinen. Todistus: Jos f on palautus B p m A, se on samalla palautus B p m A. Jos P = NP niin tietysti myos P = co-np. Joka tapauksessa selvasti P NP \ co-np. Nykytietamyksen mukaan seuraavat vaihtoehdot ovat kaikki mahdollisia: P = NP = co-np P 6= NP mutta NP = co-np P = NP \ co-np mutta P 6= NP ja P 6= co-np P 6= NP \ co-np ja NP 6= co-np Naista viimeista pidetaan ehka luultavimpana. 262
263 Toisistaan poikkeavia aika- ja tilavaativuusluokkia on aareton maara. Maaritelma Funktio t on aikakonstruoituva, jos syotteella 1 n luvun t(n) binaariesitys voidaan laskea ajassa O(t(n)). Kaikki "jarkevat" vahintaan n log n olevat funktiot ovat aikakonstruoituvia, esim. n log n, bn 3=2 c, n 5, 2 n. Lause 3.20: Jos t on aikakonstruoituva, niin on olemassa ongelma A joka voidaan ratkaista ajassa O(t(n)) mutta ei ajassa O(t(n) 1 ) millaan > 0.. Maaritelma Funktio s on tilakonstruoituva, jos syotteella 1 n luvun s(n) binaariesitys voidaan laskea tilassa O(s(n)). Kaikki "jarkevat" vahintaan logn olevat funktiot ovat tilakonstruoituvia, esim. log n, bn 3=2 c, n 5, 2 n. Lause 3.21: Jos s on tilakonstruoituva, niin on olemassa ongelma A joka voidaan ratkaista tilassa O(s(n)) mutta ei tilassa O(s(n) 1 ) millaan >
264 Koska "P = NP?" ja NP = co-np?" ovat klassisia avoimia ongelmia, on hieman yllattavaa etta vastaavat tilavaativuusluokkia koskevat kysymykset "helppoja": Lause 3.22 [Savitch 1970]: Olkoon s(n) n kaikilla n. Kaikki ongelmat, jotka voidaan ratkaista epadeterministisesti tilassa s(n), voidaan ratkaista deterministisesti tilassa O(s(n) 2 ). Korollaari 3.23: PSPACE = NPSPACE = co-npspace Tassa on siis merkitty co-c = A j A 2 C kuten aiemminkin. Komplementoinnin suhteen on saatu viela tarkempikin tulos: Lause 3.24 [Immerman 1988, Szelepcsenyi 1987]: Olkoon s(n) log n kaikilla n. Jos ongelma A voidaan tunnistaa epadeterministisesti tilassa s(n), niin A voidaan tunnistaa epadeterministisesti tilassa O(s(n)). (Tulos on mielekas myos tapauksessa s(n) < n, kun tarkastellaan tyotilaa eli syotteen sailyttamisesta ei makseta.) 264
265 Seuraava lause suhteuttaa karkeasti deterministiset aika- ja tilavaativuusluokat. Lause 3.25: 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 kestanyt yli jqjj j S(n) askelta, jokin tilanne on toistunut, joten kone on ikuisessa silmukassa. Maaritellaan viela eksponentiaalinen tilavaativuusluokka ESPACE = L(M) j M deterministinen, space M (n) = O(2 nk ) jollain k : Korollaari 3.26: P NP PSPACE E ESPACE. Yllaolevien sisaltyvyyksien aitoudesta ei tiedeta kuin seuraava Lause 3.27: P 6= E ja PSPACE 6= ESPACE. 265
266 4. Yhteenveto Laskennan mallit Turingin kone on universaali laskennan malli: sen on tarkoitus kuvata kaikkia periaatteessa mahdollisia "mekaanisia" laskentoja alkuperainen motivaatio logiikasta, ei tietokoneista laskettavuus Turingin koneella ei riipu mallin yksityiskohdista (erityisesti deterministisyydesta) vastaavia malleja on muitakin: rekursiiviset funktiot, yleiset kieliopit, Random Access Machine; ohjelmointikielet kaikki nama maarittelevat saman kasitteen "laskettavuus" ) Churchin-Turingin teesi: Turingin koneet ovat oikea malli mekaaniselle laskennalle 266
267 Laskettavuusteoria peruskysymys: mita voidaan laskea aarellisessa ajassa rekursiivisuus (ratkeavuus) ja rekursiivinen lueteltavuus (osittainratkeavuus) tarkea tekninen yksityiskohta: Turingin koneen esitys merkkijonona, universaali Turingin kone universaalikieli L u : rekursiivisesti lueteltava, ei rekursiivinen muita ei-ratkeavia ongelmia: pysahtymisongelma, epatyhjyysongelma, tyhjyysongelma; Postin vastaavuusongelma Ricen lause: semanttiset ominaisuudet ratkeamattomia 267
268 rekursiivinen palautus A m B: ongelma A ainakin "yhta ratkeava" kuin B tarkea tekniikka: A todistetaan ratkeamattomaksi osoittamalla B m A, missa B on jokin tunnettu ratkeamaton ongelma ongelma A on RE-taydellinen, jos A on rekursiivisesti lueteltava ja B m A kaikilla rekursiivisesti lueteltavilla B RE-taydelliset ongelmat ovat "maksimaalisen vaikeita" osittain ratkeavia ongelmia esim. universaalikieli, pysahtymisongelma, epatyhjyysongelma 268
269 Vaativuusteoria peruskysymys: mita voidaan laskea polynomisessa ajassa kertaluokat, aika- ja tilavaativuudet; vaativuusluokat, erityisesti P epadeterministiset vaativuusluokat, erityisesti NP avoin ongelma: onko P = NP, ts. vaikuttaako epadeterminismi siihen mika on laskettavissa polynomisessa ajassa yleinen uskomus: P 6= NP 269
270 polynominen palautus A p m B: ongelma A ainakin yhta helppo kuin ongelma B A on NP-taydellinen, jos A 2 NP ja B p m A kaikilla B 2 NP jos A on NP-taydellinen ja A ratkeaa deterministisesti polynomisessa ajassa, niin P = NP jos A on NP-taydellinen, on siis aihetta uskoa, etta A ei ratkea deterministisesti polynomisessa ajassa, tai ainakin polynomisen algoritmin loytaminen olisi aarimmaisen vaikeaa tarkeita NP-taydellisia ongelmia: SAT, 3SAT, HC, TSP, VC, IS,... ongelman A osoittaminen NP-taydelliseksi: 1. osoita A 2 NP (yleensa helppoa) 2. osoita B p m A jollain NP-taydelliseksi tunnetulla B Loppu 270
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
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ä
Laskennan teoria
581336-0 Laskennan teoria luennot syyslukukaudella 2004 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa
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ä
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ää
Laskennan teoria
581336-0 Laskennan teoria luennot syyslukukaudella 2004 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa
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
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ä
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.
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,
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
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,
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
δ : (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
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.
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,
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
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
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
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
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).
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
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
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
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
(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
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.
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
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):
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
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
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
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
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
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
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,
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ä
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
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
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
Ää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ää
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
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
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 Γ
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)
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
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
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.
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 /
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,
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
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ä,
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
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.
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
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
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
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
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
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
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
8. Kieliopit ja kielet
8. Kieliopit ja kielet Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää siipiään" on kieliopillisesti
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen
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
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
kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM
Kurssi tähän asti: säännölliset yhteydettömät ratkeavat { a n } { a n b n } { a n b n c n } tunnistettavat A TM HALT TM kaikki kielet A TM HALT TM TOTAL TM TOTAL TM EQ TM EQ TM 277 5. Laskennan vaativuus
815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
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
