Algoritmit 2. Luento 11 Ti Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 1. Luento 12 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Minimax ja alfa-beta-karsinta

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

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

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.

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö

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

JOHDATUS TEKOÄLYYN TEEMU ROOS

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Demot Timo Männikkö

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Kokonaislukuoptimointi

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 2. Luento 3 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

JOHDATUS TEKOÄLYYN TEEMU ROOS

Kysymyksiä koko kurssista?

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

Algoritmit 1. Luento 6 Ke Timo Männikkö

Miten käydä läpi puun alkiot (traversal)?

Ohjelmoinnin perusteet Y Python

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

811120P Diskreetit rakenteet

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

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 1. Luento 9 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

Tehtävä 2. Osoita, että seuraavat luvut ovat algebrallisia etsimällä jokin kokonaislukukertoiminen yhtälö jonka ne toteuttavat.

811120P Diskreetit rakenteet

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

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Harjoitus 6 ( )

JOHDATUS TEKOÄLYYN TEEMU ROOS

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Numeeriset menetelmät

3.4 Peruutus (backtracking)

Malliratkaisut Demot

x+3 = n(y 3) y +n = 3(x n). Kun ylemmästä yhtälöstä ratkaistaan x = n(y 3) 3 ja sijoitetaan alempaan, saadaan

Äärellisten mallien teoria

Harjoitus 3 ( )

Datatähti 2019 loppu

Peliteoria luento 1. May 25, Peliteoria luento 1

Numeeriset menetelmät

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

joissa on 0 4 oikeata vastausta. Laskimet eivät ole sallittuja.

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

Ohjelmoinnin peruskurssi Y1

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Transkriptio:

Algoritmit 2 Luento 11 Ti 25.4.2017 Timo Männikkö

Luento 11 Peruutusmenetelmä Osajoukon summa Pelipuut Pelipuun läpikäynti Rajoitehaku Kapsäkkiongelma Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 2/29

Algoritmien suunnittelu Raa an voiman käyttö: Tutkitaan kaikki mahdolliset vaihtoehdot Nopeuttaminen: Rajataan pois vaihtoehdot, joiden joukosta ei voi enää löytyä parempaa ratkaisua Peruutus: Lähdetään liikkeelle tyhjästä osaratkaisusta Täydennetään osaratkaisua Perutaan huonoiksi osoittautuneita valintoja Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 3/29

Peruutusmenetelmä Aloitetaan tyhjästä osittaisesta ratkaisusta Yritetään täydentää osittaista ratkaisua komponentti kerrallaan Jos täydentäminen voidaan tehdä rikkomatta tehtävän rajoituksia, se suoritetaan Jos saadaan täydellinen vastaus, lopetetaan Jos täydentämistä ei voida tehdä, peruutetaan viimeksi tehty täydennys ja yritetään toista komponenttia Jos komponentteja ei ole jäljellä, peruutetaan edelleen Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 4/29

Peruutusmenetelmä vastaus peruuttava(tapaus x) { if (x on täydellinen vastaus) return x; else { for (kaikilla täydennyksillä e[i]) { y = peruuttava(x + täydennys e[i]); if (y on täydellinen vastaus) return y; } return virhe; } } Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 5/29

Osajoukon summa Annettu n kpl positiivisia kokonaislukuja a i Joukko A = {a 1,..., a n } Annettu positiivinen kokonaisluku d Tehtävä: Etsi sellainen osajoukko S, jonka alkioiden summa = d (jos olemassa) Osajoukkoja 2 n kpl Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 6/29

Osajoukon summa Järjestetään alkiot kasvavaan järjestykseen: a 1 a 2 a n Vaiheessa i joko otetaan a i mukaan tai ei oteta Pidetään yllä valittujen alkioiden summaa Jos seuraavan alkion lisääminen kasvattaisi summan yli d:n, sallittua täydennystä tämänhetkiselle osajoukolle ei ole Muuten molemmat vaihtoehdot ovat mahdollisia Edetään peruutusalgoritmin mukaisesti Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 7/29

Osajoukon summa osasumma(a, d, i, summa, n) { if (i > n) palauta false; if (summa + a[i] +... + a[n] < d) palauta false; if (summa + a[i] > d) palauta false; if (summa + a[i] == d) { lisää alkio i ratkaisuun; palauta true; } if (osasumma(a, d, i+1, summa+a[i], n)) { lisää alkio i ratkaisuun; palauta true; } else palauta osasumma(a, d, i+1, summa, n); } Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 8/29

Osajoukon summa Algoritmin ensimmäinen kutsu: osasumma(a, d, 1, 0, n) Pahimmassa tapauksessa käydään läpi kaikki mahdolliset osajoukot Θ(2 n ) Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 9/29

Pelipuut Kaksi pelaajaa, x ja y Pelaajat tekevät vuorotellen siirtoja (valintoja) Pelipuu: Kukin solmu kuvaa yhtä pelitilannetta Juurisolmu kuvaa pelin alkutilannetta Siirto tarkoittaa siirtymistä solmusta johonkin sen lapsisolmuun Lehtisolmut kuvaavat pelin mahdollisia lopputilanteita Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 10/29

Esimerkki X X O X X O O X X O O X X O O X X O O X X O X O X X O X X O O O X O X X O O O X X O X X O O X O X X X O X X O X X O O O O X O X O X X O X O 3 X O X X O X O X X O O X X O X O X O X O X X O X O O O X X O X O X X O O X X O X O Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 11/29

Pelipuut Voittoarvo (payoff-arvo): Arvo, joka kuvaa solmun hyvyyttä pelaajan x kannalta Esimerkiksi payoff(t) 1, jos x:llä voittostrategia t:ssä 1, jos y:llä voittostrategia t:ssä = 0, jos kummallakaan ei ole voittostrategiaa t:ssä Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 12/29

Pelipuut Lopputilanteille voittoarvot on helppo laskea Muiden solmujen voittoarvot voidaan määrittää lapsisolmujen avulla (minmax-proseduuri): Jos vuorossa on x, on voittoarvo lapsisolmujen voittoarvojen maksimi Jos vuorossa on y, on voittoarvo lapsisolmujen voittoarvojen minimi Kaikkien solmujen voittoarvot voidaan määrittää käymällä läpi koko pelipuu lehtisolmuista juureen (jälkijärjestyksessä) Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 13/29

Esimerkki 2 1 3 4 3 4 2 2 3 MAX MIN 3 1 3 2 2 1 3 4 3 4 2 2 3 MAX MIN Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 14/29

Pelipuut Vähänkin mutkikkaammassa pelissä pelipuu on liian suuri, jotta kaikki voittoarvot voitaisiin määrittää lopputilanteista alkaen Käytännössä sovelletaan minmax-proseduuria k siirtoa eteenpäin ja arvioidaan pelitilanteiden hyvyyttä jollain heuristisella evaluointifunktiolla eval(t) Merkitään: x on MAX-pelaaja y on MIN-pelaaja Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 15/29

Pelipuun läpikäynti payoff(pelitilanne,siirtoraja,pelaaja) { if (siirtoraja == 0 tai pelitilanne lopputilanne) return eval(pelitilanne); else { if (pelaaja == MAX) arvo = -ääretön; else arvo = +ääretön; for (kaikilla pelitilanteen seuraajilla s) if (pelaaja == MAX) arvo = max(arvo,payoff(s,siirtoraja-1,min)); else arvo = min(arvo,payoff(s,siirtoraja-1,max)); return arvo; } } Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 16/29

Läpikäynnin tehostaminen α-β-karsinta: Kaikissa solmuissa ylläpidetään väliaikaista voittoarvoa MAX-pelaajalle väliaikainen voittoarvo on todellisen arvon alaraja MIN-pelaajalle väliaikainen voittoarvo on todellisen arvon yläraja Vertaamalla solmun väliaikaista voittoarvoa sen vanhemman väliaikaiseen voittoarvoon tiedetään, kannattaako jälkeläisten läpikäyntiä jatkaa Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 17/29

Läpikäynnin tehostaminen MAX-pelaajalle α = suurin tähän mennessä läpikäytyjen jälkeläisten voittoarvo MIN-pelaajalle β = pienin tähän mennessä läpikäytyjen jälkeläisten voittoarvo Solmu t on MAX-solmu: Jos α kasvaa suuremmaksi kuin sen vanhemman β, ei jälkeläisten läpikäyntiä kannata jatkaa Solmu t on MIN-solmu: Jos β menee pienemmäksi kuin sen vanhemman α, ei jälkeläisten läpikäyntiä kannata jatkaa Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 18/29

Pelipuun läpikäynti: α-β-karsinta payoff_ab(pelitilanne,siirtoraja,pelaaja,a,b) { if (siirtoraja == 0 tai pelitilanne lopputilanne) return eval(pelitilanne); else { if (pelaaja == MAX) arvo = -ääretön; else arvo = +ääretön; for (kaikilla pelitilanteen seuraajilla s) if (pelaaja == MAX) { arvo = max(arvo,payoff_ab(s,siirtoraja-1,min,a,b)); if (arvo => b) return arvo; else a = max(a,arvo); } else { arvo = min(arvo,payoff_ab(s,siirtoraja-1,max,a,b)); if (arvo <= a) return arvo; else b = min(b,arvo); } return arvo; } } Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 19/29

Esimerkki α 3 β 1 β 3 β 2 2 1 3 4 3 4 2 2 3 MAX MIN 2 1 1 2 1 3 1 MAX MIN Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 20/29

Esimerkki jatkuu 4 1 1 3 3 2 1 3 1 3 4 3 4 MAX MIN 1 1 3 3 2 2 1 3 3 3 4 3 4 2 MAX MIN Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 21/29

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 11 Ti 25.4.2017 22/29

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 2017 Luento 11 Ti 25.4.2017 23/29

Kapsäkkiongelma Järjestetään tavarat laskevaan 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 arvoa p:llä ja painoa w:llä Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 24/29

Kapsäkkiongelma Rajoitusheuristiikka: Lasketaan osittaisratkaisulle jäljellä olevan tilan täyttö parhaan jäljellä olevan tavaran hyötyarvo-painosuhteella Maksimihyöty eli yläraja u = p + (W w)(p i+1 /w i+1 ) Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 25/29

Kapsäkkiongelma Aluksi 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 ratkaisun u, ei ratkaisupuun kyseistä haaraa tarvitse tutkia Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 26/29

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,1,0] = osittaisratkaisu, jossa tavarat 1 ja 3 on valittu mukaan, tavaroita 2 ja 4 ei ole valittu Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 27/29

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 2017 Luento 11 Ti 25.4.2017 28/29

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 p=0, w=0, u=50 2 2 on 2 ei 3 huonompi kuin 9 4 5 p=36, w=4, u=60 3 on 3 ei p=36, w=4, u=54 6 4 on 4 ei 7 huonompi kuin 9 8 9 p=56, w=9, u=56 sallittu ratkaisu Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 29/29