3SAT-ongelman NP-täydellisyys [HMU 10.3.4] erotukseksi yleisestä CNF-esityksestä, kaikilla kaavoilla ei ole 3-CNF-esitystä; esim. x 1 x 2 x 3 x 4 esitämme muunnoksen, jolla polynomisessa ajassa mielivaltaisesta CNF-kaavasta φ tuotetaan 3-CNF-kaava ψ joka on toteutuva joss φ on Tämän muunnoksen olemassaolosta seuraa siis Lause 3.13: CSAT p m 3SAT. Koska CSAT on NP-täydellinen ja 3SAT NP, saadaan Korollaari 3.14: [HMU Thm 10.15] 3SAT on NP-täydellinen. Huom. SAT-ongelma rajoitettuna 2-CNF-kaavoihin ratkeaa polynomisessa ajassa. 238
Todistus sille että CSAT p m 3SAT Olkoon F (x 1,..., x n ) klausuuli (siis literaalien disjunktio). Muodostamme 3-CNF-kaavan F (x 1,..., x n, y 1,..., y m ) missä y i :t ovat uusia muuttujia ja F (v 1,..., v n ) = 1 jos ja vain jos F (v 1,..., v n, v 1,..., v m ) = 1 joillain (v 1,..., v m ) { 0, 1 }m. Tästä seuraa yleisemmin, että kun φ on CNF-kaava φ = niin voidaan muodostaa 3-CNF-kaavojen konjunktio, eli edelleen 3-CNF-kaava, k ψ = F j missä φ(v 1,..., v n ) = 1 joss ψ(v 1,..., v n, v 1,..., v l ) = 1 jollain (v 1,..., v l ) { 0, 1 }l, joten erityisesti φ on toteutuva joss ψ on toteutuva. Huom. eri kaavoihin F j lisättävien muuttujien pitää olla erillisiä. k j=1 j=1 F j 239
Olkoon F klausuuli. Neljä tapausta sen mukaan, kuinka monta literaalia z i klausuuli F sisältää: 1. F = z 1 missä z 1 = x i tai z 1 = x i jollain i. Uudet muuttujat u ja v; F = (z u v) (z u v) (z u v) (z u v). Koska uudet muuttujat u ja v on otettu kaikilla merkkikombinaatioilla, ainoa tapa saada F = 1 on valita z 1 = 1 jolloin F = 1. 2. F = z 1 z 2. Uusi muuttuja w; F = (z 1 z 2 w) (z 1 z 2 w). Kuten edellisessä kohdassa F voidaan toteuttaa vain tekemällä F todeksi. 3. F = z 1 z 2 z 3 : valmiiksi 3-CNF; F = F. 240
4. F = z 1 z 2... z m missä m 4. Uudet muuttujat y 1,..., y m 3 ; F = (z 1 z 2 y 1 ) (z 3 y 1 y 2 ) (z 4 y 2 y 3 )... (z m 2 y m 4 y m 3 ) (z m 1 z m y m 3 ). Jos F = 1, niin z i = 1 jollain 1, joten F = 1 kun valitaan y j = 1 kun j < i 1 ja y j = 0 muuten. Jos F = 0 ja siis z i = 0 kaikilla i, niin F = 0 miten tahansa y j :t valitaankin. Jos nimittäin yritetään saada F = 1, pitää 1. klausuulin ja ehdon z 1 = z 2 = 0 takia valita y 1 = 1. Kun y 1 = 1 ja z 3 = 0, toisen klausuulin takia pitää ottaa y 2 = 1. Näin päädytään lopulta valitsemaan y m 3 = 1, mutta tällöin viimeinen klausuuli jää toteutumatta. Siis φ CSAT jos ja vain jos ψ 3SAT. Selvästi muunnos φ ψ voidaan laskea polynomisessa ajassa. 241
NP-täydellisyys tähän mennessä: jos jollakin NP-täydellisellä ongelmalla on polynominen ratkaisualgoritmi, niin P = NP tätä ei pidetä luultavana, koska se tarkoittaisi että eksponentiaalisen suuria hakuavaruuksia voitaisiin etsiä polynomisessa ajassa suoraan määritelmästä todistettiin, että SAT on NP-täydellinen suoraviivaisilla palautuksilla osoitettiin, että jo SAT-ongelman rajoitetut erikoistapaukset CSAT ja 3SAT ovat NP-täydellisiä Jatko: [HMU 10.4] osoitetaan 3SAT p m IS ja 3SAT p m HC siis IS ja HC NP-täydellisiä aiemmin osoitettu IS p m VC ja HC p m TSP joten myös VC ja TSP NP-täydellisiä 242
Lause 3.15: [HMU Thm 10.18] Riippumaton joukko -ongelma on NP-täydellinen Todistus: Tarkastellaan siis joukkoa IS = { G, k G sisältää k-solmuisen riippumattoman joukon }. Harjoitustehtävänä osoitetaan IS NP. Muodostetaan palautus f: 3SAT p m IS. Koska 3SAT on NP-täydellinen, väite seuraa. Siis muodostetaan f(φ) = G, k, missä G, k IS jos ja vain jos φ on toteutuva 3-CNF-kaava. Erityisesti jos x ylipäänsä ei ole 3-CNF-kaava, pitää olla f(x) IS. Tällaisissa tapauksissa valitaan esim. f(x) = (V, E), n + 1 missä V = n. Keskitytään jatkossa tapaukseen jossa x todella on 3-CNF-kaava. 243
Olkoon siis φ 3-CNF-kaava, jossa m klausuulia: φ = m i=1 (z i,1 z i,2 z i,3 ) missä kukin z i,r on muotoa x j tai x j. Nyt f(φ) = (V, E), k missä k = m V = 3m ja V = { v i,r i { 1,..., m }, r { 1, 2, 3 } } (v i,r, v i,s ) E kaikilla i { 1,..., m }, r, s { 1, 2, 3 }, r s kun i j, niin (v i,r, v j,s ) E jos z i,r = z j,s tai z i,r = z j,s Selvästi f laskettavissa polynomisessa ajassa. 244
Esimerkki 3.16: Muodostetaan G, k = f(φ) kun φ = (x 1 x 3 x 4 ) ( x 2 x 4 x 5 ) ( x 1 x 5 x 6 ) (x 1 x 6 x 5 ). Rengastetuista solmuista muodostuu kokoa m = 4 oleva riippumaton joukko. Tämä vastaa kaavan toteuttavia arvoja x 1 = 1, x 5 = 0, x 6 = 0, muut muuttujat mielivaltaisia x 1 x 2 x 1 x 1 x 3 x 4 x 5 x 6 x 4 x 5 x 6 x 5 245
Nähdään että φ toteutuva verkossa G on m solmun riippumaton joukko U: : Ol. φ toteutuva. Valitaan muuttujien x i arvot siten, että jokaisessa kaavan φ klausuulissa i ainakin yksi literaali z i,r saa arvon 1. Valitaan joukkoon U vastaavat v i,r. Nyt U sisältää tasan yhden solmun jokaisesta kolmiosta. Lisäksi valitut solmut vastaavat tosia literaaleja, joten minkään kahden eri kolmiosta valitun solmun välillä ei ole kaarta. Siis U on riippumaton ja U = m. : Ol. m solmun joukko U riippumaton. Nyt U sisältää tasan yhden solmun joka kolmiosta. Koska minkään eri kolmioista valittujen solmujen välillä ei ole kaarta, voidaan ilman ristiriitaa asettaa todeksi valittuja solmuja vastaavat literaalit. Jokaiseen klausuuliin tulee ainakin yksi tosi literaali; φ toteutuva. 246
Tarkastellaan seuraavaksi suunnattu Hamiltonin kehä -ongelmaa (Directed Hamiltonian Circuit, DHC): Annettu: suunnattu verkko G Kysymys: onko verkossa G suunnattu polku joka käy jokaisessa solmussa tasan kerran ja palaa lähtösolmuunsa Siis eroksi alkuperäiseen Hamiltonin kehä -ongelmaan (HC) verkon kaarilla on suunta, ja kehän pitää näitä suuntia noudattaa. Lause 3.17: [HMU Thm 10.21] DHC on NP-täydellinen. Koska HC NP ja harjoitustehtävänä osoitetaan DHC p m HC, pätee Korollaari 3.18: [HMU Thm 10.23] HC on NP-täydellinen. 247
Todistus: Kuten suuntaamattomassa tapauksessa nähdään helposti että DHC NP. Muodostetaan palautus f: 3SAT p m DHC, mistä väite nyt seuraa. Olkoon annettu n-muutujainen 3-CNF-kaava φ jossa m klausuulia m φ = (z j,1 z j,2 z j,3 ). j=1 Suunnattu verkko f(φ) = G = (V, E) muodostuu kahdenlaisista osaverkoista eli laitteista (gadget): jokaista muuttujaa x i kohti laite A i, i = 1,..., n laite A i voidaan käydä läpi kahdella eri tavalla jotka koodaavat valintaa x i = 0 tai x i = 1 jokaista klausuulia β j = z j,1 z j,2 z j,3 kohti laite B j, j = 1,..., m laitteen B j läpikäynti voidaan lomittaa laitteen A i läpikäyntiin joss muuttuja x i tekee todeksi klausuulin β j 248
Laite A i : laitteessa on 2m + 4 solmua a i, d i sekä b i,j ja c i,j, j = 0,..., m. Laitteen sisäiset kaaret: solmusta a i kaari solmuihin b i,0 ja c i,0 solmuista b i,m ja c i,m kaari solmuun d i solmusta b i,j kaari solmuun c i,j ja solmusta c i,j kaari solmuun b i,j, j = 0,..., m solmusta b i,j 1 kaari solmuun c i,j ja solmusta c i,j 1 kaari solmuun b i,j, j = 1,..., m Havaitaan että laitteen A i solmut voidaan käydä läpi kahdessa järjestyksessä: järjestys a i c i,0 b i,0 c i,1 b i,1... c i,m b i,m d i vastaa valintaa x i = 0 järjestys a i b i,0 c i,0 b i,1 c i,1... b i,m c i,m d i vastaa valintaa x i = 1 Eri laitteita yhdistävät kaaret esitellään pian. 249
b i,0... b i,1 b i,2 b i,m A i 1 a i d i A i+1 c i,0 c i,1 c i,2... c i,m A i Laite A i. Kuvasta puuttuu kaaret laitteisiin B j. 250
Laite B j : laitteessa 6 solmua r j,1, r j,2, r j,3, s j,1, s j,2, s j,3. Laitteen sisäiset kaaret: solmut r j,k sisältävä sykli: kaaret (r j,1, r j,2 ), (r j,2, r j,3 ) ja (r j,3, r j,1 ) solmut s j,k sisältävä sykli: kaaret (s j,1, s j,3 ), (s j,3, s j,2 ) ja (s j,2, s j,1 ) (huom. suunta) syklejä kytkevät kaaret (r j,1, s j,1 ), (r j,2, s j,2 ) ja (r j,3, s j,3 ) Havaitaan että jos Hamiltonin kehä tulee laitteeseen B j solmun r j,k kautta niin sen pitää vastaavasti poistua solmun s j,k kautta. (Kehä voi vierailla laitteessa B j useita kertoja, mutta jokaisen vierailun on noudatettava tätä sääntöä.) Muuten osa solmuista jäisi eristyksiin eikä enää pääsisi mukaan kehään. 251
A i r j,3 s j,3 A i r j,2 s j,2 A i r j,1 s j,1 Laite B j. Tässä literaalin β j muuttujat ovat x i, x i ja x i. 252
Laitteet A i yhdistetään yhdeksi isoksi sykliksi: solmusta d i kaari solmuun a i+1, i = 1,..., n 1 solmusta d n kaari solmuun a 1 Laite A i yhdistetään niihin laitteisiin B j joilla klausuuli β j sisältää literaalin x i tai x i : jos z j,k = x i niin lisätään kaaret (c i,j 1, r j,k ) ja (s j,k, b i,j ) jos z j,k = x i niin lisätään kaaret (b i,j 1, r j,k ) ja (s j,k, c i,j ) Havainto: Jos klausuuli β j sisältää literaalin x i (vast. x i ) ja laitteen A i läpikäyntijärjestys vastaa valintaa x i = 1 (vast. x i = 0) niin laitteen B j läpikäynti voidaan sijoittaa laitteen A i läpikäynnin lomaan. 253
Verkkoon G = f(φ) ei tule muita kaaria kuin edellä luetellut. Selvästi f voidaan laskea polynomisessa ajassa. Seuraavasta väitteestä seuraa että f: 3SAT p m DHC. Väite: φ on toteutuva verkossa G on Hamiltonin kehä : Olkoon φ = 1 kun (x 1,..., x n ) = (v i,..., v n ) { 0, 1 } n. Siis jokaisella klausuulilla β j = z j,1 z j,2 z j,3 ainakin yksi literaali z j,k on tosi kun (x 1,..., x n ) = (v i,..., v n ). Valitaan jokin indeksi k(j) { 1, 2, 3 } s.e. jollain i joko z j,k(j) = x i ja v i = 1, tai z j,k(j) = x i ja v i = 0, Siis klausuulin numero j toteutuminen on siinä olevan literaalin numero k(j) vastuulla. 254
Verkkoon G voidaan muodostaa Hamiltonin kehä seuraavasti: 1. käy laite A i läpi järjestyksessä a i c i,0 b i,0... c i,m b i,m d i jos v i = 0 a i b i,0 c i,0... b i,m c i,m d i jos v i = 1 2. yhdistä laitteiden A i läpikäynnit järjestyksessä A 1 A 2... A n A 1 3. kaikilla j = 1,..., m: jos z j,k(j) = x i (jolloin v i = 0), korvaa laitteen A i läpikäynnin kaari (b i,j 1, c i,j ) polulla (b i,j 1, r j,k(j),..., s j,k(j), c i,j ) missä r j,k(j),..., s j,k(j) on laitteen B j läpikäynti jos z j,k(j) = x i (jolloin v i = 1), korvaa laitteen A i läpikäynnin kaari (c i,j 1, b i,j ) polulla (c i,j 1, r j,k(j),..., s j,k(j), b i,j ) missä r j,k(j),..., s j,k(j) on laitteen B j läpikäynti 255
: Olkoon verkossa G Hamiltonin kehä. Jos kehä sisältää kaaren (a i, b i,0 ) valitaan v i = 1. Jos kehä sisältää kaaren (a i, c i,0 ) valitaan v i = 0. Selvästi tasan yksi näistä pätee. Väitetään että φ = 1 jos x i = v i kaikilla i. Jos kehä tulee laitteeseen B j solmun r j,k kautta, se poistuu solmun s j,k kautta; muuten osa laitteen solmuista leikkautuisi pois kehältä. Siis laitteen B j kautta voidaan siirtyä solmusta c i,j 1 solmuun b i,j jos β j sisältää literaalin x i ja solmusta b i,j 1 solmuun c i,j jos β j sisältää literaalin x i. 256
Siis jos v i = 1, laite A i käydään läpi järjestyksessä a i b i,0 c i,0 b i,1 c i,1... b i,m c i,m d i missä c i,j 1 b i,j tarkoittaa siirtymistä solmusta c i,j 1 solmuun b i,j joko suoraan tai laitteen B j kautta. Jos v i = 0, saadaan vastaavasti a i c i,0 b i,0 c i,1 b i,1... c i,m b i,m d i. Jos laitteessa B j käydään laitteen A i läpikäynnin välissä ja v i = 1, niin laitteeseen B j mennään kaarta (c i,j 1, r j,k ) jolloin z j,k = x i. Vastaavasti jos v i = 0 niin z j,k = x i. Siis z j,k = 1 kun valitaan x i = v i. Jokaisessa laitteessa B j käydään ainakin kerran, joten jokaisessa klausuulissa β j on ainakin yksi literaali z j,k joka saa arvon 1 kun x i = v i kaikilla i. 257
TSP HC DHC VC IS Yhteenveto todistetuista polynomisista palautuksista 3SAT CSAT SAT NP-täyd. Nuoli A B tarkoittaa A p m B Huom. kaikki NP-ongelmat on palautettu ongelmaan SAT (Lause 3.7). NP 258
Muita vaativuusluokkia ( ) Käydään lyhyesti läpi tärkeimpiä vaativuusluokkiin liittyviä tuloksia. Monet tunnetuista tuloksista ovat vaikeita todistaa, ja monet kysymykset ovat vielä auki. Lause 3.19 [Ladner 1975]: Jos P NP niin luokassa NP P on muitakin kuin NP-täydellisiä kieliä. Siis ei ole mahdollista, että luokka NP jakaantuisi toisaalta polynomisesti ratkeaviin ja toisaalta NP-täydellisiin ongelmiin: joko nämä ongelmaluokat yhtyvät tai niiden välissäkin on jotain. Eräs ehdokas välissä olevaksi ongelmaksi on verkkoisomorfia: Annettu: verkot G 1 = (V 1, E 1 ) ja G 2 = (V 2, E 2 ) Kysymys: onko olemassa bijektio f: V 1 V 2 jolla (u, v) E 1 joss ((f(u), f(v)) E 2 259
Luokan NP ongelmien komplementit [HMU 11.1] muodostavat luokan co-np = { A A NP }. Luokalla co-np on omat täydelliset ongelmansa. Lause 3.20: A on co-np-täydellinen jos ja vain jos A on NP-täydellinen. Todistus: Jos f on palautus B p m A, se on samalla palautus B p m A. Jos P = NP niin tietysti myös P = co-np. Joka tapauksessa selvästi P NP co-np. Nykytietämyksen mukaan seuraavat vaihtoehdot ovat kaikki mahdollisia: P = NP = co-np P NP mutta NP = co-np P = NP co-np mutta P NP ja P co-np P NP co-np ja NP co-np Näistä viimeistä pidetään ehkä luultavimpana. 260
Toisistaan poikkeavia aika- ja tilavaativuusluokkia on ääretön määrä. Määritelmä Funktio t on aikakonstruoituva, jos syötteellä 1 n luvun t(n) binääriesitys voidaan laskea ajassa O(t(n)). Kaikki järkevät vähintään n log n olevat funktiot ovat aikakonstruoituvia, esim. n log n, n 3/2, n 5, 2 n. Lause 3.21: Jos t on aikakonstruoituva, niin on olemassa ongelma A joka voidaan ratkaista ajassa O(t(n)) mutta ei ajassa O(t(n) 1 ɛ ) millään ɛ > 0.. Määritelmä Funktio s on tilakonstruoituva, jos syötteellä 1 n luvun s(n) binääriesitys voidaan laskea tilassa O(s(n)). Kaikki järkevät vähintään log n olevat funktiot ovat tilakonstruoituvia, esim. log n, n 3/2, n 5, 2 n. Lause 3.22: Jos s on tilakonstruoituva, niin on olemassa ongelma A joka voidaan ratkaista tilassa O(s(n)) mutta ei tilassa O(s(n) 1 ɛ ) millään ɛ > 0. 261
Koska P = NP? ja NP = co-np? ovat klassisia avoimia ongelmia, on hieman yllättävää että vastaavat tilavaativuusluokkia koskevat kysymykset helppoja : Lause 3.23 [Savitch 1970]: Olkoon s(n) n kaikilla n. Kaikki ongelmat, jotka voidaan ratkaista epädeterministisesti tilassa s(n), voidaan ratkaista deterministisesti tilassa O(s(n) 2 ). Korollaari 3.24: PSPACE = NPSPACE = co-npspace Tässä on siis merkitty co-c = { A A C } kuten aiemminkin. Komplementoinnin suhteen on saatu vielä tarkempikin tulos: Lause 3.25 [Immerman 1988, Szelepcsényi 1987]: Olkoon s(n) log n kaikilla n. Jos ongelma A voidaan tunnistaa epädeterministisesti tilassa s(n), niin A voidaan tunnistaa epädeterministisesti tilassa O(s(n)). (Tulos on mielekäs myös tapauksessa s(n) < n, kun tarkastellaan työtilaa eli syötteen säilyttämisestä ei makseta.) 262
Seuraava lause suhteuttaa karkeasti deterministiset aika- ja tilavaativuusluokat. Lause 3.26: Jos ongelman aikavaativuus on T (n), niin sen tilavaativuus on O(T (n)). Jos ongelman tilavaativuus on S(n), niin sen aikavaativuus on O(2 cs(n) ) jollain c > 0. Todistushahmotelma: Ajassa T (n) ei ehdi kuluttaa yli T (n) paikkaa muistia. Jos koneen M tilavaativuus on S(n) ja laskenta on kestänyt yli Q Γ S(n) askelta, jokin tilanne on toistunut, joten kone on ikuisessa silmukassa. Määritellään vielä eksponentiaalinen tilavaativuusluokka ESPACE = { L(M) M deterministinen, space M (n) = O(2 nk ) jollain k }. Korollaari 3.27: P NP PSPACE E ESPACE. Ylläolevien sisältyvyyksien aitoudesta ei tiedetä kuin seuraava Lause 3.28: P E ja PSPACE ESPACE 263
4. Yhteenveto Laskennan mallit Turingin kone on universaali laskennan malli: sen on tarkoitus kuvata kaikkia periaatteessa mahdollisia mekaanisia laskentoja alkuperäinen motivaatio logiikasta, ei tietokoneista laskettavuus Turingin koneella ei riipu mallin yksityiskohdista (erityisesti deterministisyydestä) vastaavia malleja on muitakin: rekursiiviset funktiot, yleiset kieliopit, Random Access Machine; ohjelmointikielet kaikki nämä määrittelevät saman käsitteen laskettavuus Churchin-Turingin teesi: Turingin koneet ovat oikea malli mekaaniselle laskennalle 264
Laskettavuusteoria peruskysymys: mitä voidaan laskea äärellisessä ajassa rekursiivisuus (ratkeavuus) ja rekursiivinen lueteltavuus (osittainratkeavuus) tärkeä tekninen yksityiskohta: Turingin koneen esitys merkkijonona, universaali Turingin kone universaalikieli L u : rekursiivisesti lueteltava, ei rekursiivinen muita ei-ratkeavia ongelmia: pysähtymisongelma, epätyhjyysongelma, tyhjyysongelma; Postin vastaavuusongelma Ricen lause: semanttiset ominaisuudet ratkeamattomia 265
rekursiivinen palautus A m B: ongelma A ainakin yhtä ratkeava kuin B tärkeä tekniikka: A todistetaan ratkeamattomaksi osoittamalla B m A missä B on jokin tunnettu ratkeamaton ongelma ongelma A on RE-täydellinen jos A on rekursiivisesti lueteltava ja B m A kaikilla rekursiivisesti lueteltavilla B RE-täydelliset ongelmat ovat maksimaalisen vaikeita osittain ratkeavia ongelmia esim. universaalikieli, pysähtymisongelma, epätyhjyysongelma 266
Vaativuusteoria peruskysymys: mitä voidaan laskea polynomisessa ajassa kertaluokat, aika- ja tilavaativuudet; vaativuusluokat, erityisesti P epädeterministiset vaativuusluokat, erityisesti NP avoin ongelma: onko P = NP, ts. vaikuttaako epädeterminismi siihen mikä on laskettavissa polynomisessa ajassa yleinen uskomus: P NP 267
polynominen palautus A p m B: ongelma A ainakin yhtä helppo kuin ongelma B A on NP-täydellinen jos A NP ja B p m A kaikilla B NP jos A on NP-täydellinen ja A ratkeaa deterministisesti polynomisessa ajassa, niin P = NP jos A on NP-täydellinen, on siis aihetta uskoa että A ei ratkea deterministisesti polynomisessa ajassa tärkeitä NP-täydellisiä ongelmia: SAT, 3SAT, HC, TSP, VC, IS,... ongelman A osoittaminen NP-täydelliseksi: 1. osoita A NP (yleensä helppoa) 2. osoita B p m A jollain NP-täydelliseksi tunnetulla B 268
LOPPU 269