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