Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö



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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

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

Algoritmit 1. Luento 4 Ke Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

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

Algoritmit 2. Luento 11 Ti Timo Männikkö

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

10. Painotetut graafit

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

13 Lyhimmät painotetut polut

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

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.

6. Approksimointialgoritmit

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

Algoritmit 1. Demot Timo Männikkö

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

Algoritmit 2. Luento 6 To 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. Luento 12 To Timo Männikkö

Tietorakenteet ja algoritmit - syksy

4. Algoritmien tehokkuus

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

Algoritmit 1. Demot Timo Männikkö

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

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

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

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

10. Painotetut graafit

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Tietorakenteet ja algoritmit

Algoritmit 2. Luento 4 To Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

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

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

Tiraka, yhteenveto tenttiinlukua varten

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Harjoitus 1 ( )

Johdatus graafiteoriaan

Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Kombinatorinen optimointi

A TIETORAKENTEET JA ALGORITMIT

5 Kertaluokkamerkinnät

Laskennan vaativuus ja NP-täydelliset ongelmat

A TIETORAKENTEET JA ALGORITMIT

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

Malliratkaisut Demot

6.4. Järjestyssuhteet

4. Joukkojen käsittely

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Datatähti 2019 loppu

Pienin virittävä puu (minimum spanning tree)

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

Transkriptio:

Algoritmit 1 Luento 14 Ke 25.2.2015 Timo Männikkö

Luento 14 Heuristiset menetelmät Heuristiikkoja kapsäkkiongelmalle Kauppamatkustajan ongelma Lähimmän naapurin menetelmä Kertaus ja tenttivinkit Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 2/27

Heuristiset menetelmät Heuristiikka: Etsitään ratkaisua käyttäen arvauksia, intuitiivisia päätöksiä, nyrkkisääntöjä, maalaisjärkeä Jos tarkka ratkaiseminen on hidasta, tingitään ratkaisun optimaalisuudesta ja etsitään likimääräinen ratkaisu nopealla heuristiikalla Ahne menetelmä sopii usein heuristisen menetelmän perustaksi Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 3/27

Kapsäkkiongelma Valittavana n kpl erilaisia tavaroita Tavaralle i tunnetaan paino w i ja hyötyarvo p i (positiivisia kokonaislukuja) 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 1 Kevät 2015 Luento 14 Ke 25.2.2015 4/27

Heuristiikkoja kapsäkkiongelmalle Ahneeseen tyyliin painon mukaan: Pakataan painon mukaan nousevassa järjestyksessä niin kauan kuin mahtuu Mutta: Ei huomioi hyötyarvoja Ahneeseen tyyliin hyötyarvon mukaan: Pakataan hyötyarvon mukaan laskevassa järjestyksessä niin kauan kuin mahtuu Mutta: Ei huomioi painoja Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 5/27

Heuristiikkoja kapsäkkiongelmalle Otetaan huomioon sekä paino että hyötyarvo: 1. Lasketaan tavaroille suhteet r i = p i /w i 2. Järjestetään tavarat suhteiden r i mukaan laskevaan järjestykseen 3. Pakataan tavaroita tässä järjestyksessä niin kauan kun mahtuu Toteutettavissa aikavaativuudella O(n log n) Jos sallitaan tavaroiden määrälle kaikki arvot välillä 0 1 (jatkuva kapsäkkiongelma), algoritmi antaa optimaalisen ratkaisun Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 6/27

Kauppamatkustajan ongelma Kaupunkeja n kpl, kaupunkien väliset etäisyydet d tunnetaan Etsitään lyhin reitti, joka kulkee kaikkien kaupunkien kautta täsmälleen kerran Suuntaamaton, painotettu verkko G Tehtävänä määrätä G:ssä Hamiltonin kehä, jonka pituus minimaalinen Ongelma NP-täydellinen Tunnettujen ratkaisualgoritmien pahimman tapauksen aikavaativuus eksponentiaalinen Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 7/27

Kauppamatkustajan ongelma Lähimmän naapurin menetelmä: Yksinkertainen ahne, heuristinen menetelmä Valitaan jokin lähtökaupunki Edetään aina lähimpään vielä käymättömään kaupunkiin Jatketaan kunnes kaikissa kaupungeissa käyty Lopulta palataan lähtökaupunkiin Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 8/27

Lähimmän naapurin menetelmä 1. Tämänhetkinen kaupunki t = 1, käymättömät kaupungit K = {2, 3,..., n} 2. Toistetaan kunnes K = : Etsitään kaupunki i siten, että d(t, i) = min{d(t, j) j K} Lisätään kaari (t, i) reittiin Asetetaan t = i ja K = K \ {i} 3. Lisätään kaari (t, 1) reittiin ja lopetetaan Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 9/27

Lähimmän naapurin menetelmä Huom: Oletetaan, että askeleessa 2 kaari (t, i) aina löytyy Kaksi sisäkkäistä, n:stä riippuvaa silmukkaa Aikavaativuus O(n 2 ) Mutta voi joskus antaa erittäin huonon reitin Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 10/27

Kauppamatkustajan ongelma Toinen ahne heuristiikka: 1. Käsitellään tiet pituuden mukaan kasvavassa järjestyksessä 2. Lisätään tie reittiin, jos Sen kummastakin päätepisteestä alkaa enintään yksi aiemmin valittu tie Se ei muodosta silmukkaa aiemmin valittujen teiden kanssa (lukuun ottamatta viimeistä tietä) Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 11/27

Kauppamatkustajan ongelma Jos voimassa kolmioepäyhtälö d(x, y) d(x, z) + d(z, y) kaikilla x, y, z niin edellinen heuristiikka takaa reitin, jonka pituus on enintään kaksi kertaa optimaalisen reitin pituus (c 2c opt ) Paras tunnettu polynominen algoritmi, Christofidesin heuristiikka, takaa c 3 2 c opt Jos kolmioepäyhtälö ei ole voimassa ja P NP, niin mikään polynominen algoritmi ei voi taata, että c kc opt millään vakiolla k Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 12/27

Kertaus ja tenttivinkit Algoritmin suunnittelu: Suunnittelumenetelmät Algoritmin esitys: Sanallisesti, pseudokoodina Algoritmin analysointi: Aikavaativuuden kertaluokka Tietorakenteiden valinta: Tietoalkiot ja operaatiot Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 13/27

Algoritmien analysointi Suoritusajan vaativuus: Lasketaan/arvioidaan algoritmin askelien/operaatioiden lukumääriä Määrätään suoritusajan riippuvuus syöttötiedon koosta Oleellista suoritusajan asymptoottinen kertaluokka Paras mahdollinen suoritusaika, huonoin mahdollinen suoritusaika, keskimääräinen suoritusaika Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 14/27

Asymptoottinen kertaluokka O(g(n)) = funktiot, jotka asymptoottisesti pienempiä tai yhtäsuuria kuin g(n) Peruskertaluokkia: O(1), O(log n), O(n), O(n log n), O(n 2 ), O(n 3 ) Yleinen polynominen: O(n k ) Eksponentiaalinen: O(2 n ) Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 15/27

Pino ja jono Pino: Perusoperaatiot (push, pop) Toteutus taulukolla Jono: Perusoperaatiot (enqueue, dequeue) Toteutus taulukolla Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 16/27

Lista Järjestetty lista Perusoperaatiot (haku, lisäys, poisto) Peräkkäishaku vs. binäärihaku Toteutus dynaamisesti (linkitetty lista) Vaihtoehtoiset listarakenteet Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 17/27

Binääripuu Järjestys rakenteen perusteella, järjestys tietosisällön perusteella Järjestetty binääripuu Perusoperaatiot (haku, lisäys, poisto) Solmujen läpikäynti eri järjestyksissä Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 18/27

Graafit ja verkot Tietorakenteita: Kaaritaulukko Kaarien pituusmatriisi Lähtevien ja tulevien kaarien listat Verkon lyhimmät polut, algoritmeja: Ford ja Fulkerson Floyd Dijkstra Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 19/27

Suunnittelumenetelmät Raaka voima: Ongelman suoraviivainen ratkaiseminen Osittaminen: Ositus osatehtäviin, rekursiivinen ratkaiseminen, ratkaisun kokoaminen Taulukointi: Osatehtävien ratkaisujen taulukointi, taulukon täyttäminen vaiheittain Ahne menetelmä: Parhaimmalta näyttävän vaihtoehdon valinta Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 20/27

Järjestäminen eli lajittelu Lajittelu: Taulukon, listan, tiedoston jne. järjestäminen suuruusjärjestykseen jonkin avainkentän (tai avainkenttien) mukaan Lajittelun stabiilisuus: Tietueet, joilla sama avainkentän arvo, säilyttävät alkuperäisen keskinäisen järjestyksensä Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 21/27

Lajittelumenetelmiä Raakaan voimaan perustuvia: Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu Osittamiseen perustuvia: Lomituslajittelu Pikalajittelu Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 22/27

Osittavia menetelmiä Lomituslajittelu (merge sort): Ositus kahteen osajoukkoon Osajoukkojen lajittelu rekursiivisesti Osajoukkojen yhdistäminen lomittamalla Pikalajittelu (quick sort): Jakotietueen valinta (eri tapoja) Ositus kahteen osajoukkoon jakotietueen molemmin puolin Osajoukkojen lajittelu rekursiivisesti (tai väliinsijoituslajittelulla, jos tarpeeksi pieni) Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 23/27

Osittavien menetelmien vaativuus Aikavaativuuden rekursioyhtälö (esimerkiksi): { c, kun n = 1 T (n) = at (n/b) + dn, kun n > 1 Osittamisen tasapainoisuudesta: Pahin tapaus (esimerkiksi) T (n) = T (n 1) + dn = = O(n 2 ) Paras tapaus (esimerkiksi) T (n) = 2T (n/2) + dn = = O(n log n) Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 24/27

Ahneita algoritmeja Verkon lyhimmät polut: Dijkstran menetelmä Verkon lyhin virittävä puu: Kruskalin menetelmä Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 25/27

Heuristisia algoritmeja Kapsäkkiongelma: Ahne menetelmä paino/hyötyarvo-suhteen mukaan Kauppamatkustajan ongelma: Lähimmän naapurin menetelmä Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 26/27

Onnea tenttiin! Algoritmit 1 Kevät 2015 Luento 14 Ke 25.2.2015 27/27