Algoritmit 2. Luento 12 To Timo Männikkö

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

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

3.4 Peruutus (backtracking)

Kombinatorinen optimointi

Algoritmit 2. Luento 10 To Timo Männikkö

Geneettiset algoritmit

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

7.4 Sormenjälkitekniikka

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

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

Algoritmit 2. Luento 4 To Timo Männikkö

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

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

4 Tehokkuus ja algoritmien suunnittelu

GA & robot path planning. Janne Haapsaari AUTO Geneettiset algoritmit

Kuvioton metsäsuunnittelu Paikkatietomarkkinat, Helsinki Tero Heinonen

Algoritmit 2. Luento 13 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Ohjelmoinnin peruskurssi Y1

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

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

(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ä.

Tietotekniikan valintakoe

Mat Lineaarinen ohjelmointi

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

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

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Search space traversal using metaheuristics

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

Ohjelmoinnin perusteet Y Python

Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan?

Datatähti 2019 loppu

Harjoitus 6 ( )

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 2. Luento 14 To Timo Männikkö

Ohjelmoinnin perusteet Y Python

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

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

Algoritmit 1. Luento 3 Ti Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

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

7. Satunnaisalgoritmit (randomized algorithms)

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

Ohjelmoinnin perusteet Y Python

Katkonnanohjaus evoluutiolaskennan keinoin

13 Lyhimmät painotetut polut

Kokonaislukuoptimointi

Tehtävä 2: Loppuosataulukko

Malliratkaisut Demot

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

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.

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

811120P Diskreetit rakenteet

Transkriptio:

Algoritmit 2 Luento 12 To 3.5.2018 Timo Männikkö

Luento 12 Geneettiset algoritmit Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 2/35

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 12 To 3.5.2018 3/35

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 2018 Luento 12 To 3.5.2018 4/35

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 2018 Luento 12 To 3.5.2018 5/35

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 2018 Luento 12 To 3.5.2018 6/35

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 2018 Luento 12 To 3.5.2018 7/35

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 2018 Luento 12 To 3.5.2018 8/35

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 2018 Luento 12 To 3.5.2018 9/35

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 2018 Luento 12 To 3.5.2018 10/35

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 2018 Luento 12 To 3.5.2018 11/35

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 2018 Luento 12 To 3.5.2018 12/35

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 2018 Luento 12 To 3.5.2018 13/35

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 2018 Luento 12 To 3.5.2018 14/35

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 2018 Luento 12 To 3.5.2018 15/35

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 2018 Luento 12 To 3.5.2018 16/35

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 2018 Luento 12 To 3.5.2018 17/35

Merkkijonon sovitus Merkkijono taulukossa T, pituus n Yksittäinen merkki T [i], missä 0 i n 1 Alimerkkijono T [i..j], missä 0 i j n 1 Mallimerkkijono P, pituus m Tehtävä: Löytyykö P merkkijonosta T Toisin sanoen: Onko jollain i T [i.. i + m 1] = P[0.. m 1] Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 18/35

Merkkijonon sovitus Raa an voiman menetelmä: Etsitään P:tä merkki kerrallaan T :n ensimmäisestä merkistä alkaen Ellei löydy, etsitään T :n toisesta merkistä alkaen Jne. Pahimman tapauksen aikavaativuus Θ(nm) Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 19/35

Merkkijonon sovitus sovitus(t, p) { for (i = 0; i < n-m+1; i++) { j = 0; while ( j < m && t[i+j] == p[j]) j++; if (j == m) return i; } return -1; // ei löytynyt } Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 20/35

Merkkijonon sovitus Tehokkaampia menetelmiä: Esikäsitellään mallimerkkijono Kerätty tieto tallennetaan aputaulukkoon Aputaulukon tietoa käytetään hyväksi varsinaisessa sovitusvaiheessa Esimerkiksi: Horspoolin algoritmi Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 21/35

Horspoolin algoritmi Mallimerkkijono P asetetaan merkkijonon T alkuun Tarkastellaan P:tä lopusta alkaen Jos kaikki merkit täsmäävät, P löytyi Muuten P:tä siirretään eteenpäin (oikealle) Siirto voi olla useampia askeleita Jatketaan kunnes P löytyy tai kunnes tullaan T :n loppuun Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 22/35

Horspoolin algoritmi Mallimerkkijonon siirto: Siirto tehdään mahdollisimman pitkälle siten, että mahdollista sopivaa alimerkkijonoa ei kuitenkaan ohiteta Siirron suuruus päätetään siitä T :n merkistä, jota sovitettiin P:n viimeiseen merkkiin Useita eri tapauksia Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 23/35

Horspoolin algoritmi Tapaus: Mallimerkkijonossa ei ole lainkaan sovitettavaa merkkiä (tässä esimerkissä d): a b c a c b d x x x x x a c a c c Siirretään koko P:n pituuden verran: a b c a c b d x x x x x a c a c c Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 24/35

Horspoolin algoritmi Tapaus: Mallimerkkijonossa on sovitettava merkki, mutta ei viimeisen merkin kohdalla: a b c a c b d x x x x x a c d c c Siirretään vastaava oikeanpuoleisin merkki viimeisen merkin kohdalle (kaksi askelta): a b c a c b d x x x x x a c d c c Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 25/35

Horspoolin algoritmi Tapaus: Vain osa merkeistä täsmää, ja viimeistä merkkiä ei esiinny P:ssä muualla: a b c a c b d x x x x x a c a b d Siirretään koko P:n pituuden verran: a b c a c b d x x x x x a c a b d Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 26/35

Horspoolin algoritmi Tapaus: Vain osa merkeistä täsmää, ja viimeinen merkki esiintyy P:ssä muualla: a b c a c b d x x x x x a c d b d Oikeanpuoleisin merkki (P:n viimeistä merkkiä huomioimatta) viimeisen merkin kohdalle: a b c a c b d x x x x x a c d b d Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 27/35

Horspoolin algoritmi Siirtymät lasketaan etukäteen taulukkoon Taulukko indeksoidaan kaikilla mahdollisilla tekstissä ja mallissa esiintyvillä merkeillä Merkin c siirtymä: s(c) = mallimerkkijonon pituus m, jos c ei esiinny mallin (m 1):n ensimmäisen merkin joukossa s(c) = oikeanpuoleisimman merkin c etäisyys mallin viimeiseen merkkiin, jos c on (m 1):n ensimmäisen merkin joukossa Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 28/35

Esimerkki Mallimerkkijono: a c a b d Pituus m = 5, merkkien lukumäärä k = 4 Siirtymätaulukko: a b c d s 2 1 3 5 Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 29/35

Horspoolin algoritmi 1. Muodostetaan siirtymätaulukko 2. Mallimerkkijono tekstin alkua vasten 3. Toistetaan kunnes haettu merkkijono löytyy tai malli siirtyy tekstin lopun ohi: Alkaen mallin viimeisestä merkistä verrataan mallin ja tekstin merkkejä Jos eri merkit, haetaan siirtymätaulukosta vastaava siirtymä Siirtymän määrää tekstissä mallin viimeisen merkin kohdalla oleva merkki Siirretään mallia oikealle siirtymän verran Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 30/35

Esimerkki Merkkijono: a a b b a a b a b Mallimerkkijono: a b a b Siirtymätaulukko: a b s 1 2 Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 31/35

Esimerkki jatkuu a a b b a a b a b a b a b a a b b a a b a b a b a b a a b b a a b a b a b a b a a b b a a b a b a b a b Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 32/35

Horspoolin algoritmi Merkkijono t, pituus n Mallimerkkijono p, pituus m Merkistön merkkien lukumäärä k Siirtymätaulukko s, pituus k Siirtymätaulukon muodostaminen: for (i = 0; i < k; i++) s[i] = m; for (j = 0; j < m-1; j++) s[p[j]] = m - 1 - j; Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 33/35

Horspoolin algoritmi Mallimerkkijonon sovitus: i = m - 1; while (i < n) { j = 0; while (j < m && p[m-1-j] == t[i-j]) j = j + 1; if (j == m) return i-m+1; else i = i + s[t[i]]; } return -1; Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 34/35

Horspoolin algoritmi Pahimman tapauksen aikavaativuus Θ(nm) Satunnaisella tekstillä huomattavasti nopeampi kuin raa an voiman algoritmi Käytännössä lähes Θ(n) Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 35/35