3. Laskennan vaativuusteoriaa

Samankaltaiset tiedostot
Esimerkkejä polynomisista ja ei-polynomisista ongelmista

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

3. Laskennan vaativuusteoriaa

Turingin koneen laajennuksia

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Muita vaativuusluokkia

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

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

7. Aikavaativuus. Ohjelmistotekniikan laitos OHJ-2300 Johdatus tietojenkäsittelyteoriaan, syksy

Rekursiiviset palautukset [HMU 9.3.1]

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Lisää pysähtymisaiheisia ongelmia

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Algoritmi on periaatteellisella tasolla seuraava:

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

Algoritmit 2. Luento 14 To Timo Männikkö

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Algoritmit 1. Luento 1 Ti Timo Männikkö

SAT-ongelman rajoitetut muodot

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

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

Algoritmit 1. Luento 2 Ke Timo Männikkö

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

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

1. Universaaleja laskennan malleja

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

6. Approksimointialgoritmit

5.3 Ratkeavia ongelmia

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

6.1 Rekursiiviset palautukset

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

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

1. Universaaleja laskennan malleja

Laskennan vaativuus ja NP-täydelliset ongelmat

Algoritmit 2. Luento 14 Ke Timo Männikkö

Rajoittamattomat kieliopit (Unrestricted Grammars)

10. Satunnaisalgoritmit

Chomskyn hierarkia ja yhteysherkät kieliopit

Yhteydettömän kieliopin jäsennysongelma

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

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

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

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

Täydentäviä muistiinpanoja laskennan rajoista

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

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

Säännöllisen kielen tunnistavat Turingin koneet

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

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

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

2. Laskettavuusteoriaa

7.4 Sormenjälkitekniikka

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Polynomiset palautukset ja NP-täydellisyys

1.4 Funktioiden kertaluokat

Rajoittamattomat kieliopit

Algoritmin määritelmä [Sipser luku 3.3]

2. Laskettavuusteoriaa

Algoritmit 1. Luento 13 Ti Timo Männikkö

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

Laskennan teoria

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Automaatit. Muodolliset kielet

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Laskennan teoria

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Kertausta 1. kurssikokeeseen

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

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

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

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

Tietorakenteet ja algoritmit - syksy

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

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

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

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

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

Laskennanteoria: Mitä voimmelaskea tietokoneella ja kuinkatehokkaasti?

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Tietotekniikan valintakoe

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

Algoritmit 2. Luento 1 Ti Timo Männikkö

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

Onko algoritmiselle ongelmalle löydetty ratkaisualgoritmi riittävän hyvä?

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Transkriptio:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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