Kierros 10: Laskennallisesti vaativampia ongelmia

Koko: px
Aloita esitys sivulta:

Download "Kierros 10: Laskennallisesti vaativampia ongelmia"

Transkriptio

1 Kierros 10: Laskennallisesti vaativampia ongelmia Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

2 Materiaalia: Nämä kalvot Kappale 34 kirjasta Introduction to Algorithms, 3rd ed. (online via Aalto lib) näiden kalvojen abstraktiotasolla formaalien kielten määritelmiä ei vaadita eikä niitä todistuksia, jotka eivät ole mukana kalvoilla Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

3 Tähän mennessä tarkastellut algoritmit ovat olleet suhteellisen tehokkaita, pahimman tapauksen ajoaikojen ollessa muotoa O(log 2 n), O(n), O(n log 2 n), O(( E + V )log 2 V ) jne Mutta on olemassa paljon (käytännön kannalta relevantteja) ongelmia, joiden ratkaisemiseksi ei tunneta yhtään aina tehokkaasti toimivaa algoritmia Itse asiassa on myös ongelmia, joita ei voida todistetusti ratkaista nykyisillä tietokoneilla Tässä ratkaista tietokoneella tarkoittaa on olemassa algoritmi, joka kaikilla syötteillä antaa oikeellisen ratkaisun Todistus ja lisää aiheesta kurssilla CS-C2150 Theoretical Computer Science (5op, periodit III-IV) Esimerkki Ei ole olemassa algoritmia, joka pystyy aina p = 3x 2 y päättelemään, onko annetulla. p = x 3 + y 3 + z 3 29 monen muuttujan polynomilla p = x 3 + y 3 + z 3 33 kokonaislukunollakohtia. def hasintroots(p):.... return res false. true (x = 3, y = 1, z = 1)? Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

4 Tällä kierroksella tarkastellaan yhtä keskeistä luokkaa laskennallisesti vaativia ongelmia, niin sanottuja NP-täydellisä ongelmia, ja kuvataan joitain menetelmiä, joiden avulla tällaisia ongelmia voidaan käytännössä useimmiten ratkaista Formaaleja matemaattisia määritelmiä ja todistuksia ei käydä läpi, niistä (ja aiheesta muutenkin) lisää kursseilla CS-C2150 Theoretical Computer Science ja CS-E4530 Computational Complexity Theory Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

5 Laskennalliset ongelmat Tässä yhteydessä laskennallinen ongelma koostuu 1 kuvauksesta, minkälaisia syötteet voivat olla, ja 2 kysymyksestä, mihin algoritmin tulisi vastata saatuaan syötteen Määritelmä: ALKULUKU-ongelma (engl. PRIMALITY problem) Syöte: Positiivinen kokonaisluku x. Kysymys: Onko x alkuluku? x = x = 5899 def isprime(x):.... return res true. false Ongelma on ratkeava (engl. decidable, computable, tai recursive) jos on olemassa algoritmi, joka pystyy vastaamaan kysymykseen oikein kaikilla mahdollisilla syötteillä ALKULUKU-ongelma on ratkeava. Miksi? Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

6 Päätösongelma (engl. decision problem) on laskennallinen ongelma, jossa vastaus kysymykseen on aina joko ei tai kyllä Määritelmä: OSAJOUKKOSUMMA-ongelma (engl. SUBSET-SUM problem) Syöte: Joukko S kokonaislukuja ja kohdearvo t. Kysymys: Onko olemassa osajoukkoa S S siten, että s S s = t? Funktio-ongelmassa (engl. function problem) vastaus on joko ei kun ratkaisua ei ole syötteelle, tai jokin ratkaisu, kun sellainen tai sellaisia on olemassa. Määritelmä: OSAJOUKKOSUMMA-ongelma (funktio-ongelmaversio) Syöte: Joukko S kokonaislukuja ja kohdearvo t. Kysymys: Palauta jokin osajoukko S S siten, että s S s = t, jos sellainen on olemassa. Matemaattisesti jokainen päätösongelma voidaan kuvata joukkona syötemerkkijonoja, joilla vastaus on kyllä. Näihin tarkempiin määritelmiin tutustutaan kursseilla Theoretical computer science ja Computational Complexity Theory. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

7 Optimointiongelmassa (engl. optimization problem) tulee löytää jokin optimikriteerin täyttävä ratkaisu, jos sellaisia on olemassa Määritelmä: MINIMAALINEN VIRITTÄVÄ PUU -ongelma (engl. MINIMUM SPANNING TREE problem) Syöte: Yhtenäinen ja painotettu suuntaamaton verkko G. Kysymys: Etsi jokin verkon minimaalinen virittävä puu. Optimointiongelmille on yleensä vastaava päätösongelmaversio missä annetaan jokin hyvyysraja ratkaisulle (onko olemassa vähintään näin hyvää ratkaisua?) Määritelmä: MINIMAALINEN VIRITTÄVÄ PUU (päätösongelmaversio) Syöte: Yhtenäinen ja painotettu suuntaamaton verkko G sekä kokonaisluku k. Kysymys: Onko verkolla virittävää puuta, jonka paino on korkeintaan k? Optimointiongelma on laskennallisesti vähintään yhtä vaikea kuin tällainen vastaava päätösongelma koska optimaalinen ratkaisu vastaa suoraan myös päätösongelman kysymykseen Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

8 Laskennallisen vaativuuden teoria mahdollistaa ratkeavien ongelmien luokittelun tarkempiin vaativuusluokkiin (engl. complexity class) Tarkastellaan selvyyden vuoksi vain päätösongelmia P ongelmat, jotka voidaan ratkaista polynomisessa ajassa ( aina tehokkaasti) jollakin algoritmilla NP ongelmat, joiden kyllä -syötteille on olemassa helposti tarkastettava tiivis sertifikaatti (eli ongelmat, jotka voidaan ratkaista polynomisessa ajassa epädeterministisellä koneella) PSPACE ongelmat, jotka voidaan ratkaista algoritmilla, joka käyttää korkeintaan polynomisen määrän lisämuistia (ajoaika mahdollisesti eksponentiaalinen) recursively enumerable recursive EXPTIME PSPACE NP P EXPTIME ongelmat, jotka voidaan ratkaista eksponentiaalisessa ajassa ja monia muita luokkia... Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

9 Polynomisessa ajassa ratkeavat ongelmat Ongelma on polynomisessa ajassa ratkeava jos on olemassa jokin algoritmi, joka 1 ratkaisee ongelman eli vastaa oikein jokaisella syötteellä, ja 2 toimii pahimmassa tapauksessa polynomisessa ajassa O(n c ), missä c on jokin vakio ja n on syötteen pituus bitteinä/tavuina. Tällaisia ongelmia pidetään tehokkaasti ratkeavina (engl. tractable) Englanninkielinen termi ongelmille, jotka eivät ole tehokkaasti ratkeavia, on intractable Polynomisessa ajassa ratkeavien päätösongemien luokkaa merkitään lyhenteellä P Huomaa, että myös esimerkiksi pahimmassa tapauksessa ajassa Θ(n 100 ) toimiva algoritmi on polynomisessa ajassa toimiva algoritmi. Tällaisia algoritmeja voidaan tuskin pitää tehokkaina. Mutta tällaiset ajoajat eivät ole kovin yleisiä ja yleensä jonkin polynomisessa ajassa toimivan algoritmin löytyminen ongelmalle johtaa myöhemmin melko alhaisen asteluvun polynomin ajassa toimivan algoritmin löytymiseen. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

10 Järjestämisalgoritmien kierroksen perusteella tiedetään, kuinka n-alkioinen taulukko voidaan järjestää ajassa O(n log 2 n) Niinpä seuraava funktio-ongelma voidaan ratkaista polynomisessa ajassa: Määritelmä: MEDIAANIN ETSINTÄ -ongelma (engl. MEDIAN OF AN ARRAY problem) Syöte: Taulukko kokonaislukuja. Kysymys: Mikä on taulukon lukujen mediaani ( ei jos taulukko on tyhjä)?... ja vastaava päätösongelma alla kuuluu luokkaan P: Määritelmä: MEDIAANIN ETSINTÄ -ongelma (päätösongelmaversio) Syöte: Taulukko kokonaislukuja ja kokonaisluku k. Kysymys: Onko taulukon lukujen mediaani vähintään k? Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

11 Verkkoalgoritmikierroksen perusteella tiedetään, kuinka voidaan tehokkaasti etsiä jokin lyhin polku verkon kahden solmun välillä Täten seuraava ongelma kuuluu luokkaan P: Määritelmä: LYHIN POLKU -ongelma (engl. SHORTEST PATH problem) Syöte: suuntaamaton verkko G = (V,E), solmut v,v V, ja kokonaisluku k. Kysymys: Onko solmusta v solmuun v polkua, jonka pituus on korkeintaan k? Mutta ei tiedetä yhtään polynomisessa ajassa toimivaa algoritmia, joka ratkaisisi vastaavan pisimmän yksinkertaisen polun ongelman. Ei siis tiedetä, kuuluuko seuraava ongelma luokkaan P: Määritelmä: PISIN YKSINKERTAINEN POLKU -ongelma (engl. LONGEST SIMPLE PATH problem) Syöte: suuntaamaton verkko G = (V,E), solmut v,v V, ja kokonaisluku k. Kysymys: Onko solmusta v solmuun v yksinkertaista polkua, jonka pituus on vähintään k? Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

12 Vastaavasti tunnetaan algoritmeja, jotka löytävät minimaalisen virittävän puun tehokkaasti. Seuraava ongelma on siis luokassa P: Määritelmä: MINIMAALINEN VIRITTÄVÄ PUU Syöte: Yhtenäinen painotettu suuntaamaton verkko G = (V, E, w) ja kokonaisluku k. Kysymys: Onko verkolle virittävää puuta, jonka paino on korkeintaan k? Mutta jos kaikkien solmujen ei vaadita esiintyvän puussa vaan vain tietyn annetun osajoukon, niin ei tunneta algoritmia, joka ratkaisisi kaikki mahdolliset syötteet tehokkaasti. Eli ei tiedetä, kuuluuko seuraava ongelma luokkaan P: Määritelmä: MINIMAALINEN STEINER-PUU Syöte: Yhtenäinen painotettu suuntaamaton verkko G = (V, E, w), solmujoukko S V, ja kokonaisluku k. Kysymys: Onko verkolla aliverkkona puuta, joka sisältää kaikki solmut joukossa S ja jonka paino on korkeintaan k? Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

13 Luokan NP ongelmista Kaksi ekvivalenttia tapaa määritellä luokan NP muodostavat päätösongelmat: 1 Ongelmat, jotka voidaan ratkaista polynomisessa ajassa käyttäen epädeterministisiä (Turingin) koneita. Epädeterministen koneiden laskenta voi (rekursiivisesti) haaraantua yhdessä askeleessa kahdeksi samanaikaiseksi laskennaksi. Kone löytää ratkaisun jos mikä tahansa näistä laskennan haaroista löytää ratkaisun. Tällaisia koneita ei voi käytännössä toteuttaa mutta ne ovat tärkeä käsitteellinen työkalu; lisää epädeterministisyydestä Theoretical computer science -kurssilla. 2 Ongelmat, joiden jokaiselle kyllä -syötteelle, ja vain näille, on olemassa vähintään yksi sertifikaatti, joka on pieni (eli polynomisen kokoinen syötteen kokoon nähden) ja helposti tarkastettavissa (eli polynomisessa ajassa syötteen kokoon nähden) Mutta tällaisten sertifikaattien löytäminen, tai niiden olemassaolemattomuuden todistaminen, ei välttämättä ole helppoa (eli tehtävissä polynomisessa ajassa). Käytetään tällä kurssilla jatkossa jälkimmäistä määritelmää Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

14 Osajoukkosumma -ongelma Tarkastellaan jälleen Ohjelmointi 2 -kurssilta tuttua ongelmaa Määritelmä: OSAJOUKKOSUMMA -ongelma Syöte: Joukko S kokonaislukuja ja tavoitearvo t. Kysymys: Onko olemassa osajoukkoa S S siten, että s S s = t? Jokaiselle syötteelle (S, t), jolle vastaus on kyllä, sertifikaattina voi toimia sellainen joukko S kokonaislukuja, että (i) S S ja (ii) v S = t. Joukon S (bittiesityksen) koko on selvästikin aina polynominen suhteessa syötteen (S, t) (bittiesityksen) kokoon Voidaan tehokkaasti tarkastaa, päteekö sekä (i) S S, että (ii) v S = t Täten ongelma OSAJOUKKOSUMMA kuuluu luokkaan NP. Esimerkki Syötteelle (S,t), S = {2,7,14,49,98,343,686,2409,2793,16808,17206,117705,117993} ja t = , sertifikaatti on S = {2,7,98,343,686,2409,17206,117705}. Syötteelle (S,t), missä S = {2,7,14,49} ja t = 15, ei ole olemassa sertifikaattia ja vastaus on ei. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

15 Lauselogiikan toteutuvuus Lauselogiikan kaavat muodostetaan Boolen muuttujista ja käyttämällä negaatiota ( ei ), disjunktiota ( tai ) ja konjunktiota ( ja ) Totuusjakelu (engl. truth assignment) τ kaavalle φ on kuvaus kaavan muuttujilta vars(φ) Boolen arvoille B = {false, true}. Jakelu toteuttaa (engl. satisfies) kaavan jos kaava evaluoituu todeksi jakelun muuttujille antamilla arvoilla Kaava on toteutuva (engl. satisfiable) jos on olemassa jokin sen toteuttava totuusjakelu; muutoin se on toteutumaton (engl. unsatisfiable) Esimerkki Kaava ((a b c) (a b c) ( a b c) ( a b c)) (a b c) on toteutuva koska totuusjakelu τ = {a true,b false,c true} (ja 2 muutakin) evaluoi kaavan todeksi. Kaava (a) ( a b) ( b c) ( c a) on toteutumaton. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

16 Määritelmä: LAUSELOGIIKAN TOTEUTUVUUS eli SAT Syöte: lauselogiikan kaava. Kysymys: onko kaava toteutuva? Ongelma on selvästikin luokassa NP koska mitä tahansa toteuttavaa totuusjakelua voidaan käyttää sertifikaattina: sen koko on lineaarinen kaavan muuttujien määrään verrattuna ja kaavan evaluointi jakelussa on helppoa Teoreettisen ja käytännönkin käsittelyn helpottamiseksi käytetään usein tietyn normaalimuodon mukaisia kaavoja: Literaali on joko muuttuja x i tai sen negaatio x i Klausuuli on disjunktio (l 1... l k ) joukosta literaaleja Kaava on 3-CNF -normaalimuodossa (CNF = konjunktiivinen normaalimuoto, (engl. conjunctive normal form)) jos se on konjunktio klausuuleista, jokaisessa klausuulissa on 3 literaalia ja nämä eivät viittaa samoihin muuttujiin. Esimerkiksi kaava (x 1 x 2 x 4 ) ( x 1 x 2 x 3 ) (x 2 x 3 x 4 ) on 3-CNF -muodossa. Määritelmä: 3-CNF-SAT Syöte: 3-CNF -muodossa oleva kaava. Kysymys: Onko kaava toteutuva? Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

17 Joitain muita ongelmia luokassa NP Määritelmä: KAUPPAMATKUSTAJA-ongelma (engl. TRAVELLING SALESPERSON) Syöte: Suuntaamaton painotettu verkko G ja kokonaisluku k. Kysymys: Onko verkossa yksinkertaista sykliä, joka sisältää kaikki solmut ja jonka paino on korkeintaan k? Määritelmä: YLEISTETYT SUDOKUT Syöte: n n-kokoinen osittain täytetty Sudoku-ruudukko (n = k 2 jollekin kokonaisluvulle k 1). Kysymys: Voidaanko ruudukko täyttää sääntöjen mukaisesti? Lähde: Univ. Waterloo Ja tuhansia muita... Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

18 P vastaan NP Polynomisessa ajassa ratkeaville ongelmille, eli luokan P ongelmille, syöte itsessään voi toimia sertifikaattina koska kyllä vastauksen tarkastaminen siitä onnistuu polynomisessa ajassa Eli P NP... mutta ei tiedetä, päteekö P = NP Toisin sanoen: jos sertifikaatti ( ratkaisu) on pienehkö ja helposti tarkastettavissa, voidaanko se myös löytää helposti? Useimmat tutkijat uskovat, että P NP mutta kukaan ei ole onnistunut vielä todistamaan tätä Tiedetään tehokkaita algoritmeja useisiin ongelmiin kuten MINIMAALINEN VIRITTÄVÄ PUU, LYHIN POLKU,... mutta ei tunneta tehokkaita algoritmeja ongelmiin OSAJOUKKOSUMMA, 3-CNF-SAT eikä tuhansiin muihin (käytännön kannalta relevantteihin) ongelmiin luokassa NP vaikka erittäin monet erittäin älykkäät ihmiset ovat yrittäneet löytää sellaisia vuosikymmenten ajan Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

19 NP-täydelliset ongelmat Ongelma A luokassa NP on NP-täydellinen (engl. NP-complete) jos jokainen toinen ongelma B luokassa NP voidaan palauttaa (engl. reduce) siihen käyttämällä polynomisessa ajassa tapahtuvaa palautusta Instance of problem B in NP x Efficient algorithm for B polynomial time reduction R Instance of NP-complete problem A R(x) efficient algorithm for A solution Ominaisuus: Vastaus syötteeseen x on kyllä ongelmassa B vastaus syötteeseen R(x) on kyllä ongelmassa A Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

20 NP-täydelliset ongelmat Ongelma A luokassa NP on NP-täydellinen (engl. NP-complete) jos jokainen toinen ongelma B luokassa NP voidaan palauttaa (engl. reduce) siihen käyttämällä polynomisessa ajassa tapahtuvaa palautusta Instance of problem B in NP x Efficient algorithm for B polynomial time reduction R Instance of NP-complete problem A R(x) efficient algorithm for A solution Ominaisuus: Vastaus syötteeseen x on kyllä ongelmassa B vastaus syötteeseen R(x) on kyllä ongelmassa A Jos NP-täydellinen ongelma A voidaan ratkaista polynomisessa ajassa, niin silloin kaikki ongelma luokassa NP voidaan NP-täydelliset ongelmat ovat kaikkein vaikeimpia luokassa NP! Tällä hetkellä ei tiedetä onko NP-täydellisille ongelmille olemassa tehokkaita algoritmeja Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

21 Cook Levin -teoreema Teoreema (Cook 1971, Levin 1973) SAT (ja 3- CNF - SAT) on NP-ta ydellinen ongelma. Stephen Cook (1939 ) ACM Turing Award 1982 Leonid Levin (1948 ) Knuth Award in 2012 Richard Karp (1935 ) ACM Turing Award 1982 Karp [1972] esitteli ta ma n ja lkeen 21 muuta NP-ta ydellista ongelmaa Ta ma n ja lkeen tuhansia ongelmia on todistettu NP-ta ydellisiksi Esimerkiksi K AUPPAMATKUSTAJA, Y LEISTETYT SUDOKUT jne ovat NP-ta ydellisia ongelmia Esim. kirja Garey ja Johnson, 1979: Computers and Intractability: A Guide to the Theory of NP-Completeness Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

22 Kuinka todistaa ongelma NP-täydelliseksi? Annettuna: uusi ongelma C, jota epäillään NP-täydelliseksi. NP-täydellisyyden todistaminen: 1 osoita, että C kuuluu luokkaan NP, 2 valitse jokin jo NP-täydelliseksi todistettu ongelma A ja 3 palauta A ongelmaan C Instance of problem B in NP x Efficient algorithm for B Instance of NP-complete problem A x polynomial time reduction S Instance of your new problem C S(x) solution Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

23 Kuinka todistaa ongelma NP-täydelliseksi? Annettuna: uusi ongelma C, jota epäillään NP-täydelliseksi. NP-täydellisyyden todistaminen: 1 osoita, että C kuuluu luokkaan NP, 2 valitse jokin jo NP-täydelliseksi todistettu ongelma A ja 3 palauta A ongelmaan C Instance of problem B in NP x Efficient algorithm for B polynomial time reduction R Instance of NP-complete problem A R(x) polynomial time reduction S Instance of your new problem C S(R(x)) solution Polynomisessa ajassa tapahtuva palautukset yhdistyvät: B palautuu myös ongelmaan C! ongelma C on osoitettu NP-täydelliseksi Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

24 Kuinka todistaa ongelma NP-täydelliseksi? Annettuna: uusi ongelma C, jota epäillään NP-täydelliseksi. NP-täydellisyyden todistaminen: 1 osoita, että C kuuluu luokkaan NP, 2 valitse jokin jo NP-täydelliseksi todistettu ongelma A ja 3 palauta A ongelmaan C Instance of problem B in NP x Efficient algorithm for B polynomial time reduction R Instance of NP-complete problem A R(x) polynomial time reduction S Instance of your new problem C S(R(x)) efficient algorithm for C solution Polynomisessa ajassa tapahtuva palautukset yhdistyvät: B palautuu myös ongelmaan C! ongelma C on osoitettu NP-täydelliseksi jos ongelma C voidaan ratkaista polynomisessa ajassa, niin silloin myös A ja kaikki muutkin ongelmat luokassa NP voidaan Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

25 NP-täydellisyyden osoittaminen: esimerkki Määritelmä: TUNTEMATTOMIEN REKRYTOINTI Syöte: Sosiaalinen verkosto ja positiivinen kokonaisluku K, missä verkosto muodostuu (i) äärellisestä joukosta opiskelijoita ja (ii) symmetrisestä tuntee relaatiosta opiskelijoiden välillä. Kysymys: onko mahdollista rekrytoida kokeeseen K opiskelijaa niin, ettei kukaan opiskelija tunne toista ennestään? Inez Mary John Aino kun K = 3? Pete Pave Ida Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

26 NP-täydellisyyden osoittaminen: esimerkki Määritelmä: TUNTEMATTOMIEN REKRYTOINTI Syöte: Sosiaalinen verkosto ja positiivinen kokonaisluku K, missä verkosto muodostuu (i) äärellisestä joukosta opiskelijoita ja (ii) symmetrisestä tuntee relaatiosta opiskelijoiden välillä. Kysymys: onko mahdollista rekrytoida kokeeseen K opiskelijaa niin, ettei kukaan opiskelija tunne toista ennestään? Inez Mary John Aino kun K = 3? Pete Pave Ida Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

27 NP-täydellisyyden osoittaminen: esimerkki Määritelmä: TUNTEMATTOMIEN REKRYTOINTI Syöte: Sosiaalinen verkosto ja positiivinen kokonaisluku K, missä verkosto muodostuu (i) äärellisestä joukosta opiskelijoita ja (ii) symmetrisestä tuntee relaatiosta opiskelijoiden välillä. Kysymys: onko mahdollista rekrytoida kokeeseen K opiskelijaa niin, ettei kukaan opiskelija tunne toista ennestään? Inez Mary John Aino kun K = 3? Pete Pave Ida Määritelmä: RIIPPUMATON JOUKKO Syöte: Suuntaamaton verkko G = (V,E) ja kokonaisluku K. Kysymys: Onko verkossa riippumatonta joukkoa I V s.e. I = K? a a Riippumaton joukko on solmujoukko, jossa yhdenkään parin välillä ei ole kaarta. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

28 Teoreema RIIPPUMATON JOUKKO on NP-täydellinen. Todistus: Idea esimerkin avulla Palautetaan ongelmasta 3-CNF-SAT. 3-CNF kaava φ: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) Vastaava verkko G ja K = 3 (klausuulien määrä): x 2 x 1 x 3 x 2 x 1 x 3 x 2 x 1 x 3 Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

29 Teoreema RIIPPUMATON JOUKKO on NP-täydellinen. Todistus: Idea esimerkin avulla Palautetaan ongelmasta 3-CNF-SAT. 3-CNF kaava φ: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) Vastaava verkko G ja K = 3 (klausuulien määrä): x 2 x 1 x 3 x 2 x 1 x 3 x 2 x 1 x 3 1 Jos φ on toteutuva, niin G sisältää riippumattoman joukon kokoa K Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

30 Teoreema RIIPPUMATON JOUKKO on NP-täydellinen. Todistus: Idea esimerkin avulla Palautetaan ongelmasta 3-CNF-SAT. 3-CNF kaava φ: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) Vastaava verkko G ja K = 3 (klausuulien määrä): x 2 x 1 x 3 x 2 x 1 x 3 x 2 x 1 x 3 1 Jos φ on toteutuva, niin G sisältää riippumattoman joukon kokoa K 2 Jos G sisältää riippumattoman joukon kokoa K, niin φ on toteutuva Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

31 Teoreema RIIPPUMATON JOUKKO on NP-täydellinen. Todistus: Idea esimerkin avulla Palautetaan ongelmasta 3-CNF-SAT. 3-CNF kaava φ: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) Vastaava verkko G ja K = 3 (klausuulien määrä): x 2 x 1 x 3 x 2 x 1 x 3 x 2 x 1 x 3 1 Jos φ on toteutuva, niin G sisältää riippumattoman joukon kokoa K 2 Jos G sisältää riippumattoman joukon kokoa K, niin φ on toteutuva φ on toteutuva jos ja vain jos G sisältää riippumattoman joukon kokoa K Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

32 Teoreema RIIPPUMATON JOUKKO on NP-täydellinen. Todistus: Idea esimerkin avulla Palautetaan ongelmasta 3-CNF-SAT. 3-CNF kaava φ: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) Vastaava verkko G ja K = 3 (klausuulien määrä): x 2 x 1 x 3 x 2 x 1 x 3 x 2 x 1 x 3 1 Jos φ on toteutuva, niin G sisältää riippumattoman joukon kokoa K 2 Jos G sisältää riippumattoman joukon kokoa K, niin φ on toteutuva φ on toteutuva jos ja vain jos G sisältää riippumattoman joukon kokoa K Jos voitaisiin ratkaista ongelma RIIPPUMATON JOUKKO aina tehokkaasti, niin voitaisiin ratkaista myös 3-CNF-SAT ja kaikki muutkin ongelmat luokassa NP Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

33 Esimerkki: OSAJOUKKOSUMMA-ongelman NP-täydellisyys OSAJOUKKOSUMMA on luokassa NP koska voidaan helposti tarkastaa annetulle kokonaislukujoukkolle (i) onko se syötteen kokonaislukujoukon osajoukko ja (ii) summautuuko se tavoitearvoon t Voidaan näyttää ongelman OSAJOUKKOSUMMA NP-täydellisyys palauttamalla ongelma 3-CNF-SAT siihen Annettuna siis 3-CNF-kaava φ = C 1... C m Tehdään (polynomisessa ajassa) ongelman OSAJOUKKOSUMMA syöte (S φ,t φ ) siten, että φ on toteutuva jos ja vain jos S φ sisältää osajoukon, joka summautuu arvoon t φ Täten jos voitaisiin ratkaista OSAJOUKKOSUMMA polynomisessa ajassa, niin voitaisiin ratkaista polynomisessa ajassa myös 3-CNF-SAT ja kaikki muut ongelmat luokassa NP Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

34 Palautus ongelmasta 3-CNF-SAT ongelmaan OSAJOUKKOSUMMA: Annettuna 3-CNF-kaava φ = C 1... C m, missä jokainen klausuuli C i siis sisältää 3 literaalia, jotka eivät viittaa samoihin muuttujiin Olkoot kaavassa φ esiintyvät muuttujat x 1,...,x n Luvut joukossa S φ ja t φ ovat 10-kantaisia lukuja, joissa on n + m numeroa muodossa ˆx 1...ˆx n Ĉ 1...Ĉ m Jokaista muuttujaa x i kohden S φ sisältää kaksi lukua: v i missä numero ˆx i = 1 ja numero Ĉ j = 1 jokaiselle klausuulille C j, joka sisältää literaalin x i ; muut numerot ovat 0 v i missä numero ˆx i = 1 ja numero Ĉ j = 1 jokaiselle klausuulille C j, joka sisältää literaalin x i ; muut numerot ovat 0 Jokaiselle klausuulille C j, joukko S φ sisältää kaksi lukua: s j missä numero Ĉ j = 1 ja muut numerot ovat 0 s j missä numero Ĉ j = 2 ja muut numerot ovat 0 Tavoitearvossa t φ numero ˆx i = 1 jokaiselle muuttujalle x i numero Ĉ j = 4 jokaiselle klasuulille C j Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

35 Esimerkki Olkoot φ = C 1 C 2 C 3 C 4, missä C 1 = (x 1 x 2 x 3 ) C 2 = (x 1 x 2 x 3 ) C 3 = ( x 1 x 2 x 3 ) C 4 = ( x 1 x 2 x 3 ) Huom: totuusjakelu toteuttaa kaavan jos ja vain jos se asettaa parillisen määrän muuttujista x 1, x 2 ja x 3 arvoon true OSAJOUKKOSUMMA -ongelman syöte (S φ,t φ ) on kuvattu oikealla ˆx 1 ˆx 2 ˆx 3 Ĉ 1 Ĉ 2 Ĉ 3 Ĉ 4 v 1 = v 1 = v 2 = v 2 = v 3 = v 3 = s 1 = s 1 = s 2 = s 2 = s 3 = s 3 = s 4 = s 4 = t = Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

36 Esimerkki Olkoot φ = C 1 C 2 C 3 C 4, missä C 1 = (x 1 x 2 x 3 ) C 2 = (x 1 x 2 x 3 ) C 3 = ( x 1 x 2 x 3 ) C 4 = ( x 1 x 2 x 3 ) Huom: totuusjakelu toteuttaa kaavan jos ja vain jos se asettaa parillisen määrän muuttujista x 1, x 2 ja x 3 arvoon true OSAJOUKKOSUMMA -ongelman syöte (S φ,t φ ) on kuvattu oikealla Sininen osajoukko S S φ oikealla on sertifikaatti syötteelle (S φ,t φ ). Tätä vastaava totuusjakelu τ = {x 1 false,x 2 true,x 3 true} toteuttaa kaavan φ. ˆx 1 ˆx 2 ˆx 3 Ĉ 1 Ĉ 2 Ĉ 3 Ĉ 4 v 1 = v 1 = v 2 = v 2 = v 3 = v 3 = s 1 = s 1 = s 2 = s 2 = s 3 = s 3 = s 4 = s 4 = t = Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

37 Palautuksen oikeellisuus voidaan argumentoida seuraavasti. Oletetaan, että jakelu τ toteuttaa kaavan φ. Voidaan tehdä vastaava osajoukko S S φ, joka summautuu arvoon t φ, seuraavasti: Käydään läpi jokainen muuttuja x i : Jos τ(x i ) = true, niin sisällytä luku v i joukkoon S. Muutoin sisällytä luku v i joukkoon S. Tässä vaiheessa numero Ĉ j summassa on 1, 2 tai 3. Jokaiselle klasuulille C j, sisällytä löysennysluku (engl. slack value) s j, s j tai molemmat niin, että numeron Ĉ j summassa tulee arvoon 4. Todistus toiseen suuntaan: oletetaan, että osajoukko S S φ summautuu arvoon t φ. Rakennetaan vastaava kaavan φ toteuttava totuusjakelu τ seuraavasti. Havaitaan ensin, että S sisältää joko luvun v i tai v i (muttei molempia) jokaiselle muuttujalle x i koska numero ˆx i = 1 tavoitearvossa t φ Jos v i S, niin otetaan τ(x i ) = true, muutoin τ(x i ) = false Nyt vähintään yksi literaali jokaisessa klausuulissa C j evaluoituu todeksi jakelussa τ koska löysennysluvut s j ja s j yksinään voivat saada numeron Ĉ j summassa korkeintaan arvoon 3 eikä arvoon 4 kuten t φ vaatisi. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

38 NP-täydellisyys: merkitys Voidaanko NP-täydellisiä ongelmia ratkaista polynomisessa ajassa? Yksi seitsemästä 1M$ Clay Mathematics Institute Millenium Prize -ongelmasta (näistä 6 edelleen avoinna) There is nothing wrong in trying to prove that an NP-complete problem can be solved in polynomial time. The point is that without an NP-completeness proof one would be trying the same thing without knowing it! (muokattu kirjasta C. Papadimitriou: Computational complexity) Mitä tehdä kun ongelma on NP-täydellinen? Kehitetään peräytyvään hakuun pohjautuvia algoritmeja, joissa on hyvä heuristiikka ja karsintamenetelmiä Tarkastellaan vain käytännössä esiintyviä rajoitetumman muotoisia syötteitä Kehitetään virheen sallivia approksimointialgoritmeja Käytetään epätäydellisiä lokaalin haun menetelmiä Käytetään olemassa olevia, pitkälle kehitettyjä ohjelmistoja... Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

39 Kattava hakeminen Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

40 Ehkäpä suoraviivaisin tapa ratkaista laskennallisesti vaativia ongelmia on käydä kattavasti läpi kaikki ratkaisumahdollisuudet Tämä tehdään tyypillisesti peräytyvällä hakemisella (engl. backtracking search), joka yrittää muodostaa ratkaisun laajentamalla osittaisratkaisuja Luonnollisesti, jos P NP, niin tämän lähestymistavan ajoaika tulee olemaan pahimmassa tapauksessa ylipolynominen, yleensä vähintään eksponentiaalinen, NP-täydellisille ja näitä vaikeammille ongelmille Mutta joillekin syötteille tällainen haku voi hyvinkin nopeasti löytää ratkaisun tai päätellä, että ratkaisuja ei ole olemassa Hakualgoritmia voidaan usein tehostaa lisäämällä siihen karsintamenetelmiä (engl. pruning techniques), joiden avulla voidaan päätellä aikaisemmin, että nykyistä osittaisratkaisua ei voida laajentaa täydeksi ratkaisuksi Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

41 OSAJOUKKOSUMMA-ongelma Ohjelmointi 2-kurssilta: yksinkertainen peräytyvän hakemisen algoritmi OSAJOUKKOSUMMA-ongelmalle: def solve ( set : Set [ I n t ], t a r g e t : I n t ) : Option [ Set [ I n t ] ] = { def i n n e r ( s : Set [ I n t ], t : I n t ) : Option [ Set [ I n t ] ] = { i f ( t == 0) return Some( Set [ I n t ] ( ) ) else i f ( s. isempty ) return None val e = s. head val r e s t = s e / / Search f o r a s o l u t i o n w i t h o u t e val solnotin = inner ( rest, t ) i f ( solnotin. nonempty ) return solnotin / / Search f o r a s o l u t i o n with e val s o l I n = i n n e r ( rest, t e ) i f ( s o l I n. nonempty ) return Some( s o l I n. get + e ) / / No s o l u t i o n found here, backtrack return None } i n n e r ( set, t a r g e t ) } Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

42 Esimerkki Mahdollinen kutsupuu kun S = { 9, 3,7,12} ja t = 10. inner({-9,-3,7,12}, 10) omit -9 take -9 inner({-3,7,12}, 10) inner({-3,7,12}, 19) omit -3 take -3 omit -3 take -3 inner({7,12}, 10) inner({7,12}, 13) inner({7,12}, 19) inner({7,12}, 22) omit 7 take 7 omit 7 take 7 omit 7 take 7 inner({12}, 10) inner({12}, 3) inner({12}, 13) inner({12}, 6) inner({12}, 19) inner({12}, 12) omit 12take 12 omit 12 take 12 omit 12 take 12 omit 12 take 12 omit 12 take 12 omit 12 take 12 inner({}, 10) inner({}, -2) inner({}, 3) inner({}, -9) inner({}, 13) inner({}, 1) inner({}, 6) inner({}, -6) inner({}, 19) inner({}, 7) inner({}, 12) inner({}, 0) Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

43 Hakualgoritmia voidaan tehostaa lisäämällä siihen karsintasääntö, joka huomaa, onko nykyinen tavoitearvo t liian suuri tai pieni suhteessa nykyisessä joukossa s esiintyvien lukujen maksimaaliseen tai minimaaliseen summaan def solve ( set : Set [ I n t ], t a r g e t : I n t ) : Option [ Set [ I n t ] ] = { def i n n e r ( s : Set [ I n t ], t : I n t ) : Option [ Set [ I n t ] ] = { i f ( t == 0) return Some( Set [ I n t ] ( ) ) else i f ( s. isempty ) return None else i f ( s. f i l t e r ( > 0). sum < t s. f i l t e r ( < 0). sum > t ) / / The p o s i t i v e ( negative ) number cannot add up ( down ) to t return None val e = s. head val r e s t = s e / / Search f o r a s o l u t i o n w i t h o u t e val solnotin = inner ( rest, t ) i f ( solnotin. nonempty ) return solnotin / / Search f o r a s o l u t i o n with e val s o l I n = i n n e r ( rest, t e ) i f ( s o l I n. nonempty ) return Some( s o l I n. get + e ) / / No s o l u t i o n found here, backtrack return None } i n n e r ( set, t a r g e t ) } Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

44 Esimerkki Mahdollinen kutsupuu kun S = { 9, 3,7,12} ja t = 10. inner({-9,-3,7,12}, 10) omit -9 take -9 inner({-3,7,12}, 10) inner({-3,7,12}, 19) omit -3 take -3 omit -3 take -3 inner({7,12}, 10) inner({7,12}, 13) inner({7,12}, 19) inner({7,12}, 22) omit 7 take 7 omit 7 take 7 omit 7 take 7 inner({12}, 10) inner({12}, 3) inner({12}, 13) inner({12}, 6) inner({12}, 19) inner({12}, 12) omit 12take 12 omit 12 take 12 omit 12 take 12 omit 12 take 12 inner({}, 10) inner({}, -2) inner({}, 3) inner({}, -9) inner({}, 6) inner({}, -6) inner({}, 12) inner({}, 0) Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

45 Erikoistapaukset Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

46 Joskus laskennallinen ongelma voi täydessä laajuudessaan olla vaikea ratkaista mutta ne syötteet, joita tulee käytännössä vastaan, ovatkin jollain tavalla rajoitetumpia erikoistapauksia Tällaisissa tapauksissa voi olla mahdollista kehittää tehokas algoritmi näille syötteille Teknisesti algoritmi ei välttämättä enää ratkaise samaa ongelmaa, vaan ongelman jonka syötteet ovat alkuperäisen ongelman syötteiden osajoukko Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

47 OSAJOUKKOSUMMA-ongelma pienehköillä arvoilla OSAJOUKKOSUMMA-ongelman tapauksessa on kohtuullisen helppoa muodostaa dynaamiseen ohjelmointiin (kierros 6) perustuva algoritmi, joka toimii erittäin tehokkaasti silloin, kun ongelmassa esiintyvät luvut ovat pienehköjä Käytetään edellisen, peräytyvään hakuun pohjautuvan, algoritminkin perustana olevaa rekursiivista määritelmää. sss-rec(s, t) evaluoituu todeksi jos ja vain jos joukolla S on arvoon t summautuva osajoukko: sss-rec(s,t) = true jos t = 0 sss-rec(s,t) = false jos S = /0 ja t 0 sss-rec(s,t) = true jos sss-rec(s \ {e},t) = true tai sss-rec(s \ {e},t e) = true jollekin luvulle e S Käyttäen osatulosten tallentamista taulukoihin, voidaan toteuttaa dynaamisen ohjelmoinnin algoritmi, jonka pahimman tapauksen ajoaika on O( S ( s S,s>0 s s S,s<0 s)) ja lisämuistin tarve luokkaa O( s S,s>0 s s S,s<0 s) Konkreettisen ratkaisun muodostaminen on myös melko suoraviivaista Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

48 Algoritmin luonnos: Otetaan tyhjä taulukko a. Vuoronperään jokaiselle luvulle x S, kirjoitetaan yhdellä kerralla a[y + x] = x jokaiselle y, jolle a[y] on jo määritelty, ja a[x] = x. Eli yksi luku kerrallaan lisätään taulukkoon kaikki ne osasummat, jotka saadaan luvusta joko itsekseen tai summaamalla johonkin aiemmista luvuista saatuun summaan. Alkioon a[s] kirjoitettava luku kertoo, mikä oli summan s viimeisin lisätty luku ja mahdollistaa vastauksen konstruoinnin. Esimerkki Tarkastellaan ongelmaa kun syötteen joukko on S = {2,7,14,49,98,343,686,2409,2793,16808,17206,117705,117993}. Taulukon alkuosa on Taulukosta nähdään suoraan esimerkiksi, että on olemassa osajoukko S S jolle s S = 58 ja että tällainen osajoukko saadaan alkioista a[58] = 49, a[58 49] = a[9] = 7 ja a[9 7] = a[2] = 2. Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

49 Onko edellä tehty dynaamiseen ohjelmointiin perustuva algoritmi polynomisen ajan algoritmi NP-täydelliselle ongelmalle OSAJOUKKOSUMMA? Ei ole: ongelmassa syötteen koko on syötteen bittiesityksen koko summan s S,s>0 s s S,s<0 s arvo, ja siten algoritmin ajoaika, voi olla eksponentiaalisen suuri syötteen kokoon nähden Tarkastellaan esimerkkinä lukuja, joita muodostettiin kun palautettiin 3-CNF-SAT-ongelman syötteitä OSAJOUKKOSUMMA-summan syötteiksi: Kun 3-CNF-SAT-ongelman kaavassa on n muuttujaa ja m klausuulia, niin muodostetuissa luvuissa on n + m numeroa. Lukujen arvot ovat siis kokoluokassa 10 n+m eli ylipolynomisen suuria suhteessa 3-CNF-kaavan bittiesityksen kokoon O(m log 2 n). Huom: jos tämä dynaamisen ohjelmoinnin algoritmi toteutettaisiin kuvausten (HashMap tms) avulla taulukoiden sijaan, se toimisi hyvin myös sellaisille syötteille, joissa (i) luvut voisivat olla todella isoja mutta (ii) luvuista muodostettavien erilaisten summien lukumäärä olisi pienehkö Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

50 Palauttaminen toiseen ongelmaan Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

51 Joillekin NP-täydellisille ja vaativammille ongelmille on tehty erittäin pitkälle kehitettyjä ja useilla syötteillä tehokkaita ratkaisinohjelmistoja: lauselogiikan toteutuvuus: MiniSat ja monia muita lineaarinen kokonaislukuoptimointi (engl. integer linear programming, ILP): lp solve ja muita toteutuvuus teorioiden suhteen (engl. satisfiability modulo theories): Z3 ja muita... Täten jos voidaan palauttaa tarkasteltava ongelma B johonkin yllämainituista ongelmista A, niin voi olla mahdollista saada aikaan monilla syötteillä tehokkaasti toimiva ratkaisumenetelmä ongelmalle B ilman, että tarvitsee itse ohjelmoida mahdollisesti hyvinkin monimutkaista hakumenetelmää Instance of problem B in NP x Efficient algorithm for B polynomial time reduction R Instance of NP-complete problem A R(x) efficient algorithm for A solution Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

52 Esimerkki: Sudokujen ratkaiseminen lauselogiikan toteutuvuuden avulla Käytetään palauttamismenetelmää ratkaisemaan Sudoku-ongelmia Käytetään lauselogiikan toteutuvuusongelman ratkaisevia hyvin kehittyneitä ohjelmia, ns. SAT-solvereita Eli kun on annettu n n-alkion osittain täytetty Sudoku-ruudukko, niin muodostetaan lauselogiikan kaava φ siten, että Sudoku-ruudukolla on ratkaisu jos ja vain jos kaava on toteutuva, ja kaavan toteuttavasta totuusjakelusta saadaan helposti ratkaisu Sudoku-ruudukolle Kaavassa kytetään Boolen muuttujia x r,c,v jokaiselle riville r = 1,...,n, sarakkeelle c = 1,...,n ja arvolle v = 1,...,n Intuitio: jos x r,c,v = true, niin ruudukon rivin r ja sarakkeen c arvo on v Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

53 Konjunktiivisen normaalimuodon kaava φ = C 1 C 2 C 3 C 4 C 5 C 6 rakennetaan klausuulijoukoista, jotka rajoittavat toteuttavia totuusjakeluita vastaamaan Sudoku-ratkaisuilta vaadittavaa muotoa: Jokaisella alkiolla on ainakin yksi arvo: C 1 = 1 r n,1 c n(x r,c,1 x r,c,2... x r,c,n ) Jokaisella alkiolla on korkeintaan yksi arvo: C 2 = 1 r n,1 c n,1 v<v n( x r,c,v x r,c,v ) Jokainen rivi sisältää kaikki arvot: C 3 = 1 r n,1 v n(x r,1,v x r,2,v... x r,n,v ) Jokainen sarake sisältää kaikki arvot: C 4 = 1 c n,1 v n(x 1,c,v x 2,c,v... x n,c,v ) Jokainen pieni ruudukko sisältää kaikki arvot: C 5 = 1 r n,1 c n,1 v n ( (r,c) B n (r,c ) x r,c,v) missä B n (r,c ) = {(r n + i,c n + j) 0 i < n,0 j < n} Ruudukossa jo annetut arvot H pysyvät samoina: C 6 = (r,c,v) H(x r,c,v ) Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

54 Muodostettu kaava sisältää H yksikköklausuulia, n 2 n(n 1) binääriklausuulia ja 2 3n 2 klausuulia, joissa on n literaalia Kaavan koko on siis polynominen suhteessa arvoon n Sudoku-ruudukko: Kaava: (x 1,1,1 x 1,1,2... x 1,1,9 ) (x 9,9,1 x 9,9,2... x 9,9,9 ) ( x 1,1,1 x 1,1,2 )... ( x 9,9,8 x 9,9,9 ) (x 1,1,1 x 1,2,1... x 1,9,1 ) (x 9,1,9 x 9,2,9... x 9,9,9 ) (x 1,1,1 x 2,1,1... x 9,1,1 ) (x 1,9,9 x 2,9,9... x 9,9,9 ) (x 1,1,1 x 1,2,1 x 1,3,1 x 2,1,1... x 3,3,1 ) (x 7,7,9 x 7,8,9 x 7,9,9 x 8,7,9... x 9,9,9 ) (x 1,8,1 ) (x 2,1,4 ) (x 3,2,2 )... (x 9,6,6 ) Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

55 Huom. Tämän lähestymistavan toteutus, käyttäen Java-pohjaista Sat4j toteutuvuustarkistinta, sisältyy ohjelmointitehtävän coloring with SAT Eclipse-pakettiin Kannattaa kokeilla, kuinka sen suorituskyky vertautuu Ohjelmointi 2-kurssilla tekemääsi, peräytyvään hakuun pohjautuvaan, Sudoku-ratkaisimeen Tällaista lähestymistapaa, jossa jonkin toisen ongelman syötteet kuvataan lauselogiikan toteutuvuuden, tai jonkin muun vastaavan rajoiteongelman toteutuvuuden (engl. constraint satisfaction), avulla, kutsutaan rajoiteohjelmoinniksi (engl. constraint programming). Se on eräs deklaratiivisen ohjelmoinnin (engl. declarative programming) muoto. Deklaratiivisessa ohjelmoinnissa ohjelma kuvaa, millaisia ratkaisujen tulisi olla (eikä kuinka ne löydetään), ja tämän jälkeen ratkaisin etsii ratkaisun (tai kertoo, ettei sellaisia ole). Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

56 Loppusanat Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

57 Joitain mielenkiintoisia kursseja keväällä 2018: CS-E4000 Seminar in Computer Science: Algorithms (periodit III-IV), organisoijana Parinya Chalermsook CS-E4800 Artificial Intelligence (periodit III-IV) CS-E4580 Programming parallel computers (periodi V) CS-E3220 Declarative programming (periodi V) Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

58 Kiitoksia syksystä 2017! Toivottavasti ohjelmointitehtävät ovat olleet opettavaisia Kiitoksia myös kaikesta palautteesta! En ole kaikkeen pystynyt antamaan henkilökohtaista vastapalautetta A+-järjestelmässä mutta kaikki palautteet luetaan ja otetaan huomioon. Kurssin suorittaminen hyväksytysti: ohjelmointitehtävien läpäiseminen ja tentin läpäiseminen Tentit ovat joulukuussa 2017 ja helmikuussa 2018 Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

59 Kiitoksia syksystä 2017! Toivottavasti ohjelmointitehtävät ovat olleet opettavaisia Kiitoksia myös kaikesta palautteesta! En ole kaikkeen pystynyt antamaan henkilökohtaista vastapalautetta A+-järjestelmässä mutta kaikki palautteet luetaan ja otetaan huomioon. Kurssin suorittaminen hyväksytysti: ohjelmointitehtävien läpäiseminen ja tentin läpäiseminen Tentit ovat joulukuussa 2017 ja helmikuussa 2018 Menestyksekästä loppusyksyä ja tenttikautta, hyvää joulua ja algoritmirikasta uutta vuotta 2018! Tommi Junttila (Aalto University) Kierros 10 CS-A1140 / Autumn / 48

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

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko 238 7.2 Luokka NP Luokka NP on: NP = { NTIME(t) t on polynomi } = k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko P NP Luokan NP ongelmista

Lisätiedot

Laskennan vaativuus ja NP-täydelliset ongelmat

Laskennan vaativuus ja NP-täydelliset ongelmat Laskennan vaativuus ja NP-täydelliset ongelmat TRAK-vierailuluento 13.4.2010 Petteri Kaski Tietojenkäsittelytieteen laitos Tietojenkäsittelytiede Tietojenkäsittelytiede tutkii 1. mitä tehtäviä voidaan

Lisätiedot

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

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen Luento omatoimisen luennan tueksi algoritmiikan tutkimusseminaarissa 23.9.2002. 1 Sisältö Esitellään ongelmat Steiner-puu Kauppamatkustajan

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys

Lisätiedot

SAT-ongelman rajoitetut muodot

SAT-ongelman rajoitetut muodot SAT-ongelman rajoitetut muodot olemme juuri osoittaneet että SAT on NP-täydellinen perusidea on nyt osoittaa joukolle kiinnostavia ongelmia A NP että SAT p m A, jolloin kyseiset A myös ovat NP-täydellisiä

Lisätiedot

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:

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 3SAT p m VC Todistus. Olk. φ = C 1 C C m 3-cnf-kaava, jossa esiintyvät muuttujat x 1,..., x n. Vastaava solmupeiteongelman tapaus G, k muodostetaan seuraavasti. G:ssä on solmu kutakin literaalia

Lisätiedot

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

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m. 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

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

Lisätiedot

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

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtinä tilanteet joista ei siirtymää,

Lisätiedot

6. Approksimointialgoritmit

6. Approksimointialgoritmit 6. Approksimointialgoritmit Tässä luvussa käsitellään lyhyesti approksimointiin liittyvät peruskäsitteet ja joitain keskeisiä approksimoituvuustuloksia. Tavoitteena on, että opiskelija näkee approksimointialgoritmien

Lisätiedot

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

3SAT-ongelman NP-täydellisyys [HMU ] 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

Lisätiedot

Sisältö. ICS-C2000 Tietojenkäsittelyteoria. Kertausta edellisistä kerroista...

Sisältö. ICS-C2000 Tietojenkäsittelyteoria. Kertausta edellisistä kerroista... Sisältö ICS-C2000 Tietojenkäsittelyteoria Luento 11: Ricen lause ja rajoittamattomat kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016 Aiheet: Ricen lause Yleiset eli

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria ICS-C2000 Tietojenkäsittelyteoria Luento 11: Ricen lause ja rajoittamattomat kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016 Sisältö Aiheet: Ricen lause Yleiset eli

Lisätiedot

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

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen. 261 Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen. Pitää osoittaa siis, että A mp SAT mielivaltaisella A NP Ainoa, mitä A:sta tiedetään on, että sillä on polynomisessa

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 8.5.2018 Timo Männikkö Luento 13 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys Kertaus ja tenttivinkit Algoritmit 2 Kevät

Lisätiedot

Johdatus logiikkaan I Harjoitus 4 Vihjeet

Johdatus logiikkaan I Harjoitus 4 Vihjeet Johdatus logiikkaan I Harjoitus 4 Vihjeet 1. Etsi lauseen ((p 0 p 1 ) (p 0 p 1 )) kanssa loogisesti ekvivalentti lause joka on (a) disjunktiivisessa normaalimuodossa, (b) konjunktiivisessa normaalimuodossa.

Lisätiedot

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö Algoritmit 2 Luento 14 To 2.5.2019 Timo Männikkö Luento 14 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydelliset ongelmat Kertaus ja tenttivinkit Algoritmit

Lisätiedot

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

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät

Lisätiedot

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö Algoritmit 2 Luento 14 Ke 3.5.2017 Timo Männikkö Luento 14 Ositus ja rekursio Rekursion toteutus Kertaus ja tenttivinkit Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 2/30 Ositus Tehtävän esiintymä ositetaan

Lisätiedot

isomeerejä yhteensä yhdeksän kappaletta.

isomeerejä yhteensä yhdeksän kappaletta. Tehtävä 2 : 1 Esitetään aluksi eräitä havaintoja. Jokaisella n Z + symbolilla H (n) merkitään kaikkien niiden verkkojen joukkoa, jotka vastaavat jotakin tehtävänannon ehtojen mukaista alkaanin hiiliketjua

Lisätiedot

T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut

T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut T-79.5101 kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut 1. Jokaiselle toteutuvalle lauselogiikan lauseelle voidaan etsiä malli taulumenetelmällä merkitsemällä lause taulun juureen

Lisätiedot

Muita vaativuusluokkia

Muita vaativuusluokkia 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 (Ladner 1975):

Lisätiedot

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento

Lisätiedot

Taulumenetelmä modaalilogiikalle K

Taulumenetelmä modaalilogiikalle K / Kevät 2004 ML-6 1 Taulumenetelmä modaalilogiikalle On vaikeaa löytää Hilbert-tyylisiä todistuksia: Käytössä Modus Ponens -sääntö: jotta voidaan johtaa Q, täytyy johtaa P ja P Q. Mutta mikä on sopiva

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit 811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi

Lisätiedot

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

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

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

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM Kurssi tähän asti: säännölliset yhteydettömät ratkeavat { a n } { a n b n } { a n b n c n } tunnistettavat A TM HALT TM kaikki kielet A TM HALT TM TOTAL TM TOTAL TM EQ TM EQ TM 277 5. Laskennan vaativuus

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden

Lisätiedot

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja 582206 Laskennan mallit (syksy 2008) 2. kurssikoe 11.12., ratkaisuja Tehtävän 1 tarkasti Harri Forsgren, tehtävän 2 Joel Kaasinen ja tehtävän 3 Jyrki Kivinen. Palautetilaisuuden 19.12. jälkeen arvosteluun

Lisätiedot

v 8 v 9 v 5 C v 3 v 4

v 8 v 9 v 5 C v 3 v 4 Verkot Verkko on (äärellinen) matemaattinen malli, joka koostuu pisteistä ja pisteitä toisiinsa yhdistävistä viivoista. Jokainen viiva yhdistää kaksi pistettä, jotka ovat viivan päätepisteitä. Esimerkiksi

Lisätiedot

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

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120 Tehtävä 1 : 1 Merkitään jatkossa kirjaimella H kaikkien solmujoukon V sellaisten verkkojen kokoelmaa, joissa on tasan kolme särmää. a) Jokainen verkko G H toteuttaa väitteen E(G) [V]. Toisaalta jokainen

Lisätiedot

Lineaariset kongruenssiyhtälöryhmät

Lineaariset kongruenssiyhtälöryhmät Lineaariset kongruenssiyhtälöryhmät LuK-tutkielma Jesse Salo 2309369 Matemaattisten tieteiden laitos Oulun yliopisto Sisältö Johdanto 2 1 Kongruensseista 3 1.1 Kongruenssin ominaisuuksia...................

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 ICS-C2000 Tietojenkäsittelyteoria Kevät 206 Kierros 0, 2. 24. maaliskuuta Huom! Perjantaina 25. maaliskuuta ei ole laskareita (pitkäperjantai), käykää vapaasti valitsemassanne ryhmässä aiemmin viikolla.

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

Onko algoritmiselle ongelmalle löydetty ratkaisualgoritmi riittävän hyvä?

Onko algoritmiselle ongelmalle löydetty ratkaisualgoritmi riittävän hyvä? Ongelman vaativuuden rajat Onko algoritmiselle ongelmalle löydetty ratkaisualgoritmi riittävän hyvä? Olisiko mahdollista löytää asymptoottisesti tehokkaampi ratkaisu, vai onko algoritmi optimaalinen? Kysymyksiin

Lisätiedot

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta Juha Nurmonen Matematiikan laitos Helsingin yliopisto Ajatellaanpa esimerkiksi kauppamatkustajan jokapäiväistä ongelmaa: Kauppamatkustajan

Lisätiedot

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on

Lisätiedot

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

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

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen. Lause: Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia,

Lisätiedot

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

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden

Lisätiedot

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x

Lisätiedot

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö Algoritmit 1 Luento 13 Ma 26.2.2018 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Rekursiiviset palautukset [HMU 9.3.1]

Rekursiiviset palautukset [HMU 9.3.1] Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut Pisteytys on ilmoitettu välikoevaihtoehdon mukaan (joko tehtävät 1, 2 ja 3 välikokeen 1 uusintana tai tehtävät 4, 5 ja 6 välikokeen 2 uusintana).

Lisätiedot

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

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 4 Ratkaisuehdotukset HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 4 Ratkaisuehdotukset 1. Etsi lauseen (p 0 (p 1 p 0 )) p 1 kanssa loogisesti ekvivalentti lause joka on (a) disjunktiivisessa

Lisätiedot

Verkon värittämistä hajautetuilla algoritmeilla

Verkon värittämistä hajautetuilla algoritmeilla Verkon värittämistä hajautetuilla algoritmeilla 5 12 30 19 72 34 Jukka Suomela 15 77 18 4 9. tammikuuta 2012 19 2 68 Verkko 2 Verkko solmu 3 Verkko solmu kaari 4 Hajautettu järjestelmä solmu (tietokone)

Lisätiedot

Näytetään nyt relaatioon liittyvien ekvivalenssiluokkien olevan verkon G lohkojen särmäjoukkoja. Olkoon siis f verkon G jokin särmä.

Näytetään nyt relaatioon liittyvien ekvivalenssiluokkien olevan verkon G lohkojen särmäjoukkoja. Olkoon siis f verkon G jokin särmä. Tehtävä 6 : 1 Oletetaan ensin joukon X olevan sisältymisen suhteen minimaalinen solmut a ja b toisistaan erotteleva joukon V(G)\{a, b} osajoukko. Olkoon x joukon X alkio. Oletuksen nojalla joukko X\{x}

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 126 Luku 3 Puut 3.1 Puu 3.2 Virittävä puu 3.3 Virittävän puun konstruointi 3.4 Minimaalinen virittävä puu

Lisätiedot

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

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS. TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. joulukuuta 2015 Sisällys TM vs yleiset kieliopit Lause Jokaiselle kielelle A seuraavat ovat yhtäpitävät: 1.

Lisätiedot

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1) MS-A0401 Diskreetin matematiikan perusteet Tentti ja välikokeiden uusinta 10.11.015 Kirjoita jokaiseen koepaperiin nimesi, opiskelijanumerosi ym. tiedot! Laskimia tai taulukoita ei saa käyttää tässä kokeessa!

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

Lisätiedot

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

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet ) T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen

Lisätiedot

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)

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) Tehtävä 1 Päättele resoluutiolla seuraavista klausuulijoukoista. a. {{p 0 }, {p 1 }, { p 0, p 2 }, {p 1, p 2, p 3 }, { p 2, p 3 }, {p 3 }}, b. {{ p 0, p 2 }, {p 0, p 1 }, {{ p 1, p 2 }, { p 2 }}, c. {{p

Lisätiedot

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

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset 1. Päättele resoluutiolla seuraavista klausuulijoukoista: (a) {{p 0 }, {p 1 }, { p 0, p 2 },

Lisätiedot

Turingin koneen laajennuksia

Turingin koneen laajennuksia Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet

MS-A0402 Diskreetin matematiikan perusteet MS-A0402 Diskreetin matematiikan perusteet Osa 1: Joukko-oppi ja logiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kiitokset Nämä luentokalvot perustuvat Gustaf

Lisätiedot

Reaalilukuvälit, leikkaus ja unioni (1/2)

Reaalilukuvälit, leikkaus ja unioni (1/2) Luvut Luonnolliset luvut N = {0, 1, 2, 3,... } Kokonaisluvut Z = {..., 2, 1, 0, 1, 2,... } Rationaaliluvut (jaksolliset desimaaliluvut) Q = {m/n m, n Z, n 0} Irrationaaliluvut eli jaksottomat desimaaliluvut

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta 811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden

Lisätiedot

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rajoittamattomat kieliopit (Unrestricted Grammars) Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

Lisää pysähtymisaiheisia ongelmia Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti

Lisätiedot

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

7. Aikavaativuus. Ohjelmistotekniikan laitos OHJ-2300 Johdatus tietojenkäsittelyteoriaan, syksy 212 7. Aikavaativuus Edellä tarkasteltiin ongelmien ratkeavuutta kiinnittämättä huomiota ongelman ratkaisun vaatimaan aikaan Nyt siirrytään tarkastelemaan ratkeavien ongelmien aikavaativuutta Periaatteessa

Lisätiedot

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Graafin 3-värittyvyyden tutkinta T-79.165 Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Mikko Malinen, 36474R 29. maaliskuuta, 2005 Tiivistelmä Artikkelissa käydään läpi teoriaa, jonka avulla

Lisätiedot

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms. Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,

Lisätiedot

5. Rajoitelaskenta (Constraint Satisfaction)

5. Rajoitelaskenta (Constraint Satisfaction) 5. Rajoitelaskenta (Constraint Satisfaction) Eero Hyvönen Helsingin yliopisto Solution = An assignment of values for the variables satifying the contraints Some CSPs: optimal solution is the best solution

Lisätiedot

Luonnollisen päättelyn luotettavuus

Luonnollisen päättelyn luotettavuus Luonnollisen päättelyn luotettavuus Luotettavuuden todistamiseksi määrittelemme täsmällisesti, milloin merkkijono on deduktio. Tässä ei ole sisällytetty päättelysääntöihin iteraatiosääntöä, koska sitä

Lisätiedot

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö Johdatus diskreettiin matematiikkaan Harjoitus 5, 14.10.2015 1. Ratkaise rekursioyhtälö x n+4 2x n+2 + x n 16( 1) n, n N, alkuarvoilla x 1 2, x 2 14, x 3 18 ja x 4 42. Ratkaisu. Vastaavan homogeenisen

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko

Lisätiedot

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

on rekursiivisesti numeroituva, mutta ei rekursiivinen. 6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = { M pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

Lisätiedot

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

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri } 135 4.3 Algoritmeista Churchin ja Turingin formuloinnit laskennalle syntyivät Hilbertin vuonna 1900 esittämän kymmenennen ongelman seurauksena Oleellisesti Hilbert pyysi algoritmia polynomin kokonaislukujuuren

Lisätiedot

Polynomiset palautukset ja NP-täydellisyys

Polynomiset palautukset ja NP-täydellisyys 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

Lisätiedot

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5. 2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2

Lisätiedot

3. Laskennan vaativuusteoriaa

3. Laskennan vaativuusteoriaa 3. Laskennan vaativuusteoriaa tähän asti puhuttu siitä, mitä on mahdollista laskea äärellisessä ajassa siirrytään tarkastelemaan laskemista kohtuullisessa ajassa vaihtoehtoisesti voidaan laskenta-ajan

Lisätiedot

T Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut

T Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut T-79.146 Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut 1. Jokaiselle toteutuvalle lauselogiikan lauseelle voidaan etsiä malli taulumenetelmällä merkitsemällä lause taulun

Lisätiedot

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio Ellipsoidimenetelmä Kokonaislukuoptimointi Sovelletun matematiikan lisensiaattiseminaari Kevät 2008 / 1 Sisällys Ellipsoidimenetelmän geometrinen perusta ja menetelmän idea Formaali ellipsoidimenetelmä

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

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

NP-täydellisyys. Joonas Järvenpää ja Topi Talvitie. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos NP-täydellisyys Joonas Järvenpää ja Topi Talvitie Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 Sisältö 1 Johdanto 1 2 Ongelman määrittely

Lisätiedot

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö Algoritmit 2 Luento 12 Ke 26.4.2017 Timo Männikkö Luento 12 Rajoitehaku Kauppamatkustajan ongelma Lyhin virittävä puu Paikallinen etsintä Vaihtoalgoritmit Geneettiset algoritmit Simuloitu jäähdytys Algoritmit

Lisätiedot

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus 1 / 51 Lineaarikombinaatio Johdattelua seuraavaan asiaan (ei tarkkoja määritelmiä): Millaisen kuvan muodostaa joukko {λv λ R, v R 3 }? Millaisen

Lisätiedot

1. Primitiivirekursiiviset funktiot muodostetaan kolmesta perusfunktiosta käyttäen. succ(n) = n + 1

1. Primitiivirekursiiviset funktiot muodostetaan kolmesta perusfunktiosta käyttäen. succ(n) = n + 1 Tik-79.148 Kevät 2001 Tietojenkäsittelyteorian perusteet Laskuharjoitus 11 Ratkaisut 1. Primitiivirekursiiviset funktiot muodostetaan kolmesta perusfunktiosta käyttäen kahta yhdistämissääntöä. Perusfunktioita

Lisätiedot

7 Vapaus. 7.1 Vapauden määritelmä

7 Vapaus. 7.1 Vapauden määritelmä 7 Vapaus Kuten edellisen luvun lopussa mainittiin, seuraavaksi pyritään ratkaisemaan, onko annetussa aliavaruuden virittäjäjoukossa tarpeettomia vektoreita Jos tällaisia ei ole, virittäjäjoukkoa kutsutaan

Lisätiedot

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään 5. Primitiivinen alkio 5.1. Täydennystä lukuteoriaan. Olkoon n Z, n 2. Palautettakoon mieleen, että kokonaislukujen jäännösluokkarenkaan kääntyvien alkioiden muodostama osajoukko Z n := {x Z n x on kääntyvä}

Lisätiedot

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS. TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. maaliskuuta 2012 Sisällys Sisällys Päätösongelmat Ongelma on päätösongelma (engl. decision problem), jos se on

Lisätiedot

Kierros 6: Dynaaminen ohjelmointi ja ahneet algoritmit

Kierros 6: Dynaaminen ohjelmointi ja ahneet algoritmit Kierros 6: Dynaaminen ohjelmointi ja ahneet algoritmit Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila

Lisätiedot

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 20. kesäkuuta 2013 Sisällys Päätösongelmat Ongelma on päätösongelma (engl. decision problem), jos se on muotoa Onko

Lisätiedot

Todistusmenetelmiä Miksi pitää todistaa?

Todistusmenetelmiä Miksi pitää todistaa? Todistusmenetelmiä Miksi pitää todistaa? LUKUTEORIA JA TO- DISTAMINEN, MAA11 Todistus on looginen päättelyketju, jossa oletuksista, määritelmistä, aksioomeista sekä aiemmin todistetuista tuloksista lähtien

Lisätiedot

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1) Approbatur 3, demo, ratkaisut Sovitaan, että 0 ei ole luonnollinen luku. Tällöin oletusta n 0 ei tarvitse toistaa alla olevissa ratkaisuissa. Se, pidetäänkö nollaa luonnollisena lukuna vai ei, vaihtelee

Lisätiedot

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti. Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen

Lisätiedot

Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan koulutusohjelma. Kaariväritysongelma. Kandidaatintyö. 29. huhtikuuta 2012. Sami J.

Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan koulutusohjelma. Kaariväritysongelma. Kandidaatintyö. 29. huhtikuuta 2012. Sami J. Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan koulutusohjelma Kaariväritysongelma Kandidaatintyö 29. huhtikuuta 2012 Sami J. Lehtinen Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan

Lisätiedot