• Ei tuloksia

581336 Laskennan teoria (kevät 2006) Harjoitus 10, ratkaisuja

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "581336 Laskennan teoria (kevät 2006) Harjoitus 10, ratkaisuja"

Copied!
3
0
0

Kokoteksti

(1)

581336 Laskennan teoria (kevät 2006) Harjoitus 10, ratkaisuja

1. Annetulla kaavalla

= (x1_ x2_ x3) ^ (x1_ :x2_ :x3) ^ (:x1_ :x2_ x3) ^ (:x1_ x2_ :x3) palautusfunktio antaa f() = hG; ki, missä k = 4 ja G on verkko

x1 x1

x2 x2

x3 x3

:x1 :x1

:x2 :x2

:x3 :x3

,

, ,

,

(solmuihin on lisätty muuttujasymbolit palautuksen havainnollistamiseksi).

Kaava toteutuu, kun muuttujien arvot (x1; x2; x3) ovat joko (1; 1; 1), (1; 0; 0), (0; 1; 0) tai (0; 0; 1). Jos verkon solmut nimetään luennolla esitetyn mukaisesti vi;r, i = 1; : : : ; 4, r = 1; 2; 3, niin vastaavat riippumattomat joukot ovat f v1;1; v2;1; v3;3; v4;2g, f v1;1; v2;1; v3;2; v4;3g, f v1;2; v2;3; v3;1; v4;1g ja f v1;3; v2;2; v3;1; v4;1g.

2. Osoitetaan suuntaamattomien verkkojen Hamiltonin kehä -ongelman HC olevan NP-täydellinen palauttamalla se NP-täydelliseksi tunnettuun suunnattujen verkkojen vastaavaan ongelmaan DHC ja päinvastoin.

Hamiltonin kehä -ongelmassa kysytään, onko annetussa verkossa sykliä, joka käy jokaisessa ver- kon solmussa täsmälleen kerran. Koska suuntaamaton verkko on samalla suunnattu verkko, jossa on kaari (u; v) jos ja vain jos siinä on kaari (v; u), on palautus f : HC pmDHC yksinkertaisesti identtinen kuvaus.

Muodostetaan seuraavaksi palautus g : DHC pmHC. Suuntaamattomaan verkkoon luodaan jo- kaista suunnatun verkon solmua v kohti kolme solmua: tulosolmu v1, sisäsolmu v2ja lähtösolmu v3. Jokainen suunnatun verkon kaari (u; v) kuvataan puolestaan kaareksi solmua u vastaavasta lähtösolmusta u3 solmua v vastaavaan tulosolmuun v1. Lisäksi jokaiseen kolmikkoon v1; v2; v3

lisätään kaaret (v1; v2) ja (v2; v3). Tällainen verkko voidaan selvästikin muodostaa determinis- tisesti polynomisessa ajassa. Merkitään nyt g(V; E) = (V0; E0). (Jos syöte ei kuvaa suunnattua verkkoa, g tuottaa mielivaltaisen merkkijonon, joka ei kuvaa suuntaamatonta verkkoa.)

Kysymys on palautuksesta DHC pm HC. Jos nimittäin suunnatussa verkossa (V; E) on Ha- miltonin kehä, löytyy sellainen myös suuntaamattomasta verkosta (V0; E0). Suuntaamattoman verkon kehässä käydään kolmikot v1; v2; v3läpi samassa järjestyksessä kuin niitä vastaavat suun- natun verkon solmut. Kunkin kolmikon sisällä puolestaan käydään ensin tulosolmussa v1, sitten sisäsolmussa v2 ja lopuksi lähtösolmussa v3, minkä jälkeen siirrytään seuraavaan kolmikkoon.

Oletetaan nyt, että suuntaamattomassa verkossa (V0; E0) on Hamiltonin kehä. Koska jokaisesta sisäsolmusta on kaaret vain saman kolmikon tulo- ja lähtösolmuihin, täytyy koko kolmikko käydä

(2)

läpi kerralla. Niinpä jokaista suunnatun verkon solmua v 2 V kohti on suuntaamattoman ver- kon Hamiltonin kehässä joko jakso (v1; v2; v3) tai (v3; v2; v1). Lisäksi koska kolmikoiden väliset kaaret yhdistävät ainoastaan lähtösolmuja tulosolmuihin, täytyy syklissä peräkkäiset kolmikot ja siten kaikki kolmikot käydä läpi samassa järjestyksessä. Koska sykli voidaan käydä läpi yhtä hyvin etu- tai takaperin, voidaan järjestyksen olettaa olevan (v1; v2; v3). Nyt suunnatun ver- kon Hamiltonin kehä saadaan käymällä solmut läpi samassa järjestyksessä kuin niitä vastaavat kolmikot suuntaamattomassa verkossa. Tämä onnistuu, sillä jokaista suuntaamattoman verkon kaarta (u3; v1) kohti on suunnatussa verkossa kaari (u; v).

Funktio f on siis osoitettu polynomiseksi palautukseksi HC pmDHC ja funktio g palautukseksi DHC pm HC. Koska DHC on NP-täydellinen, on näiden palautusten seurauksena myös HC sellainen.

3. Olkoon DHP tehtävässä määritelty suunnaatujen verkkojen Hamiltonin polku -ongelma.

Väite: DHP on NP-täydellinen.

Todistus: Osoitetaan, että DHP 2 NP ja DHC pmDHP, missä DHC on suunnattujen verkkojen Hamiltonin kehä -ongelma. Koska DHC on NP-täydellinen, väite seuraa.

Ongelma DHP voidaan ratkaista seuraavalla epädeterministisellä algoritmilla, joka selvästi toimii polynomisessa ajassa:

(a) Olkoon syöte G = (V; E). Jos syöte ei ole tätä muotoa, niin hylkää.

(b) Aseta U = V ja n = jV j.

(c) Toista arvoilla i = 1; : : : ; n:

i. Valitse epädeterministisesti jokin u 2 U.

ii. Aseta w[i] = u.

iii. Päivitä U := U f u g.

(d) Toista arvoilla i = 1; : : : ; n 1: jos (w[i]; w[i + 1]) 62 E, niin hylkää.

(e) Hyväksy.

Olkoon G = (V; E) suunnattu verkko, missä jV j = n ja V = f v1; : : : ; vng. Määritellään suunnat- tu verkko f(G) = (V0; E0), missä V0 = f v0; v1; : : : ; vng ja joukkoon E0 tulee seuraavat kaaret:

jos (vi; vn) 2 E jollain 1 i n 1, niin (vi; vn) 2 E0, jos (vn; vi) 2 E jollain 1 i n 1, niin (v0; vi) 2 E0 ja jos (vi; vj) 2 E joillain 1 i; j n 1, niin (vi; vj) 2 E0. Selvästi kuvaus f voidaan laskea polynomisessa ajassa.

Olkoon (w1; : : : ; wn) Hamiltonin kehä verkossa G. Yleisyyttä rajoittamatta voidaan valita solmu- jen numerointi niin, että wn = vn. Joukossa E on siis kaari (wi; wi+1) kaikilla i = 2; : : : ; n 1 ja li- säksi kaaret (wn 1; wn) = (wn 1; vn) ja (wn; w1) = (vn; w1). Joukossa E0 on siis kaari (wi; wi+1) kaikilla i = 1; : : : ; n 2 ja lisäksi kaaret (wn 1; vn) ja (v0; w1). Siis (v0; w1; : : : ; wn 1; vn) on Hamiltonin polku verkossa (V0; E0) = f(G).

Olkoon toisaalta (w0; w1; : : : ; wn) Hamiltonin polku verkossa f(G). Koska solmuun v0 ei tule eikä solmusta vn lähde kaaria, on oltava w0 = v0 ja wn = vn. Tarkastelemalla taas joukon E0 määritelmää nähdään, että (w1; : : : ; wn) on Hamiltonin kehä verkossa G.

Siis G 2 DHC jos ja vain jos f(G) 2 DHP, joten f on polynominen palautus DHC pmDHP. 2 4. Väite: Jos P = NP, niin funktio f : f2; 3; 4; : : : g ! fn 2 N j n on alkulukug, f(x) = luvun x

pienin alkutekijä, voidaan laskea polynomisessa ajassa.

2

(3)

Todistus. Käytetään luokkaan NP kuuluvaa päätösongelmaa FACT: Annettu luonnolliset luvut a ja b, ja kysytään Onko luvulla b tekijä d, jolla 1 < d a?. Tätä päätösongelmaa vastaa kieli (merkintä djb tarkoittaa b on jaollinen d:llä):

fha; bi j 9d : 1 < d a ^ djbg:

Nyt saadaan seuraava algoritmi funktion f laskemiseksi: etsitään pienin alkutekijä binäärihaulla (syötteenä luku x 2):

(a) Aseta a := 2, y := x.

(b) Toista, kunnes a = y:

i. Aseta k := b(a + y)=2c.

ii. Jos hk; xi 2 FACT, niin aseta y := k, muuten aseta a := k + 1.

(c) Palauta a.

Algoritmin oikeellisuus: kohdan (b) silmukka säilyttää invariantin a d y, missä d on luvun x pienin alkutekijä. Aluksi (a = 2, y = x) invariantti pätee triviaalisti. Jos silmukan alussa a < y ja invariantti on voimassa, niin seuraavaksi joko

hk; xi 2 FACT, jolloin on tekijä k; tällöin a d k tai hk; xi 62 FACT, jolloin ei ole tekijää k; tällöin k + 1 d y.

Lopuksi d = a = y: jos jossain vaiheessa olisi a > y, olisi silmukan edellisen suorituskerran alussa pitänyt olla a = y, jolloin silmukkaa ei olisi enää suoritettu.

Aikavaatimus: silmukan sisältö (kohdat i. ja ii.) suoritetaan O(log x) kertaa, ja silmukan sisällön aikavaatimus on oletuksen P = NP mukaan polynominen syötteen pituuden O(log x) suhteen.

Näinollen koko algoritmin aikavaatimus on polynominen syötteen pituuden O(log x) suhteen. 2

3

Viittaukset

LIITTYVÄT TIEDOSTOT

Laskennalliset ongelmat esitetään usein tyyliin Annettu: Turingin kone M, merkkijono x Kysymys: Hyväksyykö kone M syötteen x.. Jotta tällaisesta ongelmasta voidaan puhua tämän

Oletetaan, että ohjelmat (oikeammin niiden C-kieliset lähdekoodit) ja syötteet ovat (esim.) ASCII- merkistön merkkijonoja. Ohjelma ja syöte on pystyttävä erottamaan toisistaan

Kysymys: kun Turingin kone M suorittaa laskennan syötteellä x, niin siirtyykö se koskaan tilaan numero 52. Jos sinulla olisi algoritmi tämän ongelman ratkaisemiseksi, miten

Palautus tapahtuu muuttamalla syötteenä saadun koneen M w tilojen numerointia niin, ettei tilaa numero 5 käytetä mihinkään, ja vaihtamalla kaikki siirtymät johonkin lopputilaan

Osoita, että ongelma Siirtääkö annettu Turingin kone annetulla syötteellä koskaan nauhapää- tään vasemmalle on ratkeava1. (Vihje: palautus (a)-kohdan ongelmasta.)

Tehdään taas vastaoletus, että proseduuri Minimoi(M) palauttaa tilamäärältään pienimmän Turingin koneen, joka hyväksyy saman kielen kuin M ja käyttää samaa

Koska algoritmi voi tuottaa minkä tahansa osajoukon A, se löytää myös tällaisen osajoukon, jos sellainen on olemassa.. Toisaalta algoritmi ei hyväksy syötettä, ellei se löydä

Kuvaa, minkä tyyppisiä arvoja tällainen palautus saa syötteenään ja millaisia palauttaa, ja mitä ehtoja sen pitää toteuttaa.. (c) Esitä varsinainen palautus ja osoita, että