3.4 Peruutus (backtracking)

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

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

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

Algoritmi on periaatteellisella tasolla seuraava:

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

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

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

6. Approksimointialgoritmit

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

Kombinatorinen optimointi

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

10. Painotetut graafit

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

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 1. Demot Timo Männikkö

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

Algoritmit 1. Luento 9 Ti Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

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

13 Lyhimmät painotetut polut

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

Search space traversal using metaheuristics

Algoritmit 2. Luento 11 Ti Timo Männikkö

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

Harjoitus 6 ( )

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Algoritmit 2. Luento 10 To Timo Männikkö

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Algoritmit 1. Luento 8 Ke Timo Männikkö

Pienin virittävä puu (minimum spanning tree)

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

Algoritmit 1. Luento 14 Ke Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Harjoitus 6 ( )

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

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

Mat Lineaarinen ohjelmointi

Markov-ketjut pitkällä aikavälillä

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Johdatus graafiteoriaan

7.4 Sormenjälkitekniikka

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

Kuvioton metsäsuunnittelu Paikkatietomarkkinat, Helsinki Tero Heinonen

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

isomeerejä yhteensä yhdeksän kappaletta.

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

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Malliratkaisut Demot

Algoritmit 2. Luento 7 Ti Timo Männikkö

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

Tehtävä 4 : 2. b a+1 (mod 3)

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

10. Painotetut graafit

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 1. Demot Timo Männikkö

Malliratkaisut Demot

7. Satunnaisalgoritmit (randomized algorithms)

Harjoitus 3 ( )

a) Sievennä lauseke 1+x , kun x 0jax 1. b) Aseta luvut 2, 5 suuruusjärjestykseen ja perustele vastauksesi. 3 3 ja

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 2 Ke 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.

Kimppu-suodatus-menetelmä

Stabilointi. Marja Hassinen. p.1/48

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

MS-A0004/A0006 Matriisilaskenta

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

Esimerkki: Tietoliikennekytkin

Algoritmit 2. Luento 9 Ti Timo Männikkö

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Relevanttien sivujen etsintä verkosta: satunnaiskulut verkossa Linkkikeskukset ja auktoriteetit (hubs and authorities) -algoritmi

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

Erilaisia Markov-ketjuja

Shorin algoritmin matematiikkaa Edvard Fagerholm

1.4 Funktioiden kertaluokat

Transkriptio:

3.4 Peruutus (backtracking) Tarkastellaan kahta esimerkkiongelmaa: Kahdeksan kuningattaren ongelma: sijoitettava 8 8 ruudun pelilaudalle 8 nappulaa siten, että millekään vaaka-, pysty- tai viistoriville ei tule kahta. Kauppamatkustajan ongelma (TSP). Yhteisiä piirteitä: Osaratkaisut: alle 8 nappulan lailliset sijoitukset; syklittömät polut jotka eivät käy kaikissa kaupungeissa Osaratkaisujen täydennökset: yhden nappulan lisääminen sallittuun ruutuun; polun jatkaminen yhdellä kaarella ilman että syntyy sykli Lopullisen ratkaisun hyvyys: 1 tai 0 sen mukaan onko ratkaisu laillinen; polun kustannus Kumpaankin ongelmaan voidaan etsiä ratkaisua ahneella heuristiikalla, mutta optimaalisuudesta ei ole takuuta. Peruuttaminen on systemaattinen tapa käydä koko ratkaisuavaruus läpi, jolloin paras ratkaisu varmasti löydetään. 179

Periaatealgoritmi: peruuttava(x: tapaus, y: osavastaus) if y on valmis ratkaisu then return y else for kaikille y:n täydennöksille a 1,..., a m do y := peruuttava(x, y a i ) if y on valmis ratkaisu then return y end for return epäonnistui end if Tässä on ajateltu tilannetta, jossa riittää vain löytää yksi laillinen ratkaisu. Optimointitehtävässä pitää tietysti laskea for-silmukassa kaikki mahdolliset ratkaisut y ja valita paras. Käytännössä osaratkaisut pitää jotenkin järjestää, ettei samaan osaongelmaan päädytä useita teitä (esim. { } a { a } b { a, b } ja { } b { b } a { a, b }). 180

Kauppamatkustajan ongelman tarkemmin: Esitetään osaratkaisu joukkona rajoituksia +(a, b) tarkoittaa kaari (a, b) on reitillä (a, b) tarkoittaa kaari (a, b) ei ole reitillä Osaratkaisu voidaan suoraan hylätä, jos sitä ei voida täydentää valmiiksi ratkaisuksi. Näin on ainakin jos osaratkaisu sisältää 1. syklin jonka pituus on alle n tai 2. valinnan (a, x) ainakin n 2 alkiolla x tai 3. valinna +(a, x) ainakin 3 alkiolla x. (Siis n on solmujen lukumäärä, ja (a, b) ja (b, a) esittävät samaa kaarta.) Merkitään solmuja kirjaimilla a, b, c,... ja käsitellään kaaret leksikografisessa järjestyksessä. Peruuttavan algoritmin etenemistä voidaan havainnollistaa etsintäpuulla: puu solmu solmun jälkeläiset lehti etsintäongelma osaratkaisu osaratkaisun täydennökset valmis ratkaisu 181

ei rajoituksia +(a, b) (a, b) +(a, b) +(a, b) +(a, c) (a, c) (a, b) (a, b) +(a, c) (a, c) +(a, b) +(a, b) +(a, b) +(a, c) (a, c) (a, c) (a, d) +(a, d) (a, d) (a, b) (a, b) +(a, c) +(a, c) +(a, d) (a, d) (a, b) (a, c) +(a, d) Etsintäpuun alkua kauppamatkustajan ongelmalle. Verkossa solmut a, b, c, d, e. 182

Etsintäpuun karsinta (branch-and-bound) Perusidea: jos osaratkaisulle y on aiemmin löydetty täydennös valmiiksi ratkaisuksi y jonka kustannus on c, niin ei enää tarvitse tutkia sellaisia osaratkaisuja y a i joista tiedetään, että niiden täydennöksillä on aina vähintään kustannus c. Rajoitusheuristiikka kauppamatkustajan ongelmaan: Reitin (v 1,..., v n ) kustannus on c = 1 n (d(v i 1, v i ) + d(v i, v i+1 )) 2 1 2 i=1 n i=1 (Merkitty v 0 = v n ja v n+1 = v 1.) min (d(u, v i) + d(v i, w)). u w Yleisemmin jos on annettu joukko rajoituksia (eli osaratkaisu), niin rajoitukset toteuttaville reiteille (osaratkaisun täydennöksille) saadaan alaraja laskemalla ylläoleva summa rajoitusten vallitessa. Esim. V = { a, b, c, d, e }, osaratkaisu { +(a, c), (a, b) }: c 1 2 (d(a, c) + min { d(a, d), d(a, e) } + min { d(x, b) + d(b, y) x y, x a, y a } + d(a, c) + min { d(b, c), d(c, d), d(c, e) } + min { d(x, d) + d(d, y) x y } + min { d(x, e) + d(e, y) x y }). 183

a 3 4 3 b 7 4 2 e 6 8 5 c 6 d Esimerkki kauppamatkustajan verkosta 184

ei rajoituksia c 17, 5 +(a, b) c 17, 5 (a, b) c 18, 5 +(a, b) +(a, c) (a, d) (a, e) +(a, b) (a, c) c 18 (a, b) (a, c) +(a, d) +(a, e) (a, b) +(a, c) c 18, 5 c 20, 5 c 21 +(a, b) (a, c) +(a, d) (a, e) c 18 +(a, b) (a, c) (a, d) c 23 (a, b) +(a, c) +(a, d) (a, e) c 18, 5 (a, b) +(a, c) (a, d) +(a, e) c 23 reitti abceda reitti abecda reitti acbeda reitti acebda c = 23 c = 21 c = 19 c = 23 Branch-and-bound-ratkaisu (yksinkertaistettu) 185

Kommentteja branch-and-bound-menetelmästä usein paras (tai ainoa) vaihtoehto jos todella halutaan ratkaista tarkasti NP-kovia optimointiongelmia vie runsaasti suoritusaikaa mahdollista hyödyntää rinnakkaislaskentaa heuristiikkana voidaan käsitellä ensin ne alipuut, joissa laskettu alaraja on pienin (toivottavasti löytyy hyvä lehti jolla päästään karsimaan) karsinnassa voidaan myös käyttää jollain muulla algoritmilla ennakkoon laskettua alarajaa (approksimointialgoritmi, satunnaisalgoritmi tms.) 186

3.5 Paikallinen etsintä Perusajatus: satunnaiseen alkuratkaisuun tehdään pieniä muutoksia, kunnes se ei enää parane. Esimerkki Pienin virittävä puu painotetulle verkolle (V, E, l) 1. Muodosta satunnaisesti jokin virittävä puu T. 2. Toista seuraavaa, kunnes joko löytyy puu T jonka kustannus on pienempi kuin puun T kustannus, tai kunnes kaikki kaaret e E T on kokeiltu: (a) Valitse e E T. (b) Aseta T := T { e }. Nyt T sisältää yhden syklin. (c) Poista T :sta kustannukseltaan suurin kaari. Nyt T on virittävä puu. 3. Jos löytyi kustannukseltaan pienempi T, aseta T := T ja palaa kohtaan 2. Muuten palauta T. Voidaan osoittaa, että tämä aina löytää pienimmän virittävän puun. Kruskalin algoritmi on kuitenkin tehokkaampi. (Tässä lopetustesti vie ajan O( V E ).) 187

Yleisemmin: on määritelty sallittujen ratkaisujen joukko (esim. virittävät puut), kustannusfunktio (esim. puun paino) ja joukko muunnosoperaatioita (esim. kaariparin vaihtaminen). Annetun sallitun ratkaisun S naapureita ovat ne sallitut ratkaisut S, jotka saadaan ratkaisusta S yhdellä muunnosoperaatiolla. Paikallinen etsintä etenee seuraavasti: 1. S := satunnainen ratkaisu 2. Jos kustannus ratkaisulla S on ainakin yhtä pieni kuin parhaalla sen naapurilla, palauta S. 3. Muuten aseta S := S missä S on jokin kustannukseltaan pienempi naapuri ja jatka kohdasta 2. 188

muunnosoperaatio löydetty ratkaisu alkuratkaisu kustannus lokaali optimi globaali optimi lokaali optimi globaali optimi löytyy jos alkuratkaisu tällä välillä ratkaisuavaruus Paikallinen etsintä: periaatepiirros. 189

Esimerkki TSP, muunnosoperaationa 2-vaihto (2-opting, Lin ja Kernighan): x y x y u v u v valitse reitiltä kaksi kaarta (x, y) ja (u, v) ja poista ne oletetaan että jäljelle jää polut x u ja y v lisää kaaret (x, v) ja (y, u) Tällä on yleistys 3-vaihto jne. Käytännössä 3-vaihto on parhaita TSP-algoritmeja. Se voi kuitenkin voi jäädä lokaaliin minimiin ja vie pahimmassa tapauksessa eksponentiaalisen ajan 190

Kommentteja paikallisesta etsinnästä: toiminta riippuu vahvasti naapurustorakenteen (eli muunnosoperaatioiden) valinnasta usein vaihtokauppa: monimutkaiset operaatiot hidastavat suoritusta mutta antavat parempia lopputuloksia herkkä alkuratkaisun valinnalle, voi jäädä lokaaliin minimiin voidaan kokeilla useilla alkuratkaisuilla (rinnakkaistuu helposti) kehittyneempiä versioita: tabu-etsintä, simuloitu jäähdytys 191

Tabuetsintä: paikallisessa etsinnässä osa naapurustosta on tabu eikä sinne saa mennä. 1. Valitse satunnainen alkuratkaisu S. Aseta tabu := { S } ja paras := S. 2. Olkoon N ratkaisun S naapurusto. Valitse S N tabu joka on kustannukseltaan pienin. 3. Jos kustannus(s ) < kustannus(paras), aseta paras := S. 4. Jos lopetusehto toteutuu, palauta S. Muuten aseta S := S, päivitä tabu ja jatka kohdasta 2. Asettamalla aina tabu = { S } ja ottamalla lopetusehdoksi kustannus(s ) kustannus(s) saadaan paikallinen etsintä. Mielenkiintoisempi mahdollisuus on pitää tabu-joukossa k viimeksi kokeiltua ratkaisua jollain k; estää toistoja. Toinen mahdollisuus on kieltää ratkaisun sellaisten osien muuttaminen, joita on äskettäin muutettu (juuri lisättyjä kaaria ei poisteta jne.). 192

Simuloitu jäähdytys (simulated annealing) Lisätään paikalliseen etsintään satunnaisuutta paikallisten minimien välttämiseksi. Lämpötilaparametri T säätelee, kuinka suurella todennäköisyydellä sallitaan siirtymä huonompaan ratkaisuun. (Vrt. termodynamiikka: ratkaisun kustannus tilan energia) Seuraavassa i ja j indeksoivat ratkaisuja, S i on ratkaisun i naapurien joukko ja c on kustannusfunktio, jota minimoidaan. Lämpötilamuuttuja on T, ja T loppu määrää lopetusehdon. Funktio jäähdytä säätelee iteraatioiden lukumäärää; palaamme pian sen yksityiskohtiin. Simuloitu jäähdytys: (i, T, L) := alkuarvot while T > T loppu do for k := 1 to L do valitse satunnainen j S i := c(j) c(i) if 0 then i := j elsif random([0, 1]) exp( /T ) then i := j end if end for (T, L) := jäähdytä(t ) end while return i 193

Lämpötila T alustetaan johonkin korkeaan arvoon ja sitä lasketaan pikku hiljaa, kunnes ollaan halutussa loppulämpötilassa. Aina jäähdytysaskelen jälkeen suoritetaan sisempää silmukkaa L kertaa, jotta systeemi ehtii stabiloitua. (Huom. L riippuu lämpötilasta.) Siirtyminen tilasta i kustannukseltaan suurempaan tilaan j sallitaan todennäköisyydellä, joka pienenee eksponentiaalisesti kun kustannusero kasvaa tai lämpötila T pienenee. Aluksi lämpötila on korkea ja algoritmi käyttäytyy hyvin satunnaisesti. Tämä antaa sille tilaisuuden vierailla laajassa osassa ratkaisuavaruutta ja löytää globaalisti hyviä alueita. Kun lämpötila pienenee, algoritmi muuttuu deterministisemmäksi ja jähmettyy kohti jotain lokaalia minimiä. Voidaan osoittaa, että riittävän hitaalla jäähdytyksellä algoritmi päätyy globaaliin minimiin todennäköisyydellä 1. Tarkastelemme ensin algoritmin toimintaa vakiolämpötilassa. 194

Oletamme jatkossa, että naapurustorakenne on symmetrinen eli j S i joss i S j. Naapurustorakenne on yhtenäinen jos sitä esittävä suuntaamaton verkko on, ts. mikä tahansa ratkaisu voidaan muuntaa miksi tahansa toiseksi ratkaisuksi soveltamalla jonoa muunto-operaatioita. Naapurustorakenne on tasa-asteinen jos S i = S j kaikilla i, j. Oletetaan, että c ei ole vakio; muuten ongelma on triviaali. Lause Olkoon P T (i, t) todennäköisyys, että ajanhetkellä t algoritmi tarkastelee ratkaisua i kun lämpötila on koko ajan T. Jos naapurusto on symmetrinen, yhtenäinen ja tasa-asteinen, niin lim t P T (i, t) = 1 Z t exp ( c(i) T missä Z T = j exp( c(j)/t ) on normituskerroin. Todistus Osoitetaan, että algoritmia kuvaavalla Markovin ketjulla on tasapainojakauma, joka saadaan ylläolevasta lausekkeesta. ) 195

Markovin ketjun yhtenäisyys seuraa suoraan oletuksista. Kun c ei ole vakio, ainakin joillain ratkaisuilla i siirtymällä i i on nollasta poikkeava todennäköisyys. Siis Markovin ketju on syklitön, ja sillä on tasapainojakauma. Olkoon P T (i) ratkaisun i todennäköisyys tasapainojakaumassa. Selvästi P T (i) = lim t P T (i, t). Merkitään Q(i) = 1 ( exp c(i) ). Z T T Pitää osoittaa, että Q on tasapainojakauma. Tunnetusti tähän riittää, että kaikilla i, j pätee Q(j)p ji = Q(i)p ij missä p ij on todennäköisyys siirtyä i j. Koska ehto on symmetrinen, riittää tarkastella tapausta c(i) c(j). Tällöin p ij = 1 k p ji = 1 ( ) k exp c(i) c(j) T missä k = S i = S j. Väite seuraa suoraan laskemalla. 196

Edellinen lause ei kerro algoritmin dynaamisesta käyttäytymisestä kun lämpötilaa muutetaan. Olkoon V kaikkien ratkaisujen joukko ja V kustannukseltaan minimaalisten ratkaisujen joukko. Olkoon l(i, j) lyhimmän polun pituus solmusta i solmuun j naapurustoverkossa. Merkitään ja max = max { c(i) c(j) j S i } L 0 = max i V min l(i, j). j V Lause (Geman ja Geman 1984) Olkoon naapurustorakenne symmetrinen, yhtenäinen ja tasa-asteinen. Jos lämpötilan lasku tapahtuu siten, että vaiheessa m lämpötila on T = τ m (L 0 + 1) max ln(m + 2) ja sisempää silmukkaa toistetaan aina L = L 0 kertaa, niin algoritmi konvergoi kohti jakaumaa P missä P (i) = { 1/ V jos i V 0 muuten. 197

Kommentteja simuloidusta jäähdytyksestä yleiskäyttöinen menetelmä, joka tyypillisesti antaa hyviä tuloksia mutta vaatii paljon laskentaa. naapurustorakenteen valinta on ilmeisen tärkeää jäähdytysaikataululla on usein suuri vaikutus teorian antamat jäähdytysaikataulut ovat pessimistisiä ja käytännössä liian hitaita käytännössä tyypillisesti τ m+1 = ατ m missä 0, 8 α 0, 99 198