Algoritmit 2. Luento 12 Ke Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

3.4 Peruutus (backtracking)

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Kombinatorinen optimointi

Algoritmit 2. Luento 10 To Timo Männikkö

13 Lyhimmät painotetut polut

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 2. Luento 2 To Timo Männikkö

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 1. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

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

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

v 8 v 9 v 5 C v 3 v 4

Geneettiset algoritmit

Algoritmit 2. Luento 14 To Timo Männikkö

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

Algoritmit 2. Luento 5 Ti Timo Männikkö

10. Painotetut graafit

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

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

Johdatus verkkoteoriaan 4. luento

Johdatus graafiteoriaan

Mat Lineaarinen ohjelmointi

isomeerejä yhteensä yhdeksän kappaletta.

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

Algoritmit 1. Demot Timo Männikkö

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)

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

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

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

GA & robot path planning. Janne Haapsaari AUTO Geneettiset algoritmit

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Algoritmit 2. Demot Timo Männikkö

Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto:

j n j a b a c a d b c c d m j b a c a d a c b d c c j

Datatähti 2019 loppu

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Algoritmit 1. Luento 12 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 2 Ke Timo Männikkö

Malliratkaisut Demot

7. Satunnaisalgoritmit (randomized algorithms)

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Search space traversal using metaheuristics

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

AS Automaation signaalinkäsittelymenetelmät. Tehtävä 1. Käynnistä fuzzy-toolboxi matlabin komentoikkunasta käskyllä fuzzy.

Harjoitus 6 ( )

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Johdatus graafiteoriaan

7.4 Sormenjälkitekniikka

Algoritmit 2. Luento 4 Ke Timo Männikkö

6. Approksimointialgoritmit

10. Painotetut graafit

Algoritmit 1. Luento 5 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

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.

Algoritmit 2. Luento 8 Ke Timo Männikkö

811120P Diskreetit rakenteet

Algoritmit 1. Demot Timo Männikkö

Kuvioton metsäsuunnittelu Paikkatietomarkkinat, Helsinki Tero Heinonen

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Malliratkaisut Demot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Harjoitus 6 ( )

Transkriptio:

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 2 Kevät 2017 Luento 12 Ke 26.4.2017 2/33

Algoritmien suunnittelu Raa an voiman käyttö: Tutkitaan kaikki mahdolliset vaihtoehdot Nopeuttaminen: Rajataan pois vaihtoehdot, joiden joukosta ei voi enää löytyä parempaa ratkaisua Rajoitusheuristiikka: Säännöt, joiden avulla päätellään, miten rajaus tehdään Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 3/33

Rajoitehaku Käydään läpi kaikkien mahdollisten ratkaisujen muodostamaa ratkaisupuuta Jokaiselle uudelle osittaisratkaisulle lasketaan raja sille, miten hyviä ratkaisuja tätä osittaisratkaisua täydentämällä voidaan saavuttaa Jos aiemmin löydetty sallittu ratkaisu, joka on tätä rajaa parempi, tämän osittaisratkaisun täydennyksiä ei tarvitse tutkia Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 4/33

Kauppamatkustajan ongelma Suuntaamaton verkko G = (V, E) Solmuja (kaupunkeja) n kpl Solmujen väliset etäisyydet etäisyysmatriisissa d(i, j) Tehtävä: Etsi reitti, joka käy täsmälleen kerran jokaisessa solmussa ja jonka pituus on mahdollisimman pieni Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 5/33

Kauppamatkustajan ongelma Osittaisratkaisu: Jotkut tiet on valittu reittiin mukaan, joitain teitä on kielletty ottamasta mukaan Täydennetään osittaisratkaisua lisäämällä tai kieltämällä teitä yksi kerrallaan Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 6/33

Kauppamatkustajan ongelma Kaikille verkon reiteille on voimassa pituus = 1 2 1 2 (d(u, v) + d(v, w)) v V v V s.e. (u, v), (v, w) reitti min (d(u, v) + d(v, w)) u,w V s.e. u w (Summattavana on solmuun v liittyvien kahden lyhimmän tien pituuksien summa) Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 7/33

Kauppamatkustajan ongelma Rajoitusheuristiikka: Lasketaan e.o. alaraja kulloinkin tarkasteltavana olevalle osittaisratkaisulle, huomioiden tiet jotka on kielletty Jos osittaisratkaisun alaraja on suurempi (huonompi) kuin parhaan tähän mennessä löydetyn ratkaisun pituus, ei ratkaisupuun kyseistä haaraa tarvitse tutkia Seuraavaksi tutkittavaksi osittaisratkaisuksi kannattaa valita se, jolla alaraja on pienin Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 8/33

Algoritmien suunnittelu Paikallinen etsintä: Aloitetaan jostain tunnetusta (mahdollisesti satunnaisesta) ratkaisusta Parannetaan ratkaisua sopivilla paikallisilla muutoksilla Jatketaan kunnes ratkaisu ei enää parane Saadaan lokaali optimi Joskus saadaan myös globaali optimi Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 9/33

Lyhin virittävä puu Yhtenäinen, suuntaamaton verkko G Solmujen joukko N, teiden joukko E Jokaiseen tiehen (i, j) liittyy pituus l(i, j) Verkon virittävä puu on aliverkko, joka yhdistää verkon kaikki solmut ja jossa ei ole yhtään silmukkaa Virittävän puun pituus on siihen kuuluvien teiden pituuksien summa Tehtävä: Selvitä verkon lyhin virittävä puu Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 10/33

Lyhin virittävä puu Paikalliseen etsintään perustuva menetelmä: Valitaan jokin G:n virittävä puu T Toistetaan kunnes T :n pituus ei enää pienene: Lisätään T :hen jokin kaari sen ulkopuolelta, jolloin T :hen muodostuu sykli Poistetaan syklistä se kaari, jonka pituus on suurin, jolloin T on jälleen puu Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 11/33

Lyhin virittävä puu Voidaan osoittaa, että edellinen menetelmä johtaa globaaliin optimiin (todistus kuten Kruskalin menetelmälle, ks. Algoritmit 1) Lopetustestin vaativuus O(ne), missä e = kaarien lukumäärä Lisäksi pitäisi analysoida, montako muunnosta pahimmillaan tarvitaan ( Hitaampi kuin Kruskal) Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 12/33

Paikallinen etsintä Ratkaisun parantaminen naapurimenetelmällä: Etsitään nykyisen ratkaisun hyviä naapuriratkaisuja Mitä suurempi naapuriratkaisujen joukko, sitä parempia ratkaisuja saavutettavissa Mutta: Silloin naapuriratkaisujen joukon tutkimiseen kuluu enemmän aikaa Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 13/33

Paikallinen etsintä paikallinen etsintä { ratkaisu = jokin sallittu alkuratkaisu; while (parempi ratkaisu löytyy) { tutki nykyratkaisun naapuriratkaisut; if (löytyy parempi ratkaisu) ratkaisu = parempi ratkaisu; } } Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 14/33

Verkon reitit Suuntaamaton verkko Tunnetaan jokin verkon solmujen kautta kulkeva reitti Naapuriratkaisu: Jokin paikallisella muutoksella saatu sallittu reitti Tavoite: Löytää lyhyempi reitti Esimerkiksi kauppamatkustajan ongelma Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 15/33

Vaihtoalgoritmit Linin ja Kernighanin 2-vaihtoalgoritmi: Poistetaan kaksi kaarta, jotka eivät ole reitillä peräkkäin Lisätään kaksi uutta kaarta siten, että muodostuu sallittu reitti Jos muutos lyhentää reitin pituutta, se hyväksytään Mahdollisesti tutkitaan useampia vaihtoja ja hyväksytään niistä paras Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 16/33

Vaihtoalgoritmit 2-vaihto: Poistetaan (a, b) ja (c, d) Lisätään (a, c) ja (b, d) Jos a d b c d(a, c) + d(b, d) < d(a, b) + d(c, d) niin muutos lyhentää reitin pituutta Huom: Osa reitistä kulkee nyt päinvastaiseen suuntaan Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 17/33

Vaihtoalgoritmit Linin ja Kernighanin 3-vaihtoalgoritmi: Poistetaan ja lisätään vastaavasti kolme kaarta Yksi parhaita heuristiikkoja kauppamatkustajan ongelmalle Huom: Kaarien lisäys ei yksikäsitteinen Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 18/33

Vaihtoalgoritmit Yleinen k-vaihtoalgoritmi: Poistetaan ja lisätään k kaarta Kaarivaihtoehtojen lukumäärä Θ(n k ) Ei yleensä kannata käyttää, jos k > 3 Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 19/33

Geneettiset algoritmit Tarkastellaan ratkaisuehdokkaiden joukkoa populaationa Muodostetaan uusi populaatio: Kahden ratkaisun risteytyksillä Yksittäisen ratkaisun mutaatioilla Suositaan hyviä ratkaisuja, estetään huonojen ratkaisujen lisääntyminen Ratkaisu esitetään usein bittijonona (tai merkkijonona tai kokonaislukujonona) Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 20/33

Geneettiset algoritmit 1. Muodostetaan k:n ratkaisun populaatio R 2. Toistetaan niin kauan kuin saadaan parannettua ratkaisua riittävästi: Valitaan R:stä m kpl kahden alkion osajoukkoja Risteytetään osajoukkojen ratkaisuparit Tehdään uusille ratkaisuille mutaatio pienellä todennäköisyydellä Joukko S Valitaan R:stä ja S:stä uusi k:n ratkaisun populaatio Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 21/33

Esimerkki: Kauppamatkustajan ongelma Kauppamatkustajan ongelma, 9 solmua Esitetään reitit kokonaislukujonoina Kahden reitin risteytys: Valitaan satunnaisesti yhtenäinen pätkä reittiä, joka vaihtaa paikkaa vanhemmissa Muilla reitin osilla säilytetään järjestys ja paikka niin monelle solmulle kuin mahdollista Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 22/33

Esimerkki: Kauppamatkustajan ongelma Vaihdettavat osat pystyviivojen välissä: 1 2 3 4 5 6 7 8 9 4 5 2 1 8 7 6 9 3 Solmut 2, 3 ja 9 pysyvät paikoillaan:? 2 3 1 8 7 6? 9?? 2 4 5 6 7 9 3 Muut solmut muutetaan vastaavasti: 4 2 3 1 8 7 6 5 9 1 8 2 4 5 6 7 9 3 Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 23/33

Geneettiset algoritmit Yleensä risteytyksiä kannattaa suosia, valintatodennäköisyys 80 90 % Mutaatioiden määrä kannattaa pitää alhaisena, 0.5 1.0 % Hyviä tuloksia suhteellisen pienillä populaatiolla, 20 30 kpl Ratkaisut valitaan hyvyyden mukaan: Joko ratkaisujen hyvyyden todellinen arvo Tai vain niiden keskinäinen järjestys Eliittiluokka: Ratkaisut, jotka valitaan aina mukaan Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 24/33

Esimerkki: Kapsäkkiongelma Esitetään ratkaisu bittijonona: i:s bitti on joko 0 tai 1 sen mukaan, onko tavara i valittu mukaan kapsäkkiin Muodostetaan (satunnaisesti) k kpl alkuratkaisuja: Jos alkuratkaisu ei sallittu (yhteispaino ylittää arvon W ), vaihdetaan satunnaisesti jokin bitti 1:stä 0:ksi Tarvittaessa toistetaan Ratkaisun hyvyysarvona käytetään vastaavan kapsäkin arvoa Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 25/33

Esimerkki: Kapsäkkiongelma Risteytys: Valitaan risteytettävät ratkaisut todennäköisyydellä, joka on suoraan suhteessa ratkaisujen hyvyyteen Generoidaan satunnaisesti kokonaisluku m väliltä 0,..., n Vaihdetaan risteytettävien ratkaisujen m ensimmäistä bittiä keskenään Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 26/33

Esimerkki: Kapsäkkiongelma Mutaatio: Käydään läpi ratkaisun bitit ja pienellä todennäköisyydellä käännetään bitti Uuden populaation valinta: Uusia ratkaisuja p %, loput vanhoja ratkaisuja Lopetusehto: Lopetetaan, jos populaation ratkaisuista 90 %:lla sama hyvyys Tai jos populaatioita muodostettu jo maksimimäärä Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 27/33

Paikallinen etsintä Ratkaisun parantaminen naapurimenetelmällä: Etsitään nykyisen ratkaisun hyviä naapuriratkaisuja Mitä suurempi naapuriratkaisujen joukko, sitä parempia ratkaisuja saavutettavissa Tutkittavan joukon kokoa voidaan pienentää rajoitusheuristiikoilla Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 28/33

Paikallinen etsintä Juuttuminen lokaaliin minimiin: Naapuriratkaisut lähellä nykyistä ratkaisua Jos ollaan jo lokaalissa minimissä, ei päästä siitä pois, vaikka kauempana olisi parempi (mahdollisesti globaali) minimi Simuloitu jäähdytys: Sallitaan satunnaisesti myös siirtyminen huonompiin ratkaisuihin Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 29/33

Simuloitu jäähdytys Minimoidaan kustannusta c Nykyinen ratkaisu x, uusi ratkaisu x Ratkaisujen kustannusten erotus d = c(x ) c(x) Satunnaisuutta säätelee lämpötila T Siirtyminen huonompaan ratkaisuun hyväksytään todennäköisyydellä e d/t, jos d > 0 Jäähdytys: T :n arvoa alennetaan arvosta T alku kohti arvoa T loppu 0 Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 30/33

Esimerkki: Kauppamatkustajan ongelma Naapuriratkaisu 2-vaihdolla: Poistetaan kaksi kaarta Lisätään kaksi kaarta Uusi reitti Siirtyminen naapuriratkaisuun: Erotus d = reitin pituuden muutos Jos d 0, hyväksytään naapuriratkaisu Jos d > 0, generoidaan satunnaisluku väliltä [0, 1] ja hyväksytään naapuriratkaisu, jos e d/t satunnaisluku Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 31/33

Simuloitu jäähdytys T = Talku; x = satunnainen alkuratkaisu; while (T > Tloppu) { while (lämpötilaa T ei vielä tutkittu) { x = satunnainen x:n naapuriratkaisu; d = c(x ) - c(x); if (d <= 0) x = x ; else if (exp(-d/t) >= random(0,1)) x = x ; } T = alenna(t); } return x; Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 32/33

Simuloitu jäähdytys Algoritmin yksityiskohdat tehtäväkohtaisia Tietyin edellytyksin voidaan osoittaa: Jos lämpötilaa T lasketaan riittävän hitaasti, globaali optimi löytyy todennäköisyydellä, joka lähestyy ykköstä Käytännössä voi antaa hyviä tuloksia myös nopeammalla jäähdytyksellä Algoritmit 2 Kevät 2017 Luento 12 Ke 26.4.2017 33/33