Keerukusteooria elemente Teema 5 Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 1 / 45
Sisukord 1 Algoritmi keerukus 2 Ülesannete keerukusklassid Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 2 / 45
Järgmine punkt 1 Algoritmi keerukus 2 Ülesannete keerukusklassid Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 3 / 45
Keerukus Iga lahenduvat ülesannet saab põhimõtteliselt arvutil lahendada, kuid praktikas ei pruugi see õnnestuda. Probleemiks on vajaminevate ressursside hulk: lahendamiseks kuluv aeg (ajaline keerukus) ja andmete salvestamiseks vajalik mälu (mahuline keerukus). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 4 / 45
Näide lahendusaja arvutmisest Keel L = {0 n 1 n n 0} on lahenduv. Kui palju aega kulub ühe lindiga Turingi masinal selle keele sõnede aktsepteerimiseks? = mitu takti läbib karakteristlik Turingi masin peatumiseni? Karakteristlik Turingi masin M 1 sisendi w {0,1} korral: 1 skaneerida lindilt sisendsõne w; kui kusagil on sümbol 0 sümbolist 1 paremal, siis mitte aktsepteerida ja peatuda; 2 korrata järgmist punkti seni, kuni lindil on nii nulle kui ühtesid; skaneerida lindil olevat sõne ja kustutada selle algusest üks 0 ja lõpust üks 1; 3 kui lint ei ole tühi (seal on mõningaid sümboleid 0 või sümboleid 1) siis mitte aktsepteerida ja peatuda; vastasel juhul (lint on tühi), siis aktsepteerida ja peatuda. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 5 / 45
Näide lahendusaja arvutmisest (2) Analüüs eeldusel, et sõne w sisaldab m nulli ja n ühte: Samm 1: Kontrollimaks sümbolite järjekorda kulub ülimalt m + n takti; kui sümbolite järjekord pole õige, siis algoritmi taktide arv k < m + n. Samm 2 : Iga tsükli joolsul kustutatakse kaks sümbolit ja kokku on samme (m +n) (m +n 2)+(m +n 4)+ + m n = Kui m n, siis omandab see valem kuju kui m < n, siis kuju (m + n + m n)n 2 (m + n m + n)m 2 = mn; = mn. (m + n m n )min(m,n). 2 Samm 3 : Sõltuvalt lugemis-kirjutamispea asukohast tuleb teha maksimaalselt m n sammu. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 6 / 45
Näide lahendusaja arvutmisest (2) Analüüs eeldusel, et sõne w sisaldab m nulli ja n ühte: Kokkuvõttes: Parimal juhul täidab masin kuni k = n + m takti; tulemus on mitte aktsepteerida. Taktide arv halvimal juhul : Kui m n (s.t. tulemus on mitte aktsepteerida) k = m + n + mn + m n = mn + 2m Kui m = n (s.t. tulemus on aktsepteerida) k = n 2 + 2n Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 6 / 45
Algoritmi keerukus Definitsioon Algoritmi keerukus on funktsioon f : N N, mis seab sisendandmete mahule n vastavusse algoritmi sammude arvu (ajaline keerukus) või kasutatava mälu mahu (mahuline keerukus). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 7 / 45
Algoritmi keerukus Definitsioon Algoritmi keerukus on funktsioon f : N N, mis seab sisendandmete mahule n vastavusse algoritmi sammude arvu (ajaline keerukus) või kasutatava mälu mahu (mahuline keerukus). Mõisted sammude arv ja kasutatav mälu sõltuvad arvuti tüübist / arvutamise mudelist. Näiteks Turingi masina mudeli korral: ajaline keerukus taktide / konfiguratsioonide arv; mahuline keerukus kasutatud lindipositsioonide arv. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 7 / 45
Algoritmi keerukus Definitsioon Algoritmi keerukus on funktsioon f : N N, mis seab sisendandmete mahule n vastavusse algoritmi sammude arvu (ajaline keerukus) või kasutatava mälu mahu (mahuline keerukus). Keerukus sõltub lisaks algandmete mahule veel andmete struktuurist, järjestusest jt omadustest. See tingib vajaduse rääkida keerukusest halvimal juhul, parimal juhul ja oodataval keskmisel juhul : Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 7 / 45
Algoritmi keerukus Definitsioon Algoritmi keerukus on funktsioon f : N N, mis seab sisendandmete mahule n vastavusse algoritmi sammude arvu (ajaline keerukus) või kasutatava mälu mahu (mahuline keerukus). Keerukus sõltub lisaks algandmete mahule veel andmete struktuurist, järjestusest jt omadustest. See tingib vajaduse rääkida keerukusest halvimal juhul, parimal juhul ja oodataval keskmisel juhul : a) (ajaline) keerukus halvimal juhul W (n) on maksimaalne operatsioonide arv, mida tuleb antud algoritmi korral täita sisendi mahu n puhul; b) (ajaline) keerukus parimal juhul B(n) on minimaalne operatsioonide arv, mida tuleb täita sisendi mahu n korral; c) keskmine (ajaline) keerukus A(n) on keskmine operatsioonide arv, mida tuleb täita sisendi mahu n korral; Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 7 / 45
Algoritmi keerukus Definitsioon Algoritmi keerukus on funktsioon f : N N, mis seab sisendandmete mahule n vastavusse algoritmi sammude arvu (ajaline keerukus) või kasutatava mälu mahu (mahuline keerukus). Keerukus sõltub lisaks algandmete mahule veel andmete struktuurist, järjestusest jt omadustest. See tingib vajaduse rääkida keerukusest halvimal juhul, parimal juhul ja oodataval keskmisel juhul : Algoritmi keskmise keerukuse arvutamine x sisendi omadusi väljendav näitaja; n sisendi maht; p(x,n) sagedus; T (x,n) algoritmi tööaeg; A(n) = p(x,n)t (x,n) või A(n) = p(x,n)t (x,n)dx. x Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 7 / 45
Asümptootilised hinnangud Keerukust esitatavate funktsioonide esitamisel kasutatakse asümptootilist notatsiooni O, mis iseloomustab keerukusfunktsiooni käituimist andmete mahu n piiramatul kasvamisel. Eelmise näite korral W (n) = n 2 + 2n = O(n 2 ) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 8 / 45
Asümptootilised hinnangud (2) Näide 2. f (n) = O(g(n)) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 9 / 45
Asümptootilised hinnangud (3) Näide 3. f (n) = O(g(n)) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 10 / 45
O-notatsioon Definitsioon Olgu f ja g naturaalarvulised funktsioonid. Funktsioon g(n) on funktsiooni f (n) (ülemine) asümptootiline hinnang, ning kirjutatakse f (n) = O(g(n)), parajasti siis, kui leiduvad konstandid c > 0 ja N > 0, nii et iga n > N korral f (n) < c g(n). Definitsioon Funktsioon g(n) on funktsiooni f (n) täpne asümptootiline hinnang, ning kirjutatakse f (n) = Θ(g(n)), kui f (n) = O(g(n)) ja g(n) = O(f (n)). Omadus. Seosest f (n) = Θ(g(n)) järeldub, et f (n) g(n) c ja g(n) f (n) c. Seega 1 f (n) c c. g(n) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 11 / 45
O-notatsioon Definitsioon Olgu f ja g naturaalarvulised funktsioonid. Funktsioon g(n) on funktsiooni f (n) (ülemine) asümptootiline hinnang, ning kirjutatakse f (n) = O(g(n)), parajasti siis, kui leiduvad konstandid c > 0 ja N > 0, nii et iga n > N korral f (n) < c g(n). Definitsioon Funktsioon g(n) on funktsiooni f (n) täpne asümptootiline hinnang, ning kirjutatakse f (n) = Θ(g(n)), kui f (n) = O(g(n)) ja g(n) = O(f (n)). Omadus. Seosest f (n) = Θ(g(n)) järeldub, et f (n) g(n) c ja g(n) f (n) c. Seega 1 f (n) c c. g(n) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 11 / 45
O-notatsioon (2) Omadusi: k > 0 korral kf = O(f ), kui f = O(g) ja h = O(g), siis f + h = O(g), kui f = O(g) ja g = O(h), siis f = O(h), n r = O(n s ), kui 0 r s, kui p(n) on d-astme polünoom, siis p(n) = O(n d ), kui f = O(g) ja h = O(r), siis f h = O(g r), n k = O(b n ), kui b > 1 ja k 0, log k n = O(n k ), log b n = O(log d n) iga b,d > 1 korral, n k=1 kr = Θ(n r+1 ). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 12 / 45
O-notatsioon (2) Näiteid: 617n 3 + 277n 2 + 720n + 7 = O(n 3 ), 2 = O(1), sinx = O(1). Kuidas põhjendada, et 5n 3 + 2n 2 + 22n + 6 = O(n 3 )? Paneme tähele, et iga n > 10 korral 5n 3 + 2n 2 + 22n + 6 < 6n 3. Võrdus on tõene definitsiooni põhjal, kui võtta c = 6 ja N = 10. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 13 / 45
O-notatsioon (2) Näiteid: 617n 3 + 277n 2 + 720n + 7 = O(n 3 ), 2 = O(1), sinx = O(1). Kuidas põhjendada, et 5n 3 + 2n 2 + 22n + 6 = O(n 3 )? Paneme tähele, et iga n > 10 korral 5n 3 + 2n 2 + 22n + 6 < 6n 3. Võrdus on tõene definitsiooni põhjal, kui võtta c = 6 ja N = 10. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 13 / 45
Keerukushinnangute praktiline tähendus Programmi tööaeg Lahendamisaja suhteline suurnemine cf (n) f (25)/f (5) c 1 1 c 2 logn 2 c 3 n 5 c 4 n logn 10 c 5 n 2 25 c 6 n 3 125 c 7 2 n 1 048 576 Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 14 / 45
Keerukushinnangute praktiline tähendus (2) Programmi Suurim ülesanne, Suurim ülesanne, Suurim ülesanne, tööaeg mille lahendamise mille lahendamise Smille lahendamise (mikrosek.) aeg < 1 sek. aeg < 1 päev aeg < 1 aasta n n = 1 000 000 n = 86 400 000 000 n = 31 530 000 000 000 n log 2 n n = 62 746 n = 2 755 147 514 n = 798 160 978 500 n 2 n = 1 000 n = 293 938 n = 5 615 692 n 3 n = 100 n = 4 421 n = 31 593 2 n n = 19 n = 36 n = 44 n! n = 9 n = 14 n = 16 Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 15 / 45
Keerukushinnangute praktiline tähendus (3) Näiteks: a) korrutamine polünomiaalne keerukus: L 2 operatsiooni 10433 16453 =? a) tegurdamine eksponentsiaalne keerukus: 10 L/2 operatsiooni?? = 171654149 Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 16 / 45
Polünomiaalne vs eksponentsiaalne keerukus 1 aasta = 31,5 10 6 s; arvuti, mille kiirus on 10 6 op/s, teeks 31,5 10 12 op/aasta. Kui L = 50, kulub korrutamiseks 0,0025 s ja tegurdamiseks 0,3 10 1 0 aastat. Võrdluseks: suurest paugust arvatakse olevat möödunud 1,4 10 1 0 aastat Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 17 / 45
Ülesande keerukus Ülesande keerukuseks loetakse teda lahendava efektiivseima (=vähima keerukusega e lihtsaima) algoritmi keerukust (ühe lindiga Turingi masina korral). Keele L = {0 n 1 n n 0} keerukus on O(n log 2 n). Karakteristlik Turingi masin M 2 sisendi w {0,1} korral: 1 skaneerida lindilt sisendsõne w; kui kusagil on sümbol 0 sümbolist 1 paremal, siis mitte aktsepteerida ja peatuda; 2 korrata järgmisi punkte seni, kuni lindil on nii nulle kui ühtesid; skaneerida lindil olevat sõne ja kontrollida, kas lindil on paaris-või paaritu arv sümboleid. Kui sümbolite arv on paaritu, siis; mitte aktsepteerida ja peatuda; kustutada iga teine 0 (alates esimesest) ja iga teine 1 (alates esimesest) 3 kui lint on tühi, siis aktsepteerida ja peatuda; vastasel juhul mitte aktsepteerida ja peatuda. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 18 / 45
Ülesande keerukus (2) Algoritmi M 2 korral. 1. ja 3. punkt vajavad halvimal juhul aega O(n) ühikut. Punktis 2 sümbolite kustutamise järel jäävad lindile pooled sümbolid, nii saab seda tsüklit täita log 2 n + 1 korda. Punkti 2 keerukus on seega (log 2 n + 1)O(n) = O(n log 2 n) Kokku on algoritmi M 2 keerukus O(n) + O(n log 2 n) = O(n log 2 n). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 19 / 45
Algoritmide keerukus ja arvutamise mudel Algoritmi keerukus sõltub arvutamise mudelist. Keele L = {0 n 1 n n 0} keerukus kahe lindiga Turingi masinal on O(n). Karakteristlik Turingi masin M 3 sisendi w {0,1} korral: 1 skaneerida lindilt sisendsõne w; kui kusagil on sümbol 0 sümbolist 1 paremal, siis mitte aktsepteerida ja peatuda; 2 skaneerida lindialgusest nulle kuni esimese 1-ni ja kopeerida nullid teisele lindile; 3 jätkata 1-de skaneerimisega, kustutades iga loetava 1 korral teiselt lindilt ühe nulli. Kui teine lint saab protsessi käigus tühjaks, siis mitte aktsepteerida ja peatuda. 4 kui teisele lindile on jäänud nulle, siis mitte aktsepteerida ja peatuda, vastasel juhul aktsepteerida ja peatuda. Iga samm selles algoritmis on keerukusega O(n), seega on algoritmi M 3 kogukeerukus O(n). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 20 / 45
Algoritmide keerukus ja arvutamise mudel (2) Teoreem Olgu t(n) > n. Iga mitme lindiga Turingi masinal ajalise keerukusega O(t(n)) töötava programmi jaoks leidub ekvivalentse funktsionaalsusega programm ühe lindiga Turingi masinal, nii et tema ajaline keerukus on O(t 2 (n)). Teoreem Olgu t(n) > n. Iga ühe lindiga mittedeterministlikul Turingi masinal ajalise keerukusega O(t(n)) töötava programmi jaoks leidub ekvivalentse funktsionaalsusega programm ühe lindiga deterministlikul Turingi masinal, nii et tema ajaline keerukus on 2 O(t(n)). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 21 / 45
Mitme lindiga Turingi masina simulatsioon Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 22 / 45
Mittedeterministliku Turingi masina simulatsioon Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 23 / 45
Järgmine punkt 1 Algoritmi keerukus 2 Ülesannete keerukusklassid Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 24 / 45
Ülesannete keerukusklassid Definitsioon TIME(t(n)) = {L ülesande L lahendamise aeg Turingi masinal W (t) = O(t(n))} Definitsioon Polünomiaalne keerukusklass P on nende ülesannete hulk, mis on lahenduvad ühe lindiga deterministlikul Turingi masinal polünomiaalse ajaga : P = TIME(n k ). k Omadusi: Klass P on invariantne kõigil arvutamise mudelitel, mis on polünomiaalse ajaga modelleeritavad deterministlikul Turingi masinal. Klassi P ülesanded on reaalselt arvutil lahendatavad. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 25 / 45
Ülesannete keerukusklassid Definitsioon TIME(t(n)) = {L ülesande L lahendamise aeg Turingi masinal W (t) = O(t(n))} Definitsioon Polünomiaalne keerukusklass P on nende ülesannete hulk, mis on lahenduvad ühe lindiga deterministlikul Turingi masinal polünomiaalse ajaga : P = TIME(n k ). k Omadusi: Klass P on invariantne kõigil arvutamise mudelitel, mis on polünomiaalse ajaga modelleeritavad deterministlikul Turingi masinal. Klassi P ülesanded on reaalselt arvutil lahendatavad. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 25 / 45
NP keerukus Definitsioon Omadus C on lahenduv (ingl.k.: decidable ) hulgal A, kui leidub arvutatav predikaat { true, kui leidub x A, millel on omadus C, P C (A) = xc(x) = false, vastasel juhul. C A Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 26 / 45
NP keerukus Definitsioon Omadus C on lahenduv (ingl.k.: decidable ) hulgal A, kui leidub arvutatav predikaat { true, kui leidub x A, millel on omadus C, P C (A) = xc(x) = false, vastasel juhul. C A Tähelepanu! Omadus C on lahenduv omadusega C elementide alamhulk ei ole tühi = lahenduv hulk/keel C ei ole tühi hulk. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 26 / 45
NP keerukus Definitsioon Omadus C on lahenduv (ingl.k.: decidable ) hulgal A, kui leidub arvutatav predikaat { true, kui leidub x A, millel on omadus C, P C (A) = xc(x) = false, vastasel juhul. C A Definitsioon Omadus C on tuvastatav (= verifitseeritav; ingl.k.: verifiable) hulgal A, kui leidub arvutatav predikaat V, nii et iga x A korral leidub väärtus s (sertifikaat) ja { true, kui x evib omadust C, V (x,s) = false, vastasel juhul.. Definitsioon Omadus C on NP lahenduv hulgal A, kui ta polünomiaalse ajaga tuvastatav deterministlikul ühe lindiga Turingi masinal (C P). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 26 / 45
Lahenduvusest ja verifitseeritavusest detailsemalt Definitsioon (2) Keele L verifitseerijaks nimetatakse algoritmi V, kus L = {w V ( w,s ) q accept mingi sõne s korral} tähistab ülesande mõistliku kirjeldust teksti, graafi vms kujul; verifitseerimiseks kuluvat aega mõõdetakse sõne w pikkuse w järgi; polünomiaalne verifitseerija on polünomiaalse keerukusega; keel on polünomiaalselt verifitseeritav, kui kui tema jaoks leidub polünomiaalse keerukusega verifitseerija; s on sertifikaat ehk tõestus. Polünomiaalse verifitseerija korral on s = O( w k ). Definitsioon Keel on NP keerukas, kui ta on polünomiaalselt verifitseeritav. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 27 / 45
Näide: Hamiltoni ahel Definitsioon Hamiltoni ahel on tee graafi tipust s tippu t, mis läbib graafi iga tippu parajast üks kord. s t HAMPATH = { G,s,t graafis G Hamiltoni ahel tipust s tippu t} Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 28 / 45
Mittedeterministlik Turingi masin HAMPATH lahendamiseks Sisend:= G,s,t, olgu graafi G tippude arv m ja tippude märgenditeks naturaalarvud 1,2,...,n. 1 Võtame arvude jada p 1,...,p n, kus 1 p i n 2 Kontrollida, et jada ei sisaldaks kordseid elemente: (i j) (p i p j ). Kui leidub, siis mitte aktsepteerida ja peatuda. 3 Kontrollida, kas p 1 = s ja p n = t. Kui ei, siis mitte aktsepteerida ja peatuda. 4 iga i jaoks vahemikust 1 i n 1 kontrollida, kas graafis G leidub serv (p i,p i+1 ). Kui ei, siis mitte aktsepteerida ja peatuda, vastasel korral aktsepteerida ja peatuda. Selle algoritmi keerukus deterministlikul Turingi masinal on O(2 n ), mittedeterministlikul masinal aga O(n 2 ). See ei ole juhus! Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 29 / 45
Mittedeterministlik Turingi masin HAMPATH lahendamiseks Sisend:= G,s,t, olgu graafi G tippude arv m ja tippude märgenditeks naturaalarvud 1,2,...,n. 1 Võtame arvude jada p 1,...,p n, kus 1 p i n 2 Kontrollida, et jada ei sisaldaks kordseid elemente: (i j) (p i p j ). Kui leidub, siis mitte aktsepteerida ja peatuda. 3 Kontrollida, kas p 1 = s ja p n = t. Kui ei, siis mitte aktsepteerida ja peatuda. 4 iga i jaoks vahemikust 1 i n 1 kontrollida, kas graafis G leidub serv (p i,p i+1 ). Kui ei, siis mitte aktsepteerida ja peatuda, vastasel korral aktsepteerida ja peatuda. Selle algoritmi keerukus deterministlikul Turingi masinal on O(2 n ), mittedeterministlikul masinal aga O(n 2 ). See ei ole juhus! Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 29 / 45
NP keerukus (2) Teoreem Omadus C on NP tuvastatav parajasti siis, kui ta on polünomiaalse ajaga lahenduv kasutades mittedeterministlikku Turingi masinat. Tõestus ( ) Olgu V keele L = {w C(v) = true} polünomiaalne verifitseerija, mille ajaline keerukus on O(n k ). konstrueerime mittedeterministliku Turingi masina N, mis sõne w (pikkusega w = n) korral töötab järgmiselt: Valib mittedeterministlikult sertifikaadi s pikkusega n k ; Rakendab masinat V kirjeldusele w,s ; Kui V aktsepteerib sõnet w keele L elemendina, siis true (vastasel juhul false) ja peatub. Tõestus ( ) Olgu N keelt L lahendav mittedeterministlik TM, konstrueerime polünomiaalse verifitseerija V järgmiselt: Simuleerime masina N tööd sisendi w korral, võttes sertifikaadi s sümboliks tehtud mittedeterministliku valiku kirjelduse; Kui antud haru korral N(w) = true, siis ka V true (vastasel juhul false) ja peatub. m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 30 / 45
Näide: Hamiltoni ahel Definitsioon Hamiltoni ahel on tee graafi tipust s tippu t, mis läbib graafi iga tippu parajast üks kord. s t HAMPATH = { G,s,t graafis G Hamiltoni ahel tipust s tippu t} Fakte: Ülesanne/keel HAMPATH on polünomiaalselt verifitseeritav (= NP keerukas). Pole teada polünomiaalset algoritmi, mis tuvastaks Hamiltoni ahela olemasolu. Hamiltoni ahel on polünomiaalselt tuvastatav mittedeterministlikul Turingi masinal. Pole teada polünomiaalset algoritmi ülesande HAMPATH verifitseerimiseks. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 31 / 45
Veel NP keerukaid ülesandeid kehtestatavuse ülesanne SAT rändkaupmehe ülesanne tegurdamine graafi kliki leidmise ülesanne tunniplaani ülesanne söödaratsiooni ülesanne Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 32 / 45
NP keerukus (3) Definitsioon { NTIME(t(n)) = L ülesande L lahendamise aeg mittedeterministlikul Turingi masinal B(t) = O(t(n)) } Definitsioon Keerukusklass NP on nende ülesannete hulk, mis on lahenduvad ühe lindiga mittedeterministlikul Turingi masinal polünomiaalse ajaga : NP = NTIME(n k ). k Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 33 / 45
NP keerukate ülesannete näiteid Leida graafis k-klikk CLIQUE = { G, k G on mitteorienteeritud graaf, milles on k-klikk} Leida alamhulk, mille elementide summa on t { SUBSET SUM = S,t S = {x 1,...,x k } alamhulga {y 1,...,y l } S korral i y i = t } Fakte: Ülesanded CLIQUE ja SUBSET SUM kuuluvad klassi conp. Pole teada kas NP = conp või mitte. Parimad teadaolevad algoritmid NP ülesannete lahendamiseks on eksponentsiaalse keerukusega, st NP EXPTIME = TIME(2 nk ) k Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 34 / 45
NP keerukate ülesannete näiteid Leida graafis k-klikk CLIQUE = { G, k G on mitteorienteeritud graaf, milles on k-klikk} Leida alamhulk, mille elementide summa on t { SUBSET SUM = S,t S = {x 1,...,x k } alamhulga {y 1,...,y l } S korral i y i = t } Fakte: Ülesanded CLIQUE ja SUBSET SUM kuuluvad klassi conp. Pole teada kas NP = conp või mitte. Parimad teadaolevad algoritmid NP ülesannete lahendamiseks on eksponentsiaalse keerukusega, st NP EXPTIME = TIME(2 nk ) k Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 34 / 45
P = NP? Ükskahest võimalusest peab olema õige: P NP P = NP Ketestatavuse ülesanne: SAT = {ϕ ϕ on kehtestatav Bool i valem} ϕ = (x y) ( x y z) x Teoreem (Cook & Levin) SAT P parajasti siis, kui P = NP. x y z ϕ 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 35 / 45
P = NP? Ükskahest võimalusest peab olema õige: P NP P = NP Ketestatavuse ülesanne: SAT = {ϕ ϕ on kehtestatav Bool i valem} ϕ = (x y) ( x y z) x Teoreem (Cook & Levin) SAT P parajasti siis, kui P = NP. x y z ϕ 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 35 / 45
Ülesannete redutseeritavus Definitsioon Hulga A Σ lahenduvuse ülesanne on m-redutseeritav hulga B Σ lahenduvuse ülesandeks, kui leidub selline arvutatav funktsioon f : Σ Σ, nii et iga w Σ korral kehtib w A f (w) B. Definitsioon Kui redutseeritavuse funktsioon f P, siis A on polünomiaalselt redutseeritav B-ks. Teoreem Kui ülesanne A on polünomiaalselt redutseeritav B-ks ning B P, siis A P. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 36 / 45
Ülesannete redutseeritavus (2) Teoreem SAT on polünomiaalselt redutseeritav ülesandeks CLIQUE ϕ = (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) (x 1 x 2 x 3 ) Graafis on kõik võimalikud servad, v.a. ühe diskunkti elementide vahel ning vastandliteraalide vahel (näiteks x ja x). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 37 / 45
Ülesanne SAT on NP täielik Väite tõestuse idee SAT on NP keerukas ülesanne (lihtne kontrollida definitsiooni põhjal); Iga NP keeruka keele L jaoks leidub mittedeterministlik Turingi masin M, mis teeb kindlaks iga sõne w = w 1 w 2...w n jaoks, kas w L või mitte. Konstrueerime sellise masina jaoks lausearvutuse valemi Φ, mis on kehtestatav parajasti siis, kui Turingi masin M aktsepteerib sõne w. Näitame, et teisendus M, w Φ on polünomiaalse keerukusega, s.t. L on polünomiaalselt redutseeritav ülesandeks SAT. Eeldame, et Boole i lülitused simuleerivad Turingi masina tööd. Olgu t : N N, nii et T (n) n ja M Turingi masin, mille sisendtähestik on {0, 1}; tööaeg on t(n) takti. Iga n jaoks leidub Boole i avaldis, mille literaalide arv on O(t 2 (n)). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 38 / 45
Ülesanne SAT on NP täielik Väite tõestuse idee SAT on NP keerukas ülesanne (lihtne kontrollida definitsiooni põhjal); Iga NP keeruka keele L jaoks leidub mittedeterministlik Turingi masin M, mis teeb kindlaks iga sõne w = w 1 w 2...w n jaoks, kas w L või mitte. Konstrueerime sellise masina jaoks lausearvutuse valemi Φ, mis on kehtestatav parajasti siis, kui Turingi masin M aktsepteerib sõne w. Näitame, et teisendus M, w Φ on polünomiaalse keerukusega, s.t. L on polünomiaalselt redutseeritav ülesandeks SAT. Eeldame, et Boole i lülitused simuleerivad Turingi masina tööd. Olgu t : N N, nii et T (n) n ja M Turingi masin, mille sisendtähestik on {0, 1}; tööaeg on t(n) takti. Iga n jaoks leidub Boole i avaldis, mille literaalide arv on O(t 2 (n)). Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 38 / 45
Ülesanne SAT on NP täielik (2) Iga n jaoks leidub Boole i avaldis, mille literaalide arv on O(t 2 (n)). Kirjutame masina M töö käigus tekkinud konfiguratsioonid C 0 C 1 C t(n) üksteise alla, nii et tekib (t(n) + 1) (t(n) + 1) tabel: Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 39 / 45
Ülesanne SAT on NP täielik (3) Kui konfiguratsioonide vahetamine töötakti jooksul on määratud näiteks üleminekutega δ(q 1,a) = {(q 1,b,R)} ja δ(q 1,b) = {(q 2,c,L),(q 2,a,R)}, on tabelis lubatud järgmised lokaalsed muudatused (2 3 aknad ): Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 40 / 45
Ülesanne SAT on NP täielik (3) Kui konfiguratsioonide vahetamine töötakti jooksul on määratud näiteks üleminekutega δ(q 1,a) = {(q 1,b,R)} ja δ(q 1,b) = {(q 2,c,L),(q 2,a,R)}, on tabelis lubatud järgmised lokaalsed muudatused (2 3 aknad ):... ja mittelubatud aknad : Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 40 / 45
Ülesanne SAT on NP täielik (3) Kui konfiguratsioonide vahetamine töötakti jooksul on määratud näiteks üleminekutega δ(q 1,a) = {(q 1,b,R)} ja δ(q 1,b) = {(q 2,c,L),(q 2,a,R)}, on tabelis lubatud järgmised lokaalsed muudatused (2 3 aknad ): Esitame tabeli loogikavalemina, kus muutuja x i,j,s = 1 parajasti siis, kui tabeli lahtris (i,j) on väärtus s (muidu on x i,j,s = 0. Lubatud aken a 1,a 2,...,a 6, kus a 2 on tabeli lahter (i,j), saab esitada valemiga: (x i,j 1,a1 x i,j,a2 x i,j+1,a3 x i+1,j 1,a4 x i+1,j,a5 x i+1,j+1,a6 ) Olgu Φ move nende valemite konjunktsioon kõigi lubatud akende korral Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 40 / 45
Ülesanne SAT on NP täielik (4) Lisanduvad veel valemid tabeli üksiku lahtri ja rajatingimuste kohta: Kokkuvõttes saame valemi Φ cell Φ start Φ move Φ accept. Tabeli iga lahtri jaoks leidub valemis muutujaid mitte rohkem kui mingi konstant k, seega selle valemi kontrollimine on polünomiaalse keerukusega O(t 2 (n)) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 41 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Eelnevas tõestasime sisuliselt järgmise teoreemi: Teoreem (Cook & Levin) SAT P parajasti siis, kui P = NP. 3SAT on kehtestatavuse ülesanne, kus valemi igas disjunktis on täpselt kolm literaali. Teoreem 3SAT on NP-täielik ülesanne. Põhjendus. Viia valem konjunktiivsele normaalkujule ning disjunktid, milles on kolmest erinev arv literaale asendada järgmiselt: (a 1 a 2 ) asemel (a 1 a 2 a 2 ); (a 1 a 2... a 2 ) asemel (a 1 a 2 z 1 ) (z 1 a 3 z 2 ) (z 2 a 4 z 3 )... (z l 3 a l 1 a l ) m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 42 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Eelnevas tõestasime sisuliselt järgmise teoreemi: Teoreem (Cook & Levin) SAT P parajasti siis, kui P = NP. 3SAT on kehtestatavuse ülesanne, kus valemi igas disjunktis on täpselt kolm literaali. Teoreem 3SAT on NP-täielik ülesanne. Põhjendus. Viia valem konjunktiivsele normaalkujule ning disjunktid, milles on kolmest erinev arv literaale asendada järgmiselt: (a 1 a 2 ) asemel (a 1 a 2 a 2 ); (a 1 a 2... a 2 ) asemel (a 1 a 2 z 1 ) (z 1 a 3 z 2 ) (z 2 a 4 z 3 )... (z l 3 a l 1 a l ) m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 42 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Eelnevas tõestasime sisuliselt järgmise teoreemi: Teoreem (Cook & Levin) SAT P parajasti siis, kui P = NP. 3SAT on kehtestatavuse ülesanne, kus valemi igas disjunktis on täpselt kolm literaali. Teoreem 3SAT on NP-täielik ülesanne. Põhjendus. Viia valem konjunktiivsele normaalkujule ning disjunktid, milles on kolmest erinev arv literaale asendada järgmiselt: (a 1 a 2 ) asemel (a 1 a 2 a 2 ); (a 1 a 2... a 2 ) asemel (a 1 a 2 z 1 ) (z 1 a 3 z 2 ) (z 2 a 4 z 3 )... (z l 3 a l 1 a l ) m.o.t.t. Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 42 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Teoreem Kui B NP-täielik ja B P, siis P = NP. Teoreem Kui B NP-täielik ja B on polünomiaalselt redutseeritav ülesandeks C, siis C NP-täielik. Veel NP-täielikke ülesanded: HAMPATH rändkaupmehe ülesanne SUBSET SUM Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 43 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Teoreem Kui B NP-täielik ja B P, siis P = NP. Teoreem Kui B NP-täielik ja B on polünomiaalselt redutseeritav ülesandeks C, siis C NP-täielik. Veel NP-täielikke ülesanded: HAMPATH rändkaupmehe ülesanne SUBSET SUM Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 43 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Teoreem Kui B NP-täielik ja B P, siis P = NP. Teoreem Kui B NP-täielik ja B on polünomiaalselt redutseeritav ülesandeks C, siis C NP-täielik. Veel NP-täielikke ülesanded: HAMPATH rändkaupmehe ülesanne SUBSET SUM Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 43 / 45
NP täielikud ülesanded Definitsioon Ülesanne B on NP täielik, kui ta rahuldab järgmisi tingimusi: B NP; iga NP ülesanne A on polünomiaalselt redutseeritav ülesandeks B. Teoreem Kui B NP-täielik ja B P, siis P = NP. Teoreem Kui B NP-täielik ja B on polünomiaalselt redutseeritav ülesandeks C, siis C NP-täielik. Veel NP-täielikke ülesanded: HAMPATH rändkaupmehe ülesanne SUBSET SUM Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 43 / 45
Ülesannete keerukusklassid Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 44 / 45
Ülesannete keerukusklassid (Wikipedia) Jaan Penjam, email: jaan@cs.ioc.ee Keerukusteooria elemente 45 / 45