10. Satunnaisalgoritmit

Samankaltaiset tiedostot
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:

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

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

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

Säännöllisen kielen tunnistavat Turingin koneet

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

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

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

5.3 Ratkeavia ongelmia

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Muita vaativuusluokkia

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

3. Laskennan vaativuusteoriaa

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

6.1 Rekursiiviset palautukset

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

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

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

2017 = = = = = = 26 1

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

Chomskyn hierarkia ja yhteysherkät kieliopit

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

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

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

3. Laskennan vaativuusteoriaa

Turingin koneen laajennuksia

Täydentäviä muistiinpanoja laskennan rajoista

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

LUKUTEORIA A. Harjoitustehtäviä, kevät (c) Osoita, että jos. niin. a c ja b c ja a b, niin. niin. (e) Osoita, että

Lisää pysähtymisaiheisia ongelmia

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Rekursiiviset palautukset [HMU 9.3.1]

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

Kertausta 1. kurssikokeeseen

Formalisoidaan hieman täsmällisemmin, millaisia suoritustakuita satunnaisalgoritmeilta voidaan vaatia.

Algoritmin määritelmä [Sipser luku 3.3]

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

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

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

Rajoittamattomat kieliopit

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

6. Approksimointialgoritmit

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


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

Pinoautomaatit. Pois kontekstittomuudesta

Shorin algoritmin matematiikkaa Edvard Fagerholm

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Automaatit. Muodolliset kielet

Rajoittamattomat kieliopit (Unrestricted Grammars)

Yhteydettömän kieliopin jäsennysongelma

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

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

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

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

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Ratkeavuus ja efektiivinen numeroituvuus

2. Laskettavuusteoriaa

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

4.3. Matemaattinen induktio

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

ALKULUKUJA JA MELKEIN ALKULUKUJA

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

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

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

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

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

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

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.

Lukuteorian kertausta

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

JOHDATUS LUKUTEORIAAN (syksy 2017) HARJOITUS 3, MALLIRATKAISUT

Primitiiviset juuret: teoriaa ja sovelluksia

811120P Diskreetit rakenteet

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

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

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

Algoritmit 2. Luento 1 Ti Timo Männikkö

LUKUTEORIA johdantoa

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

ICS-C2000 Tietojenkäsittelyteoria

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

Juuri 11 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Laskennan vaativuus ja NP-täydelliset ongelmat

Transkriptio:

316 10. Satunnaisalgoritmit Probabilistic algorithms, randomized algorithms Toinen tapa liiallisen laskennallisen vaativuuden kanssa toimeen tulemiseksi ovat satunnaisalgoritmit Jotkin ongelmat, joissa deterministinen algoritmi ei tahdo toimia, ovat helpohkosti ratkaistavissa kolikkoa heittämällä Satunnaisuus voi johtaa vinoumaan Kuitenkin eksaktin ratkaisun laskeminen voi olla liikaa aikaa vaativaa Esimerkiksi tilastotieteessä suosittu otantamenetelmä Sen sijaan, että äänestyskäyttäytyminen yritettäisiin kysyä kaikilta äänioikeutetuilta, ennuste perustetaan satunnaisesti valitun populaation antamiin vastauksiin 317 Luokka BPP Probabilistinen Turingin kone N on epädeterministinen kone, jossa jokainen epädeterministinen askel on kolikonheitto-askel Tällaisella askelella on kaksi mahdollista seuraajaa Kuhunkin laskentapuun haaraan b liitetään todennäköisyys Pr[b] = 2 -k missä k on haaraan liittyvien kolikonheittoaskelten lukumäärä (syötteellä w) Todennäköisyys, että N hyväksyy syötteen w on Pr[ N hyväksyy syötteen w] Pr[ b] b A missä A on hyväksyvien laskentahaarojen joukko 1

318 Pr[N hylkää syötteenw] = 1 Pr[N hyväksyy syötteen w] Tavalliseen tapaan Turingin kone tunnistaa kielen, jos se hyväksyy kieleen kuuluvat merkkijonot ja hylkää ne, jotka eivät siihen kuulu Paitsi, että probabilistiselle koneelle sallitaan pieni virheen todennäköisyys Kaikilla 0 < ½ sanomme, että N tunnistaa kielen A virhetodennäköisyydellä jos w A Pr[N hyväksyy w:n] 1 w A Pr[N hylkää w:n] 1 N:ää simuloimalla saaavan ratkaisun virhe on siis korkeintaan Virheen todennäköisyys voi olla myös syötteen pituudesta riippuva; esim. eksponentiaalisen pieni: = 2 -n 319 Määritelmä. BPP on niiden kielten luokka, jotka voidaan tunnistaa probabilistisella polynomiaikaisella Turingin koneella virhetodennäköisyydellä. Virhetodennäköisyydeksi kelpaisi :n sijaan mikä tahansa vakio väliltä ]0, ½[ Seuraavan vahvistuslemman (amplification lemma) perusteella virhetodennäköisyys voidaan aina ajaa eksponentiaalisen pieneksi Jos satunnaisalgoritmin virhetodennäköisyys on 2-100, niin se antaa virheellisen vastauksen paljon todennäköisemmin laitteistovirheen takia kuin siksi, että kolikonheitto on ollut epäsuotuisa. 2

320 Lemma 10.5. Olkoon kiinnitetty vakio aidosti välillä 0 ja ½. Tällöin mille tahansa polynomille p(n), virhetodennäköisyyden puitteissa toimivalla probabilistisellä polynomiaikaisella Turingin koneella N 1 on olemassa ekvivalentti polynomiaikainen probabilistinen Turingin kone N 2, jonka virhetodennäköisyys on korkeintaan 2 -p(n). Todistus. (Ajatus) N 2 simuloi N 1 :tä suorittamalla sitä polynomisen määrän kertoja ja suorittamalla enemmistöäänestyksen. Virheen todennäköisyys pienenee eksponentiaalisesti suorituskertojen lukumäärän mukaan. 321 Alkuluvut Olkoon p+ = { 0,, p 1 } Jokainen kokonaisluku on ekvivalentti modulo p jonkin joukon p + alkion kanssa Fermat n pieni lause. Jos p on alkuluku ja a p+, niin a p 1 1 (mod p). Esimerkiksi 2 7 1 = 2 6 = 64 ja 64 mod 7 = 1 kun taas 2 6 1 = 2 5 = 32 ja 32 mod 6 = 2 joten 6 ei ole alkuluku Luvun 6 todetaan olevan yhdistetty ilman tekijöihin jakoa! 3

322 Fermat n pieni lause siis (melkein) antaa alkulukutestin Luvun p sanotaan selvittävän Fermat n testin pisteessä a, jos a p 1 1 (mod p) Luku p on pseudo-alkuluku, jos se selvittää Fermat n testin kaikilla itseään pienemmillä luvuilla a s.e. a ja p ovat keskenään alkulukuja Vain harvinaiset ns. Carmichaelin luvut ovat pseudo-alkulukuja olematta alkulukuja Jos luku ei ole pseudo-alkuluku, niin se selvittää Fermat n testin korkeintaan puolessa pisteitä Näin ollen saamme helposti eksponentiaalisen virhetodennäköisyyden omaavan pseudo-alkulukujen tunnistusalgoritmin 323 Pseudo-alkuluku(p) 1. Valitse satunnaiset a 1,,a k p + 2. Laske arvo a i p 1 mod p kullakin i 3. Jos kaikki lasketut arvot ovat 1 hyväksy, muuten hylkää Jos p ei ole pseudo-alkuluku, niin se selvittää kunkin satunnaisesti valitun testin korkeintaan todennäköisyydellä ½ Todennäköisyys selvitä kaikista k:sta testistä on siis 2 k Algoritmin aikavaativuus on polynominen syötteen pituuden suhteen Vielä pitäisi päästä eroon Carmichaelin luvuista 4

324 Luvulla 1 on täsmälleen neliöjuuret 1 ja -1modulo mikä tahansa alkuluku p Useilla yhdistetyillä luvuilla, varsinkin kaikilla Carmichaelin luvuilla, 1:llä on neljä tai useampia neliöjuuria Esimerkiksi ±1 ja ±8 ovat luvun 1 neljä neliöjuurta modulo 21 Saamme luvun 1 neliöjuuren jos p selvittää Fermat n testin pisteessä a sillä nyt a p 1 mod p 1, joten a (p 1)/2 mod p on 1:n neliöjuuri Voimme toistuvasti puolittaa eksponentin niin kauan kuin se pysyy kokonaislukuna 325 Alkuluku(p) % hyväksy = syöte p on alkuluku 1. Jos p on parillinen, niin hyväksy jos p = 2, muuten hylkää 2. Valitse satunnaiset a 1,,a k p + 3. Jokaiselle i { 1,, k } a) Laske a p 1 mod p ja hylkää jos erisuuri kuin 1 b) Olkoon p 1 = st, missä s on pariton ja t = 2 h on 2:n potenssi c) Laske arvot a i s 2 0, a i s 2 1,, a i s 2 h modulo p d) Jos jokin lasketuista arvoista on erisuuri kuin 1, niin valitse viimeinen niistä ja hylkää, jos se on erisuuri kuin 1 4. Kaikki testit on selvitetty, joten hyväksy 5

326 Lemma 10.7 Jos p on pariton alkuluku, niin Pr[Alkuluku hyväksyy p:n] = 1. Todistus. Jos p on alkuluku, niin yksikään laskentahaara ei hylkää: Hylkääminen askelessa 3a tarkoittaa, että (a p 1 mod p) 1, joten Fermat n pienen lauseen mukaan p on yhdistetty luku. Jos hylkäys tapahtuu askelessa 3d, niin on olemassa b p+ s.e. b ±1 (mod p) ja b 2 1 (mod p). Näin ollen, b 2 1 0 (mod p). Tekijöimällä saadaan (b 1)(b + 1) 0 (mod p), jonka perusteella (b 1)(b + 1) = cp jollakin positiivisella kokonaisluvulla c. Koska b ±1 (mod p), niin sekä b 1ja b + 1 ovat välillä ]0, p[. Täten p on yhdistetty luku, koska alkuluvun monikertaa ei voi ilmaista kahden sitä pienemmän luvun tulona. 327 Seuraava lemma osoittaa, että algoritmi tunnistaa yhdistetyt luvut suurella todennäköisyydellä Lukuteorian yhden perustuloksen, kiinalaisen jäännöslauseen (Chinese remainder theorem), mukaan on pq :n ja ( p q ):n välillä on suora yhteys jos p ja q ovat keskenään alkulukuja: Jokainen r pq vastaa paria (a, b), missä a p ja b q s.e. r a (mod p) ja r b (mod q) 6

328 Lemma 10.8 Jos p on pariton yhdistetty luku, niin Pr[Alkuluku hyväksyy p:n] 2 k. Todistus. Sivuutetaan, hyödyntää kiinalaista jäännöslausetta. Olkoon ALKULUVUT = { n n on alkuluvun binääriesitys } Edellinen algoritmi ja sen analyysi antaa meille tuloksen Lause 10.9 ALKULUVUT BPP Huomattakoon, että alkulukujen satunnaisen tunnistaja-algoritmin virhe on yksipuolinen. Kun syöte hylätään, niin se on varmasti yhdistetty luku. Virhe voi tapahtua vain syöte hyväksyttäessä. 329 Virhe tapahtuu siis vain yhdistetyllä luvulla. Kaikilla alkuluvuilla algoritmi antaa oikean vastauksen. Yksisuuntainen virhe on niin yleinen satunnaisalgoritmien ominaisuus, että sille on olemassa oma vaativuusluokkansa RP Määritelmä 10.10 RP on niiden kielten luokka, jotka ovat tunnistettavissa polynomiaikaisella probabilistisellä Turingin koneella s.e. kieleen kuuluvat merkkijonot hyväksytään vähintään todennäköisyydellä ½ ja kieleen kuulumattomat hylätään todennäköisyydellä 1. Edellä olevan perusteella siis YHDISTETYT RP 7

330 ALKULUVUT P Fermat n pienen lauseen seurauksena pätee: Lause A. Olkoot a ja p keskenään alkulukuja ja p > 1. p on alkuluku jos ja vain jos (x a) p (x p a) (mod p) x:llä ei tässä ole merkitystä, vain polynomin (x a) p kertoimet merkitsevät Polynomin (p 1):n keskimmäisen termin kertoimet ovat p:llä jaollisia kokonaislukuja, eli = 0 modulo p Jäljelle jää siis vain ensimmäinen termi x p ja viimeinen termi a p, joka on a modulo p Valitettavasti vain p:n alkulukuominaisuuden ratkaiseminen tämän perusteella vaatii eksponentiaalisen ajan 331 Agrawal (1999): riittää tarkastella polynomia (x a) p modulo x r 1 Jos r on riittävän suuri, ainoat testin läpäisevät yhdistetyt luvut ovat parittomien alkulukujen potenssit Luvun r siis tulisi olla riittävän suuri, mutta toisaalta riittävän pieni, jottei menetelmän vaativuus kasva liikaa Kayal & Saxena (2000): Todistamattomaan konjektuuriin perustuen r:n ei tarvitse olla suurempi kuin 4(log 2 p), jolloin testimenetelmän vaativuus on vain O(log 3 n) eli kuuluu P:hen Valitettavasti vain tulos perustuu todistamattomaan väitteeseen 8

332 Sophie Germain alkuluvut: sekä q että 2q + 1 ovat alkulukuja Agrawal, Kayal & Saxena (2002): Jos löytyy SG-alkulukujen pari q ja 2q + 1 s.e. q 4 2q 1 log p niin r:n ei tarvitse olla arvoltaan kuin korkeintaan 2q 1 log p 2 Valitettavasti tämä testi on rekursiivinen ja sen vaativuus on O(log 12 n) edellä mainitun O(log 3 n):n sijaan 333 Deterministinen-alkuluku(n) 1. if n on muotoa a b jollain b > 1 then hylkää; 2. r 2; 3. while r < n do a) if syt(n, r) 1 then hylkää; b) if Deterministinen-alkuluku(r) then % r > 2 i. Olkoon q (r 1):n suurin tekijä; ii. if q > 4sqrt(r) log n and n (r 1)/q 1 (mod r) then break; c) r r+ 1; 4. for a 1 to 2sqrt(r) log n do if (x a) n (x n a) (mod x r 1, n) then hylkää; 5. hyväksy syöte; 9

334 Rivin 1 testi poistaa Agrawalin (1999) testin edellytysten mukaisesti parittomien alkulukujen potenssit Rivin 3 silmukka etsii Sophie Germain alkulukuparin q ja r Rivi 3a) testaa lausetta A varten, että n ja r ovat keskenään alkulukuja Rivin 4 silmukka tutkii alkulukuominaisuuden lauseen A muunnoksella (Agrawal, 1999) arvoon 2sqrt(r) log n asti (AKS, 2002) Koska lause A pätee jos ja vain jos n on alkuluku, niin algoritmin antama päätös on korrekti Muut muutokset vaikuttavat vain algoritmin vaativuuteen, ei sen oikeellisuuteen 335 Yhteenveto Kaikille laskennallisille ongelmille ei ole ohjelmallista ratkaisua Deterministisellä äärellisellä automaatilla on yksikäsitteinen minimiautomaatti. Minimiautomaatin muodostaminen on suoraviivaista Epädeterministiset äärelliset automaatit ovat yhtä vahvoja kuin deterministisetkin Kieli on säännöllinen se voidaan tunnistaa äärellisellä automaatilla se voidaan kuvata säännöllisellä lausekkeella se voidaan tuottaa oikealle lineaarisella kieliopilla 10

336 Säännöllisen kielen merkkijonoja voidaan ''pumpata'' On olemassa mielekkäitä formaaleja kieliä, jotka eivät ole säännöllisiä Kontekstittomat kielet ovat säännöllisten kielten aito yliluokka Kieli on kontekstiton jos ja vain jos se voidaan tunnistaa pinoautomaatilla Churchin-Turingin teesin mukaan mikä tahansa tietokoneella ratkeava ongelma voidaan ratkaista Turingin koneella Turingin koneiden laajennukset - mukaan lukien epädeterministiset Turingin koneet - ovat laskentavoimaltaan ekvivalentteja standardimallisen yksinauhaisen koneen kanssa 337 Eri konevarianttien ''tehokkuudet'' vaihtelevat Rajoittamattomilla kieliopeilla tuotettavat kielet ovat ekvivalentteja Turingin koneilla tunnistettavien kielten kanssa Totaalinen Turingin kone pysähtyy kaikilla syötteillä Formaali kieli on RE-kieli, jos se voidaan tunnistaa Turingin koneella ja rekursiivinen, jos on olemassa totaalinen tunnistava kone A ja B rekursiivisia, A B ja A B rekursiivisia A,B RE (A B),(A B) RE A rekursiivinen A, RE A RE, ei rekursiivinen RE 11

338 D = { c { 0, 1 }* c L(M c ) } RE Esim. A DFA, E DFA ja EQ DFA ovat ratkeavia (rekursiivisia) kieliä U = { M, w w L(M) } RE, ei rekursiivinen = { M, w w L(M) } RE H = { M, w M(w) } RE, ei rekursiivinen = { M, w M(w) } RE Chomskyn kieliluokat: äärelliset säännölliset kontekstittomat kontekstiset rajoittamattomilla kieliopeilla tuotettavat kielet (= RE) 339 NE = { M M on Turingin kone ja L(M) } RE, ei rekursiivinen REG = { M M on Turingin kone ja L(M) on säännöllinen } ei ole rekursiivinen Ricen lause: kaikki Turingin koneiden epätriviaalit semanttiset ominaisuudet ovat ratkeamattomia Lineaarisesti rajoitettu automaatti (LRA) ei voi ottaa lisää työtilaa käyttöönsä A LRA on ratkeava, kun taas E LRA on ratkeamaton A * voidaan palauttaa rekursiivisesti B:hen, B *, merk. A m B, jos on olemassa rekursiivinen funktio f: * * s.e. x A f(x) B x * 12

340 A { 0, 1 }* on RE-täydellinen, jos 1.A RE ja 2.B m Akaikilla B RE Kieli U on RE-täydellinen Turingin koneiden vaativuusanalyysissä tarkastellaan pahinta tapausta tietyn pituisella syötteellä Vaativuusfunktioiden kertaluokat O,, o, Työnauhojen lukumäärä ei vaikuta oleellisesti Turingin koneen tehokkuuteen Deterministisen ja epädeterministisen koneen tehokkuusero sen sijaan on eksponentiaalinen 341 P = k 0 DTIME(n k + k) EXPTIME = k 0 DTIME(2 nk ) P:hen kuuluvat kielet, jotka voidaan tunnistaa syötteen pituuden suhteen polynomisessa ajassa Esim. suunnatun verkon polkuongelma PATH ja keskenään alkulukuja olevien lukuparien tunnistaminen ovat luokan P ongelmia Vastaavat epädeterministiset yhdisteluokat ovat NP ja NEXPTIME Esim. klikkiongelma ja osajoukkosumma ovat luokan NP ongelmia Luokan P ongelmat ovat käytännössä ratkeavia 13

342 P NP. Lisäksi NP:ssä on ongelmia, joille ei tunneta polynomista ratkaisualgoritmia A * voidaan palauttaa polynomisesti B:hen, B *, merk. A mp B, jos on olemassa polynomisessa ajassa laskettava funktio f: * * s.e. x A f(x) B x * A { 0, 1 }* on NP-täydellinen, jos 1.A NP ja 2.B mp Akaikilla B NP Kaikki luokan NP ongelmat voidaan palauttaa NP-täydelliseen ongelmaan polynomisesti. Jos jokin NP-täydellinen ongelma kuuluu P:hen, niin P = NP 343 Ongelman A NP todistaminen NP-täydelliseksi: 1. Valitse samankaltainen tunnetusti NP-täydellinen ongelma B 2. Muodosta polynominen palautus f: B mp A; lauseen 7.36 perusteella myös A on NP-täydellinen NP-täydellisiä ongelmia: SAT, CSAT, 3SAT, VC, IS, KLIKKI, Hamiltonin polku, TSP, Osajoukkosumma ja minsc PSPACE = k 0 DSPACE(n k ) NPSPACE = k 0 NSPACE(n k ) PSPACE P NP EXPTIME NPSPACE EXPSPACE NEXPTIME NEXPSPACE 14

344 TQBF on PSPACE-täydellinen Samoin shakin ja GOn "asymptoottiset" versiot L = DSPACE(log n) NL = NSPACE(log n) PATH NL on NL-täydellinen L =?= NL NL P Laskennallisesti vaativaa ongelmaa voidaan pyrkiä approksimoimaan tehokkaasti Solmupeiteongelmalla on tehokas 2-approksimointialgoritmi Joukkopeiteongelmalla on tehokas (ln m + 1)- approksimointialgoritmi 345 Satunnaisalgoritmit ovat toinen mahdollinen tapa toimia laskennallisesti vaativien ongelmien kohdalla Alkulukujen tunnistaminen satunnaisalgoritmilla on melko helppoa Nyttemmin on olemassa myös deterministinen polynomiaikainen algoritmi alkulukujen tunnistamiseksi 15