Algoritmit 2. Luento 13 Ti Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Algoritmit 2. Luento 8 To Timo Männikkö

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:

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

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

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

6. Approksimointialgoritmit

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

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

Laskennan vaativuus ja NP-täydelliset ongelmat

Algoritmit 1. Luento 11 Ti Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Muita vaativuusluokkia

Algoritmit 2. Luento 5 Ti Timo Männikkö

3. Laskennan vaativuusteoriaa

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Algoritmit 2. Luento 9 Ti Timo Männikkö

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

1.4 Funktioiden kertaluokat

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Algoritmit 2. Demot Timo Männikkö

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

Algoritmit 2. Demot Timo Männikkö

6.1 Rekursiiviset palautukset

Algoritmit 2. Luento 10 To Timo Männikkö

3. Laskennan vaativuusteoriaa

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

10. Painotetut graafit

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

Algoritmit 2. Luento 11 Ti Timo Männikkö

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

10. Satunnaisalgoritmit

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit - syksy

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

SAT-ongelman rajoitetut muodot

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

Kombinatorinen optimointi

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 2. Luento 9 Ti Timo Männikkö

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

5 Kertaluokkamerkinnät

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

4. Joukkojen käsittely

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmianalyysin perusteet

Algoritmit 1. Demot Timo Männikkö

Verkon värittämistä hajautetuilla algoritmeilla

A TIETORAKENTEET JA ALGORITMIT

Pienin virittävä puu (minimum spanning tree)

Esimerkkejä vaativuusluokista

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Nopea kertolasku, Karatsuban algoritmi

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 1. Demot Timo Männikkö

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

13 Lyhimmät painotetut polut

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

58131 Tietorakenteet ja algoritmit (syksy 2015)

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Dominointianalyysi. Teppo Niinimäki. Helsinki Approksimointialgoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Transkriptio:

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 2018 Luento 13 Ti 8.5.2018 2/33

Kauppamatkustajan ongelma Tehtävä: Etsi lyhin reitti, joka käy täsmälleen kerran jokaisessa n:ssä kaupungissa Triviaaliratkaisu: Tutkitaan kaikki reitit Mutta: Mahdollisten reittien lukumäärä kertaluokkaa n! Käytännössä tehtävä voidaan ratkaista näin vain pienellä n Tietokoneiden tehon kasvattaminen ei auta, sillä lukumäärä kasvaa ylieksponentiaalisesti Kombinatorinen räjähdys Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 3/33

Laskennallinen vaativuus Algoritmi ratkaisee ongelman polynomisessa ajassa, jos pahimman tapauksen aikavaativuus on Θ(p(n)), missä p polynomi Ratkeava ongelma: Voidaan ratkaista polynomisessa ajassa Ratkeamaton ongelma: Ei voida ratkaista polynomisessa ajassa Kauppamatkustajan ongelmalle ei tunneta polynomisia algoritmeja Onko sellaisia olemassa? Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 4/33

Päätösongelmat Joukon S päätösongelma: Kuuluuko annettu syöttötieto x joukkoon S Vastaus joko kyllä tai ei (joko 1 tai 0) Yleisesti x ja S:n alkiot voidaan esittää bittijonoina Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 5/33

Päätösongelmat Esimerkkejä: Onko annettu binääriluku parillinen: S = {parillisten lukujen binääriesitykset} Onko annettu binääriluku alkuluku: S = {alkulukujen binääriesitykset} Sisältääkö annettu verkko Hamiltonin kehän (= verkon silmukka, joka kulkee täsmälleen kerran jokaisen solmun kautta): S = {Hamiltonin kehän sisältävien verkkojen binääriesitykset} Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 6/33

Aikavaativuus Aikavaativuusfunktiot: time A (x) = Algoritmin A syötteellä x suorittamien laskenta-askelten lukumäärä time A (n) = max{time A (x) : x = n} ( x syöttötiedon koko tai pituus) Polynominen algoritmi: Aikavaativuutta time A (n) rajoittaa jokin n:n polynomi Vaativuusluokka P: P = { päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla } Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 7/33

Epädeterministinen algoritmi Vaikka ongelman ratkaiseminen on vaikeaa, voi annetun ratkaisun tarkastaminen olla helppoa Esimerkkejä: Hamiltonin kehä -ongelma: Verkon solmuille arvataan oikea järjestys Helppo tarkastaa, että muodostuu Hamiltonin kehä Yhdistettyjen lukujen tunnistamisongelma: Luvun x tekijät y ja z arvataan Helppo tarkastaa, että x = yz Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 8/33

Epädeterministinen algoritmi Epädeterministinen arvausvaihe : Muodostetaan päätösongelman esiintymälle ratkaisuehdotus Deterministinen tarkastusvaihe : Tarkastetaan deterministisellä algoritmilla, onko ratkaisuehdotus esiintymän ratkaisu Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 9/33

Epädeterministinen algoritmi Epädeterministinen algoritmi ratkaisee päätösongelman Ongelman jokaiselle kyllä-esiintymälle se palauttaa vastauksen kyllä jollakin suorituksella Epädeterministinen algoritmi on epädeterministinen polynominen algoritmi, jos tarkastusvaihe toimii polynomiajassa Vaativuusluokka NP: NP = { päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla } Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 10/33

NP-luokan ongelmia Propositiologiikan toteutuvuusongelma (SAT): Onko proposiotiolause toteutuva, ts. onko olemassa sellaista totuusjakaumaa joka tekee lauseesta toden Kauppamatkustajan päätösongelma (TSP): Sisältääkö verkko Hamiltonin kehän, jonka pituus on enintään k Kauppamatkustajan ongelma: Etsi Hamiltonin kehä, jonka pituus on minimaalinen Tämä ei ole päätösongelma, vaan optimointiongelma Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 11/33

NP-luokan ongelmia Solmupeiteongelma (VC): Sisältääkö verkko enintään k:n solmun solmupeitteen (solmujoukko, joka peittää jokaisesta kaaresta ainakin toisen päätesolmun) Riippumaton joukko -ongelma (IS): Sisältääkö verkko vähintään k riippumatonta solmua (solmujoukko, jonka solmujen välillä ei ole yhtään kaarta) Klikkiongelma (CLIQUE): Sisältääkö verkko vähintään k:n solmun muodostaman klikin (solmujoukko, jonka kaikkien solmuparien välillä on kaari) Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 12/33

Vaativuusluokat Selvästi P NP On olemassa NP-ongelmia, joille ei tunneta polynomisia algoritmeja On olemassa myös ongelmia, jotka eivät kuulu joukkoon NP Onko P = NP? Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 13/33

Polynominen palautus Päätösongelma T 1 on polynomisesti muunnettavissa päätösongelmaksi T 2, jos on olemassa funktio f, joka muuntaa T 1 :n esiintymän T 2 :n esiintymäksi siten, että f kuvaa T 1 :n jokaisen kyllä-esiintymän T 2 :n kyllä-esiintymäksi ja jokaisen T 1 :n ei-esiintymän T 2 :n ei-esiintymäksi f on laskettavissa polynomisessa ajassa Tällöin merkitään T 1 p T 2 Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 14/33

Polynominen palautus T 1 p T 2 Palautusfunktio f muuntaa ongelman T 1 syötetapaukset x ongelman T 2 vastaaviksi tapauksiksi f (x) T 1 on yksinkertaisempi kuin T 2 Jos T 2 voidaan ratkaista polynomisessa ajassa, myös T 1 voidaan ratkaista polynomisessa ajassa Esimerkiksi: VC p IS p CLIQUE Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 15/33

NP-täydellisyys Määritelmä: Ongelma T on NP-täydellinen, jos T NP S p T kaikilla S NP Lemma: Ongelma T on NP-täydellinen, jos T NP S p T jollakin NP-täydellisellä S Kaikki edellä esitetyt ongelmat (SAT, TSP, VC, IS, CLIQUE) ovat NP-täydellisiä Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 16/33

NP-täydelliset ongelmat Luokan NP vaikeimmat ongelmat Jos jokin niistä pystytään ratkaisemaan polynomisessa ajassa, kaikki NP-luokan ongelmat pystytään ratkaisemaan polynomisessa ajassa Jos ongelman koko ei ole suuri, voidaan käydä läpi kaikki ratkaisuvaihtoehdot Muuten käytetään esim. heuristisia algoritmeja ja tyydytään tarpeeksi hyvään ratkaisuun Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 17/33

Kertaus ja tenttivinkit Algoritmin suunnittelu: Suunnittelumenetelmät Algoritmin esitys: Sanallisesti, pseudokoodina Algoritmin analysointi: Aikavaativuuden kertaluokka Tietorakenteiden valinta: Tietoalkiot ja operaatiot Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 18/33

Algoritmien analysointi Suoritusajan vaativuus: Lasketaan/arvioidaan algoritmin askelien/operaatioiden lukumääriä Määrätään suoritusajan riippuvuus syöttötiedon koosta Oleellista suoritusajan asymptoottinen kertaluokka Paras mahdollinen suoritusaika, pahin mahdollinen suoritusaika, keskimääräinen suoritusaika Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 19/33

Asymptoottinen kertaluokka Θ(g(n)) = funktiot, jotka asymptoottisesti yhtäsuuria kuin g(n) Peruskertaluokkia: Θ(1), Θ(log n), Θ(n), Θ(n log n), Θ(n 2 ), Θ(n 3 ) Yleinen polynominen: Θ(n k ) Eksponentiaalinen: Θ(2 n ) Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 20/33

Prioriteettijono ja keko Minimiprioriteettijono: Perusoperaatiot (lisää alkio, poista pienin) Muita operaatioita perusoperaatioiden avulla Kekorakenne: Perusoperaatiot (lisäys, poisto) Toteutus taulukolla Aikavaativuus Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 21/33

Järjestäminen eli lajittelu Kekolajittelu: Muodostetaan alkioista keko Vaihdetaan ensimmäinen ja viimeinen alkio Jätetään viimeinen alkio keon ulkopuolelle Korjataan yhtä alkiota pienemmän keon osittainen järjestys kuntoon Jatketaan kunnes keossa enää yksi alkio Kekolajittelun aikavaativuus: Keko-operaatioiden aikavaativuus Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 22/33

Hajautus Yhteentörmäysten käsittely: Ketjutus Avoin osoitteenmuodostus Avoin osoitteenmuodostus: Hajautusfunktiot Lineaarinen etsintä Neliöllinen etsintä Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 23/33

B-puu Astetta m oleva B-puu Perusoperaatiot (haku, lisäys, poisto) Lisäys: Poisto: Tarvittaessa solmujen halkaisu Tarvittaessa alkioiden siirto tai solmujen yhdistäminen Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 24/33

Muita tietorakenteita Puut: Nelipuu Trie-rakenteet Joukot: Lista, taulukko, bittivektori Esitys ja operaatiot Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 25/33

Suunnittelumenetelmät Raaka voima: Ongelman suoraviivainen ratkaiseminen Osittaminen: Ositus osatehtäviin, rekursiivinen ratkaiseminen, ratkaisun kokoaminen Taulukointi: Osatehtävien ratkaisujen taulukointi, taulukon täyttäminen vaiheittain Ahne menetelmä: Parhaimmalta näyttävän vaihtoehdon valinta Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 26/33

Ositus ja rekursio Aikavaativuuden rekursioyhtälö: { c 1, kun n = 1 T (n) = at (n/b) + cn α, kun n = b k, k 1 Osituksen tasapainoisuus Rekursioyhtälön muodostaminen Master-lauseen soveltaminen (Lausetta ei tarvitse muistaa ulkoa) Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 27/33

Ahneita algoritmeja Verkon lyhin virittävä puu: Kruskalin menetelmä Primin menetelmä Merkkitiedon tiivistäminen: Huffmanin koodi Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 28/33

Raa an voiman algoritmeja Verkon 3-väritysongelma: Väritysvaihtoehtojen läpikäynti Peruutus Pelipuiden läpikäynti: Voittoarvojen määrittäminen Tehostaminen α-β-karsinnalla Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 29/33

Heuristisia algoritmeja Kauppamatkustajan ongelma: Linin ja Kernighanin 2-vaihtoalgoritmi Geneettiset algoritmit Simuloitu jäähdytys Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 30/33

Vaativuusluokat P = päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla NP = päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla Epädeterministinen arvaus Deterministinen polynominen tarkastus Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 31/33

NP-täydellisyys Päätösongelman muuntaminen toiseksi päätösongelmaksi Ongelma T NP on NP-täydellinen, jos jokainen ongelma S NP voidaan muuntaa polynomisessa ajassa ongelmaksi T NP-täydelliset ongelmat: Luokan NP vaikeimmat ongelmat Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 32/33

Onnea tenttiin! Algoritmit 2 Kevät 2018 Luento 13 Ti 8.5.2018 33/33