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 2 Kevät 2019 Luento 14 To 2.5.2019 2/36
Kauppamatkustajan ongelma Tehtävä: Etsi lyhin reitti, joka käy täsmälleen kerran jokaisessa n:ssä kaupungissa Triviaaliratkaisu: Tutkitaan kaikki reitit Mutta: Jos jokaisen kaupunkiparin välillä on tie, mahdollisia reittejä on (n 1)! kappaletta Käytännössä tehtävä voidaan ratkaista näin vain pienellä n Tietokoneiden tehon kasvattaminen ei auta, sillä reittien lukumäärä kasvaa ylieksponentiaalisesti Kombinatorinen räjähdys Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 3/36
Laskennallinen vaativuus Algoritmi ratkaisee ongelman polynomisessa ajassa, jos pahimman tapauksen aikavaativuus on Θ(p(n)), missä p(n) on polynomi Ratkeava ongelma: Voidaan ratkaista polynomisessa ajassa Ratkeamaton (tai huonosti ratkeava) ongelma: Ei voida ratkaista polynomisessa ajassa Kauppamatkustajan ongelmalle ei tunneta polynomisia algoritmeja Onko sellaisia olemassa? Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 4/36
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: x {0, 1} ja S {0, 1} Indikaattorifunktio 1 S : {0, 1} {0, 1} { 1, kun x S 1 S (x) = 0, kun x / S Lasketaan funktion 1 S arvo annetulla x Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 5/36
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 (= silmukka, joka kulkee täsmälleen kerran jokaisen solmun kautta): S = {Hamiltonin kehän sisältävien verkkojen binääriesitykset} Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 6/36
Aikavaativuus Aikavaativuusfunktiot: time A (x) = Algoritmin A syötteellä x suorittamien laskenta-askelien lukumäärä time A (n) = max{time A (x) x = n} ( x syötteen koko tai pituus) Polynominen algoritmi: Aikavaativuusfunktiota time A (n) rajoittaa jokin n:n polynomi Vaativuusluokka P: P = { päätösongelmat, jotka voidaan ratkaista polynomisella algoritmilla } Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 7/36
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, muodostuuko Hamiltonin kehä Yhdistettyjen lukujen tunnistamisongelma: Luvun x tekijät y ja z arvataan Helppo tarkastaa, onko x = yz Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 8/36
Epädeterministinen algoritmi Epädeterministinen arvausvaihe : Muodostetaan päätösongelman esiintymälle ratkaisuehdokas Deterministinen tarkastusvaihe : Tarkastetaan deterministisellä algoritmilla, onko ratkaisuehdokas esiintymän ratkaisu Deterministinen = Algoritmin askeleet määräävät jokaisessa tilanteessa suoritettavat toiminnot yksikäsitteisesti Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 9/36
Epädeterministinen algoritmi Epädeterministinen algoritmi ratkaisee päätösongelman, jos se palauttaa ongelman jokaiselle kyllä-esiintymälle vastauksen kyllä jollain algoritmin suorituksella Epädeterministinen algoritmi on epädeterministinen polynominen algoritmi, jos tarkastusvaihe toimii polynomisessa ajassa Vaativuusluokka NP: NP = { päätösongelmat, jotka voidaan ratkaista epädeterministisellä polynomisella algoritmilla } Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 10/36
Vaativuusluokat Selvästi P NP Polynominen ratkaisualgoritmi kelpaa tarkastusvaiheen deterministiseksi algoritmiksi 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 2019 Luento 14 To 2.5.2019 11/36
NP-luokan ongelmia Propositiologiikan toteutuvuusongelma (SAT): Onko propositiolause 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 korkeintaan k Kauppamatkustajan ongelma: Etsi Hamiltonin kehä, jonka pituus on minimaalinen Tämä ei ole päätösongelma, vaan optimointiongelma Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 12/36
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 2019 Luento 14 To 2.5.2019 13/36
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ät T 2 :n esiintymiksi 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 2019 Luento 14 To 2.5.2019 14/36
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 T 2 on ainakin yhtä vaikea kuin T 1 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 2019 Luento 14 To 2.5.2019 15/36
NP-täydellisyys Määritelmä: Ongelma T on NP-täydellinen, jos T NP S p T kaikilla S NP Ongelma T on NP-luokan ongelma Jokainen NP-luokan ongelma voidaan palauttaa polynomisesti ongelmaksi T Osoittaminen NP-täydelliseksi suoraan määritelmästä hankalaa: Polynominen palautus pitäisi osoittaa kaikille NP-luokan ongelmille Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 16/36
NP-täydellisyys Lemma: Ongelma T on NP-täydellinen, jos T NP S p T jollain NP-täydellisellä S Todistus: Olkoon S p T jollain NP-täydellisellä S Määritelmän mukaan S p S kaikilla S NP S p T kaikilla S NP T on NP-täydellinen Osoittaminen NP-täydelliseksi lemman avulla: Etsitään jokin S, joka on jo todistettu NP-täydelliseksi, ja osoitetaan että S p T Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 17/36
NP-täydelliset ongelmat Kaikki edellä mainitut NP-luokan ongelmat (SAT, TSP, VC, IS, CLIQUE) ovat NP-täydellisiä Yleisesti NP-täydelliset ongelmat ovat luokan NP vaikeimmat ongelmat Jos jokin niistä pystyttäisiin ratkaisemaan polynomisessa ajassa, kaikki NP-luokan ongelmat pystyttäisiin ratkaisemaan polynomisessa ajassa Toistaiseksi NP-täydellisille ongelmille ei ole löydetty polynomisia algoritmeja, mutta ei ole myöskään osoitettu, että sellaisia ei voisi olla olemassa Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 18/36
NP-täydelliset ongelmat NP-kovat ongelmat: Voimassa NP-täydellisyyden määritelmän ehto S p T kaikilla S NP Ainakin yhtä vaikeita kuin NP-luokan vaikeimmat ongelmat, mutta eivät välttämättä NP-luokan ongelmia Useimmat NP-täydelliset päätösongelmat voidaan muotoilla vastaavanlaisiksi optimointiongelmiksi Yleensä ainakin yhtä vaikeita kuin vastaavat päätösongelmat, joten myös ne luokitellaan NP-koviksi, vaikka eivät olekaan päätösongelmia Esimerkiksi kauppamatkustajan päätösongelma TSP ja vastaava kauppamatkustajan ongelma Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 19/36
NP-täydelliset ongelmat NP-täydellisten tai NP-kovien ongelmien ratkaiseminen: Jos ongelman koko ei ole suuri, voidaan käydä läpi kaikki ratkaisuvaihtoehdot Käytetään samalla peruutusmenetelmän tai rajoitehakumenetelmän tyyppistä vaihtoehtojen karsintaa Muuten käytetään esimerkiksi polynomisessa ajassa toimivia heuristisia algoritmeja ja tyydytään vain tarpeeksi hyvään ratkaisuun Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 20/36
Kertaus ja tenttivinkit Algoritmin suunnittelu: Suunnittelumenetelmät Algoritmin esitys: Sanallisesti, pseudokoodina Algoritmin analysointi: Aikavaativuuden kertaluokka Tietorakenteiden valinta: Tietoalkiot ja operaatiot Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 21/36
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 2019 Luento 14 To 2.5.2019 22/36
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 2019 Luento 14 To 2.5.2019 23/36
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 2019 Luento 14 To 2.5.2019 24/36
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 2019 Luento 14 To 2.5.2019 25/36
Hajautus Yhteentörmäysten käsittely: Ketjutus Avoin osoitteenmuodostus Avoin osoitteenmuodostus: Hajautusfunktiot Lineaarinen etsintä Neliöllinen etsintä Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 26/36
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 2019 Luento 14 To 2.5.2019 27/36
Muita tietorakenteita Puut: Nelipuu Trie-rakenteet Joukot: Lista, taulukko, bittivektori Esitys ja operaatiot Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 28/36
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 2019 Luento 14 To 2.5.2019 29/36
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 2019 Luento 14 To 2.5.2019 30/36
Ahneita algoritmeja Verkon lyhin virittävä puu: Kruskalin menetelmä Primin menetelmä Merkkitiedon tiivistäminen: Huffmanin koodi Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 31/36
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 2019 Luento 14 To 2.5.2019 32/36
Heuristisia algoritmeja Kauppamatkustajan ongelma: Linin ja Kernighanin 2-vaihtoalgoritmi Geneettiset algoritmit Simuloitu jäähdytys Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 33/36
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 2019 Luento 14 To 2.5.2019 34/36
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 2019 Luento 14 To 2.5.2019 35/36
Onnea tenttiin! Algoritmit 2 Kevät 2019 Luento 14 To 2.5.2019 36/36