Algoritmit 2. Luento 11 Ti Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

3.4 Peruutus (backtracking)

13 Lyhimmät painotetut polut

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

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

v 8 v 9 v 5 C v 3 v 4

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Johdatus graafiteoriaan

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

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

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

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

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

10. Painotetut graafit

Kombinatorinen optimointi

Algoritmit 1. Demot Timo Männikkö

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Johdatus verkkoteoriaan 4. luento

Harjoitus 6 ( )

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

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

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

Malliratkaisut Demot

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

isomeerejä yhteensä yhdeksän kappaletta.

Algoritmit 1. Luento 2 Ke Timo Männikkö

10. Painotetut graafit

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

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

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Malliratkaisut Demot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Johdatus graafiteoriaan

Algoritmit 2. Luento 1 Ti Timo Männikkö

Malliratkaisut Demot

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 2. Demot Timo Männikkö

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl.

Mat Lineaarinen ohjelmointi

Harjoitus 6 ( )

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

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

Tietorakenteet, laskuharjoitus 7, ratkaisuja

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku

Algoritmit 1. Luento 11 Ti Timo Männikkö

Pienin virittävä puu (minimum spanning tree)

Johdatus verkkoteoriaan luento Netspace

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

Mat Lineaarinen ohjelmointi

Harjoitus 1 ( )

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

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

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

Algoritmit 2. Luento 4 To Timo Männikkö

Lineaarinen optimointitehtävä

Datatähti 2019 loppu

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

Harjoitus 1 ( )

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Taulumenetelmä modaalilogiikalle K

Verkon värittämistä hajautetuilla algoritmeilla

Algoritmit 2. Luento 8 Ke Timo Männikkö

Transkriptio:

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 11 Ti 24.4.2018 2/26

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 2018 Luento 11 Ti 24.4.2018 3/26

Rajoitehaku Käydään läpi kaikkien mahdollisten (sekä sallittujen että ei-sallittujen) ratkaisujen ja osittaisratkaisujen muodostamaa ratkaisupuuta Jokaiselle uudelle osittaisratkaisulle lasketaan raja sille, miten hyviä ratkaisuja kyseistä osittaisratkaisua täydentämällä voidaan saavuttaa Jos aikaisemmin on löydetty sallittu ratkaisu, joka on tätä rajaa parempi, osittaisratkaisun täydennyksiä ei tarvitse tutkia Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 4/26

Kapsäkkiongelma Valittavana n kpl erilaisia tavaroita Tavaralle i tunnetaan hyötyarvo p i ja paino w i Tavaraa otetaan mukaan joko 0 tai 1 kpl Annettu kokonaispainoraja W Tehtävänä valita reppuun R tavarat siten, että niiden hyötyarvo on mahdollisimman suuri, mutta painoraja ei ylity max i R p i kun i R w i W Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 5/26

Kapsäkkiongelma Järjestetään tavarat vähenevään järjestykseen hyötyarvo-painosuhteen mukaan: p 1 /w 1 p 2 /w 2 p n /w n Osittaisratkaisu: Ensimmäisen i:n tavaran suhteen päätös on tehty Merkitään tämän osittaisratkaisun hyötyarvoa p:llä ja painoa w:llä Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 6/26

Kapsäkkiongelma Rajoitusheuristiikka: Lasketaan osittaisratkaisulle jäljellä olevan tilan täyttö parhaan jäljellä olevan tavaran hyötyarvo-painosuhteella Lasketaan maksimihyöty: u = p + (W w)(p i+1 /w i+1 ) Antaa ylärajan yhteenlasketulle hyötyarvolle, joka voidaan saavuttaa täydentämällä kyseistä osittaisratkaisua Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 7/26

Kapsäkkiongelma Aloitetaan tyhjällä osittaisratkaisulla, jolle p = 0 ja w = 0 Muodostetaan kaksi osittaisratkaisua, joista toisessa tavara 1 on mukana, toisessa ei Näille muodostetaan osittaisratkaisut, joista toisessa tavara 2 on mukana, toisessa ei Jne. Jos osittaisratkaisun u on pienempi (huonompi) kuin parhaan tähän mennessä löydetyn sallitun ratkaisun u, ei ratkaisupuun kyseistä haaraa tarvitse tutkia Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 8/26

Esimerkki n = 4, W = 10 1 2 3 4 p i 36 35 20 9 w i 4 7 5 3 Merkitään (esimerkiksi): [1,0,0,0] = osittaisratkaisu, jossa tavaran 1 osalta valinta tehty, muiden osalta valintaa ei tehty [1,0,1,0] = osittaisratkaisu, jossa tavaroiden 1, 2 ja 3 osalta valinta tehty, tavaran 4 osalta valintaa ei tehty Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 9/26

Esimerkki 1: [0,0,0,0] p =0 w =0 u =0 + (10 0)(36/4)=90 2: [1,0,0,0] p =36 w =4 u =36 + (10 4)(35/7)=66 3: [0,0,0,0] p =0 w =0 u =0 + (10 0)(35/7)=50 4: [1,1,0,0] p =71 w =11 ei sallittu 5: [1,0,0,0] p =36 w =4 u =36 + (10 4)(20/5)=60 6: [1,0,1,0] p =56 w =9 u =56 + (10 9)(9/3)=59 7: [1,0,0,0] p =36 w =4 u =36 + (10 4)(9/3)=54 8: [1,0,1,1] p =65 w =12 ei sallittu 9: [1,0,1,0] p =56 w =9 u =56 sallittu ratkaisu 3 ja 7 huonompia kuin 9 ei tarvitse tutkia Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 10/26

Esimerkki p=36, w=4, u=66 (p=71, w=11) ei sallittu p=56, w=9, u=59 (p=65, w=12) ei sallittu p=0, w=0, u=90 1 1 on 1 ei 2 p=0, w=0, u=50 3 huonompi kuin 9 2 on 2 ei 4 5 p=36, w=4, u=60 3 on 3 ei 6 7 p=36, w=4, u=54 4 on 4 ei huonompi kuin 9 8 9 p=56, w=9, u=56 sallittu ratkaisu Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 11/26

Kauppamatkustajan ongelma Suuntaamaton verkko G = (N, E), solmujen joukko N, teiden joukko E Etäisyysfunktio d kertoo solmujen väliset etäisyydet Tehtävä: Etsi reitti (silmukka), joka käy verkon jokaisessa solmussa täsmälleen kerran ja jonka pituus on mahdollisimman pieni Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 12/26

Kauppamatkustajan ongelma Rajoitehakumenetelmä Osittaisratkaisu: Jotkin tietyt tiet on valittu reittiin mukaan, joitain teitä on kielletty ottamasta mukaan Täydennetään osittaisratkaisua joko lisäämällä reittiin jokin tie tai kieltämällä siitä jokin tie Sopiva rajoitusheuristiikka? Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 13/26

Kauppamatkustajan ongelma Mille tahansa verkon täydelliselle reitille on voimassa pituus = 1 2 1 2 (d(u, v) + d(v, w)) v N v N s.e. (u, v), (v, w) reitti min (d(u, v) + d(v, w)) u,w N s.e. u w (Summattavana on solmuun v liittyvien kahden lyhimmän tien pituuksien summa) Algoritmit 2 Kevät 2018 Luento 11 Ti 24.4.2018 14/26

Kauppamatkustajan ongelma Rajoitusheuristiikka: Lasketaan alaraja kulloinkin tarkasteltavana olevalle osittaisratkaisulle, ottaen huomioon, mitkä tiet on valittu mukaan ja mitkä 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 2018 Luento 11 Ti 24.4.2018 15/26

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 2018 Luento 11 Ti 24.4.2018 16/26

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 2018 Luento 11 Ti 24.4.2018 17/26

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 2018 Luento 11 Ti 24.4.2018 18/26

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 2018 Luento 11 Ti 24.4.2018 19/26

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 2018 Luento 11 Ti 24.4.2018 20/26

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 2018 Luento 11 Ti 24.4.2018 21/26

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 2018 Luento 11 Ti 24.4.2018 22/26

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 2018 Luento 11 Ti 24.4.2018 23/26

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 2018 Luento 11 Ti 24.4.2018 24/26

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 2018 Luento 11 Ti 24.4.2018 25/26

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 2018 Luento 11 Ti 24.4.2018 26/26