Polynomiset palautukset ja NP-täydellisyys

Samankaltaiset tiedostot
SAT-ongelman rajoitetut muodot

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

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

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

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:

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

Rekursiiviset palautukset [HMU 9.3.1]

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Lisää pysähtymisaiheisia ongelmia

6. Approksimointialgoritmit

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

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

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

Turingin koneen laajennuksia

Laskennan vaativuus ja NP-täydelliset ongelmat

Muita vaativuusluokkia

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

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

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

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Säännöllisen kielen tunnistavat Turingin koneet

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

3. Laskennan vaativuusteoriaa

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

1. Universaaleja laskennan malleja

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

Johdatus logiikkaan I Harjoitus 4 Vihjeet

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 4 Ratkaisuehdotukset

Rajoittamattomat kieliopit

Algoritmit 2. Luento 14 To Timo Männikkö

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

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.

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

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

3. Laskennan vaativuusteoriaa

Tehtävä 1. Päättele resoluutiolla seuraavista klausuulijoukoista. a. 1 {p 3 } oletus. 4 {p 1, p 2, p 3 } oletus. 5 { p 1 } (1, 2) 7 (4, 6)

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

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

Yhteydettömän kieliopin jäsennysongelma

Täydentäviä muistiinpanoja laskennan rajoista

Luonnollisen päättelyn luotettavuus

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

Chomskyn hierarkia ja yhteysherkät kieliopit

2. Laskettavuusteoriaa

Säännöllisten kielten sulkeumaominaisuudet

Ratkaisu: Käytetään induktiota propositiolauseen A rakenteen suhteen. Alkuaskel. A = p i jollain i N. Koska v(p i ) = 1 kaikilla i N, saadaan

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Vaihtoehtoinen tapa määritellä funktioita f : N R on

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

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

5.3 Ratkeavia ongelmia

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

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

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

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

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

DIFFERENTIAALI- JA INTEGRAALILASKENTA I.1. Ritva Hurri-Syrjänen/Syksy 1999/Luennot 6. FUNKTION JATKUVUUS

isomeerejä yhteensä yhdeksän kappaletta.

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

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

2. Laskettavuusteoriaa

Matematiikan ja tilastotieteen laitos Reaalianalyysi I Harjoitus Malliratkaisut (Sauli Lindberg)

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

NP-täydellisyys. Joonas Järvenpää ja Topi Talvitie. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

Propositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E.

Induktiota käyttäen voidaan todistaa luonnollisia lukuja koskevia väitteitä, jotka ovat muotoa. väite P(n) on totta kaikille n = 0,1,2,...

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

Pinoautomaatit. Pois kontekstittomuudesta

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

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

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

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (Predikaattilogiikka )

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

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

Kirjoita käyttäen propositiosymboleita, konnektiiveja ja sulkeita propositiologiikan lauseiksi:

Algoritmi on periaatteellisella tasolla seuraava:

Joukot. Georg Cantor ( )

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Transkriptio:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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