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

Samankaltaiset tiedostot
Algoritmi on periaatteellisella tasolla seuraava:

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

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

10. Painotetut graafit

Algoritmit 1. Luento 13 Ti Timo Männikkö

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

6. Approksimointialgoritmit

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Algoritmit 1. Luento 13 Ma Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

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

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

Johdatus graafiteoriaan

13 Lyhimmät painotetut polut

4.3. Matemaattinen induktio

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

isomeerejä yhteensä yhdeksän kappaletta.

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.

Algoritmit 2. Luento 11 Ti Timo Männikkö

Pienin virittävä puu (minimum spanning tree)

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

10. Painotetut graafit

Algoritmit 1. Luento 1 Ti Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

Ensimmäinen induktioperiaate

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

Ensimmäinen induktioperiaate

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

Avaruuden R n aliavaruus

1. Esitä rekursiivinen määritelmä lukujonolle

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

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

Kanta ja dimensio 1 / 23

Luonnollisen päättelyn luotettavuus

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

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

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

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

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

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

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

7.4 Sormenjälkitekniikka

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

3.4 Peruutus (backtracking)

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

Algoritmit 2. Luento 2 Ke Timo Männikkö

b) Olkoon G vähintään kaksi solmua sisältävä puu. Sallitaan verkon G olevan

Näytetään nyt relaatioon liittyvien ekvivalenssiluokkien olevan verkon G lohkojen särmäjoukkoja. Olkoon siis f verkon G jokin särmä.

Miten osoitetaan joukot samoiksi?

Diskreetin matematiikan perusteet Esimerkkiratkaisut 3 / vko 10

SAT-ongelman rajoitetut muodot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Algoritmit 1. Luento 10 Ke Timo Männikkö

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

PARITUS KAKSIJAKOISESSA

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Algoritmit 2. Luento 2 To Timo Männikkö

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

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

Algoritmit 1. Luento 8 Ke Timo Männikkö

Johdatus graafiteoriaan

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

Tehtävä 8 : 1. Tehtävä 8 : 2

saadaan kvanttorien järjestystä vaihtamalla ehto Tarkoittaako tämä ehto mitään järkevää ja jos, niin mitä?

HY / Avoin yliopisto Lineaarialgebra ja matriisilaskenta II, kesä 2015 Harjoitus 1 Ratkaisut palautettava viimeistään maanantaina klo

MS-A0402 Diskreetin matematiikan perusteet

Yhtenäisyydestä. Johdanto. Lähipisteavaruus. Tuomas Korppi

Kysymys: Voidaanko graafi piirtää tasoon niin, että sen viivat eivät risteä muualla kuin pisteiden kohdalla?

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

Vapaus. Määritelmä. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee:

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

Matematiikan tukikurssi, kurssikerta 2

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

2.3 Keskimääräisen tapauksen analyysi

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!

Algoritmit 2. Luento 13 Ti Timo Männikkö

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

Malliratkaisut Demot

Todista raja-arvon määritelmään perustuen seuraava lause: Jos lukujonolle a n pätee lima n = a ja lima n = b, niin a = b.

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Johdatus verkkoteoriaan 4. luento

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

Verkon värittämistä hajautetuilla algoritmeilla

Predikaattilogiikan malli-teoreettinen semantiikka

Puiden karakterisointi

3 Lukujonon raja-arvo

Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta.

Tenttiin valmentavia harjoituksia

Liittomatriisi. Liittomatriisi. Määritelmä 16 Olkoon A 2 M(n, n). Matriisin A liittomatriisi on cof A 2 M(n, n), missä. 1) i+j det A ij.

Transkriptio:

Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n. Joukko A voidaan nyt muuntaa joukoksi B (tai toisinpäin) suorittamalla n vaihtoa, joissa aina yksi joukon A alkio vaihdetaan joukon B alkioksi. Vaihto-ominaisuuden nojalla vaihdot on mahdollista valita niin, että myös kaikki välivaiheet ovat riippumattomia: Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Koska A 1 = A 1 < B, vaihto-ominaisuuden perusteella jollain y 1 B A 1 pätee A 1 { y 1 } I. Olkoon A 1 = A 1 { y 1 }. Yleisemmin vaiheessa i muodostetaan joukko A i asettamalla A i = A i 1 { x i } { y i } missä x i A B ja y i B A. Koska kaikki poistettavat alkiot x i ovat joukosta A B ja lisättävät alkiot y i joukosta B A, kerran lisättyä alkiota ei enää poisteta ja kääntäen. Siis A i sisältää i kappaletta joukon B A alkioita, n i kappaletta joukon A B alkioita, ja kaikki m n joukon A B alkiota. Erityisesti A n = B. 165

Jos A I ja A { x } I, alkio x on joukon A jatke. Joukko A on maksimaalinen jos A I mutta joukolla A ei ole jatkeita. Vaihto-ominaisuudesta seuraa suoraan Propositio Kaikissa maksimaalisissa joukoissa on sama määrä alkioita. Todistus Jos A, B I ja esim. A < B, niin vaihto-ominaisuus antaa joukolle A jatkeen, joten A ei ole maksimaalinen. Esimerkki Olkoon G = (V, E) yhtenäinen ja M G = (E, I). Matroidin M G maksimaalisia alkioita ovat ne T, joilla (V, T ) on virittävä puu. Tällöin siis T = V 1. Olkoot (V, T ) ja (V, U) kaksi virittävää puuta. Joukko T voidaan siis muuntaa joukoksi U suorittamalla jono seuraavanlaisia vaihtoja: 1. Poista jokin joukon T U kaari; syntyy kaksi erillistä puuta. 2. Lisää jokin joukon U T, joka taas kytkee nämä kaksi puuta yhdeksi. 166

Matroidi M = (S, I) on painotettu jos siihen liittyy positiivisarvoinen painofunktio w: S R +. Painofunktio ulotetaan ilmeisellä tavalla osajoukoille A S: w(a) = x A w(x). Optimaalisia ovat ne riippumattomat joukot, joiden paino on suurin mahdollinen. Painofunktion positiivisuuden takia optimaaliset joukot ovat aina maksimaalisia. Esimerkki Olkoon G = (V, E, l) yhtenäinen painotettu suuntaamaton verkko. Merkitään l 0 = max e l(e) + 1, ja asetetaan w(e) = l 0 l(e). Siis erityisesti w(e) 1 kaikilla e. Otetaan taas M G = (E, I). Mille tahansa A I saadaan w(a) = e A(l 0 l(e)) = A l 0 e A l(e). Maksimaalisia joukkoja ovat siis ne A I joilla A = V 1 eli joilla (V, A) on virittävä puu. Näistä painoltaan suurimpia ovat ne joilla kustannus e A l(e) on pienin, eli pienimmät virittävät puut. 167

Pienimmän virittävän puun etsimiseen on edellä esitetty ahne Kruskalin algoritmi. Tästä saadaan suorana yleistyksenä ahne algoritmi matroidin optimaalisen alkion etsimiseen: Greedy(S, I, w): A := järjestä S painon mukaan alenevasti: S = { x 1,..., x S } missä w(xi ) w(x i+1 ) for i := 1 to S do if A { x i } I then A := A { x i } end if end for return A Algoritmin aikavaativuus on ilmeisesti O( S log S + S f( S )), missä f( S ) on ehdon A { x i } I testaamiseen kuluva aika. Todistamme, että algoritmin palauttama A todella on matroidin (S, I) optimaalinen joukko. Olkoon A i muuttujan A arvo kun for-silmukkaa on iteroitu i kertaa. Siis A 0 = ja A S on algoritmin palauttama joukko. Suoraan nähdään, että A i I kaikilla i, ja A i A j kun i < j. 168

Lemma 1 Jos A i { z } I, niin A j { z } I kaikilla j > i. Todistus Selvästi A i { z } A j { z }. Siis jos olisi A j { z } I, perinnöllisyydestä seuraisi A i { z } I. Lemman 1 perusteella algoritmin ei enää tarvitse palata uudestaan tarkastamaan sellaisia x, jotka on kertaalleen sivuutettu. Seuraavan lemman avulla osoitetaan se perusinvariantti, että joukko A i on aina laajennettavissa optimaaliseksi. Lemmaa on siis tarkoitus soveltaa tapauksessa P = A i ja z = x i. Lemma 2 Olkoon P I sellainen, että P B jollain optimaalisella B. Olkoon z S P painoltaan suurin, jolla P { z } I. Nyt on olemassa optimaalinen B jolla P { z } B. Todistus Jos z B, valitaan B = B. Olkoon z B. 169

Muodostetaan nyt jono joukkoja P 1,..., P k missä P 1 = P { z }, P i = P + i ja P i I kaikilla i. Jonon pituus on k = B P. Kun on annettu P i I jolla P i = P + i < B, vaihto-ominaisuuden nojalla on olemassa y i B P i jolla P i { y i } I. Valitaan P i+1 = P { y i }. Lopputulos on siis P k = P { z } { y 2,..., y k } missä y i B P. Siis jollain y 1 B P pätee eli B = P { y 1, y 2,..., y k } P k = B { y 1 } { z }. Erityisesti P { y 1 } B I, joten perinnöllisyyden nojalla P { y 1 } I. Alkion z valinnasta seuraa w(y 1 ) w(z), joten w(p k ) = w(b) w(y 1 ) + w(z) w(b). Koska B on optimaalinen, myös P k on. Valitaan siis B = P k. 170

Lause Kutsu Greedy palauttaa jonkin optimaalisen osajoukon A. Todistus Tarkastellan tilannetta, jossa A i+1 = A i { x i }. Kaikki alkiot x j joilla w(x j ) > w(x i ) on jo käyty läpi ja 1. joko hylätty: A j { x j } I 2. tai otettu mukaan: x j A j+1. Jos x j hylättiin, Lemman 1 nojalla edelleen pätee A i { x j } I. Jos x j otettiin mukaan, edelleen x j A i. Siis x i on painoltaan suurin z S A i, jolla A i { z } I. Lemmasta 2 seuraa nyt induktiolla, että kaikilla i joukko A i on jonkin optimaalisen joukon B i osajoukko. Lemman 1 nojalla kun suoritus päättyy, A S on maksimaalinen, joten A k = B k. Siis palautettava arvo on A k = B k joka on optimaalinen. 171

Tarkastellaan sovelluksena yksinkertaista aikataulutusongelmaa. Ajatellaan, että yhdessä työpisteessä suoritetaan tietynlaisia työtehtäviä. Yhden tehtävän suorittaminen vie aina yhden aikayksikön. Kaikkiaan suoritettavana on n tehtävää. Tehtävään i liittyy määräika d i ja myöhästymissakko c i R +. Aikataulu π liittää jokaiseen tehtävään i suoritushetken π(i). Jos tehtävä i myöhästyy eli π(i) > d i, joudutaan maksamaan sakko c i > 0. Aikataulun π kustannus on siis C(π) = c i. π(i)>d i Tehtävänä on määrittää kustannukseltaan pienin aikataulu. Koska vain yksi tehtävä kerrallaan voidaan suorittaa, ja toisaalta koskaan ei ole syytä olla joutilaana, voidaan olettaa että joka ajanhetkellä valmistuu tasan yksi tehtävä, kunnes kaikki on suoritettu. Toisin sanoen rajoitutaan aikatauluihin jotka ovat bijektioita { 1,..., n } { 1,..., n }; tässä myös tehtävät on nimetty { 1,..., n }. Samoin voidaan olettaa, että kaikki määräajat d i ovat joukossa { 1,..., n }. 172

Aikataulu π on normaalimuodossa jos se täyttää seuraavat kaksi ehtoa: 1. Ajoissa olevat tehtävät ovat ennen myöhästyviä; ts. kaikilla i, j pätee jos π(i) d i ja π(j) > d j, niin π(i) < π(j) 2. Ajoissa olevat tehtävät suoritetaan määräajan mukaan kasvavassa järjestyksessä: kaikilla i, j pätee jos π(i) d i, π(j) d j ja d i < d j, niin π(i) < π(j) Olkoon (i, j) pari, joka rikkoo jompaa kumpaa normalisointiehtoa. Olkoon π saatu aikataulusta π vaihtamalla tehtävien i ja j ajat keskenään. Helposti nähdään, että C(π ) = C(π): 1. Jos i oli ajoissa ja j myöhässä, vaihdon tuloksena i tulee vielä aikaisemmaksi ja j vielä myöhäisemmäksi, joten maksuissa ei tule muutoksia. 2. Jos i oli kiireellisempi mutta myöhemmäksi sijoitettu, se siirtyy aiemmaksi ja on siis edelleen ajoissa. Vaikka j siirtyy myöhemmäksi, se ei kuitenkaan myöhästy, koska se saa i:n vanhan paikan, joka riitti i:lle ja riittää siis vähemmän kiireiselle j:llekin. 173

Tekemällä tarvittava määrä tällaisia vaihtoja saadaan Propositio 1 Mille tahansa aikataululle π on olemassa aikataulu π joka on normaalimuodossa ja jolle C(π ) = C(π). Haluamme palauttaa ongelman matroideja koskevaksi, joten haluamme bijektioiden π sijaan puhua joistain sopivista joukoista. Määritellään siis aikataululle π sen ajoissa valmistuvien tehtävien joukko A(π) = { i { 1,..., n } π(i) d i }. Jos aikataulua π ei muuten tunneta, mutta tiedetään kuitenkin A(π), voidaan helposti muodostaa sellainen normaalimuodossa oleva π, että A(π ) = A(π) ja erityisesti siis C(π ) = C(π). Olkoon S = { 1,..., n }, ja sanotaan että B S on riipumaton jos B A(π) jollain π. Siis tehtäväjoukko on riippumaton, jos jollain aikataululla ainakin kaikki tämän joukon tehtävät valmistuvat ajoissa. Osoitamme kohta, että pari (S, I), missä I on riippumattomien tehtäväjoukkojen joukko, todella on matroidi. 174

Matroidin (S, I) painofunktioksi määritellään w(i) = c i kaikilla i. (Huom. oletus c i > 0.) Siis w(a(π)) = c i = w 0 C(π) missä w 0 = i c i. i A(π) Halvin aikataulu saadaan nyt seuraavasti: 1. Etsi matroidin (S, I) optimaalinen alkio A Greedy-algoritmilla. 2. Nyt halvimman aikataulun π kustannus on C(π) = w 0 W (A). 3. Muodostetaan normaalimuotoinen π, jolla A(π ) = A ja siis C(π ) = C(π). 175

Propositio 2 Olkoon A S. Seuraavat ehdot ovat yhtäpitävät: 1. Joukko A on riippumaton. 2. Kaikilla 1 t n pätee N t (A) t missä N t (A) = { i A d i t }. 3. Jos joukon A tehtävät sijoitetaan ajanhetkiin 1,..., A määräajan mukaan nousevassa järjestyksessä, ne ovat kaikki ajoissa. Todistus Helposti nähdään (1) (2) (3) (1). Kohtaa (2) käyttäen voidaan ajassa O( A ) testata, onko A riippumaton. Greedy-algoritmin suoritusajaksi tulee siis O(n 2 ). Pitää vielä osoittaa, että (S, I) on matroidi, jolloin tiedämme että Greedy tuottaa oikean tuloksen. 176

Lause Edellä määritelty M = (S, I) on matroidi. Todistus Perinnöllisyys on ilmeinen. Olkoon A, B I ja A < B. Olkoon k suurin jolla N k (B) N k (A). Koska N n (B) = B > A = N n (A), on k n 1 ja siten N t (B) > N t (A) epätyhjällä välillä k + 1 t n. Erityisesti B sisältää ainakin yhden tehtävän i, jolle d i = k + 1 ja i A. Väitetään, että A { i } on riippumaton. Kun t k, saadaan proposition 2(2) nojalla Kun t > k, saadaan N t (A { i }) = N t (A) t. N t (A { i }) N t (B) t. Siis N t (A { i }) t kaikille t, joten A { i } on riippumaton. Lopputuloksena olemme siis saaneet kaikilla syötteillä oikein ja ajassa O(n 2 ) toimivan ahneen algoritmin aikatauluongelmalle. 177

Ahne algoritmi heuristiikkana Ahne algoritmi ei kaikissa ongelmissa tuota parasta tulosta, mutta usein kuitenkin jotain kohtuullista. Koska ahne algoritmi ovat tyypillisesti nopea, sellaista voidaan käyttää heuristiikkana ongelmassa, jolle ei tunneta tehokasta tarkkaa algoritmia. Esimerkki Kauppamatkustajan ongelma (Travelling Salesman Problem, TSP): määrättävä verkossa lyhin polku, joka käy tasan kerran joka solmussa ja palaa lähtöpisteeseensä Ongelma on NP-kova, eikä tehokasta tarkkaa ratkaisua siis ole näköpiirissä. Ahne heuristiikka: Käsitellään kaaret painon mukaan kasvavassa järjestyksessä. Käsiteltävä kaari lisätään reittiin, ellei se riko kumpaakaan seuraavista ehdoista: Mihinkään solmuun ei saa tulla yli kahta kaarta. Reitille ei saa tulla syklejä (paitsi yksi koko verkon käsittävä). EI EI 178