Graateorian maksimivirtausalgoritmi

Samankaltaiset tiedostot
T : Max-flow / min-cut -ongelmat

PARITUS KAKSIJAKOISESSA

Harjoitus 3 ( )

Harjoitus 3 ( )

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

isomeerejä yhteensä yhdeksän kappaletta.

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

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

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

Johdatus verkkoteoriaan 4. luento

Malliratkaisut Demot

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

Johdatus graafiteoriaan

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

Johdatus graafiteoriaan

0 v i v j / E, M ij = 1 v i v j E.

Algoritmi on periaatteellisella tasolla seuraava:

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

v 8 v 9 v 5 C v 3 v 4

Diofantoksen yhtälön ratkaisut

Algoritmit 1. Luento 9 Ti Timo Männikkö

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

Lineaariset kongruenssiyhtälöryhmät

Suomen rautatieverkoston robustisuus

Algoritmit 2. Luento 13 Ti Timo Männikkö

Johdatus graafiteoriaan

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

Hamiltonin sykleistä graateoriassa

7.4. Eulerin graafit 1 / 22

Eulerin verkkojen karakterisointi

Datatähti 2019 loppu

Luentorunko Kevät Matti Peltola.

Latinalaiset neliöt ja taikaneliöt

10. Painotetut graafit

Algoritmit 1. Luento 8 Ke Timo Männikkö

Malliratkaisut Demot

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

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Mat Lineaarinen ohjelmointi

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

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

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa)

Puiden karakterisointi

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

6.4. Järjestyssuhteet

Esipuhe Tämä gradu on tehty Teknologian tutkimuskeskus VTT:llä tietoturvan tutkimustiimissä vuosien aikana. Opinnäytetyöni on osa Tekesin ja

Alkulukujen harmoninen sarja

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?

Tarkennamme geneeristä painamiskorotusalgoritmia

Derivaattaluvut ja Dini derivaatat

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

Matematiikan tukikurssi, kurssikerta 3

5.2 Eulerin kehät ja -polut

Johdatus verkkoteoriaan luento Netspace

Dihedraalinen ryhmä Pro gradu Elisa Sonntag Matemaattisten tieteiden laitos Oulun yliopisto 2013

Cantorin joukon suoristuvuus tasossa

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

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

Graafin virittävä puu 1 / 20

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

Diskreetit rakenteet

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

Polkuintegraali yleistyy helposti paloitain C 1 -poluille. Määritelmä Olkoot γ : [a, b] R m paloittain C 1 -polku välin [a, b] jaon

Antti Rasila. Kevät Matematiikan ja systeemianalyysin laitos Aalto-yliopisto. Antti Rasila (Aalto-yliopisto) MS-A0204 Kevät / 16

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.

Kenguru 2019 Student lukio

Verkkojen värittäminen

Koodausteoria, Kesä 2014

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

Luku 8. Aluekyselyt. 8.1 Summataulukko

13 Lyhimmät painotetut polut

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl.

Mat Lineaarinen ohjelmointi

10. Painotetut graafit

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Tehtävä 1. Arvioi mitkä seuraavista väitteistä pitävät paikkansa. Vihje: voit aloittaa kokeilemalla sopivia lukuarvoja.

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

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

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

Harjoitus 4 ( )

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

MS-A0402 Diskreetin matematiikan perusteet

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

, on säännöllinen 2-ulotteinen pinta. Määrää T x0 pisteessä x 0 = (0, 1, 1).

LUKUTEORIA johdantoa

Kokonaislukuoptimointi hissiryhmän ohjauksessa

Johdatus matemaattiseen päättelyyn

Kustannustehokkaat riskienhallintatoimenpiteet kuljetusverkostossa (Valmiin työn esittely)

Johdatus matemaattiseen päättelyyn

Algoritmit 2. Luento 6 Ke Timo Männikkö

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Algoritmit 1. Luento 13 Ma Timo Männikkö


Kokonaislukukapasiteetti. Max-Flow Min-Cut

3 Suorat ja tasot. 3.1 Suora. Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta.

Transkriptio:

Graateorian maksimivirtausalgoritmi LuK-tutkielma Visa Vallivaara 800283 Matemaattisten tieteiden laitos Oulun yliopisto Kevät 203

Sisältö Johdanto 2 Peruskäsitteitä 3 2 Graateoriaa 6 2. Suunnattu graa......................... 6 2.2 Virtausverkosto.......................... 6 3 Verkkoteoriaa 8 3. Jäännösverkosto.......................... 8 3.2 Lisäyspolku............................ 0 4 Maksimivirtaus Lähdeluettelo 4

Johdanto Graateoria tutkii graaen eli verkkojen ominaisuuksia. Graat ovat matemaattinen tapa kuvata eri asioiden suhteita. Niiden avulla voidaan kätevästi havainnollistaa ja ratkoa monia käytännön ongelmia, esimerkiksi aikataulujen tekeminen, tiedonsiirto internetissä tai optimaalisten kuljetusreittien valinta. Tässä tutkielmassa käydään läpi graateorian perusteita ja esitellään maksivirtausalgoritmi, jolla etsitään graasta mahdollisimman suuri määrä polkuja. Lisäksi esitellään ja todistetaan lauseita, jotka ovat tarpeellisia maksimivirtausalgoritmin kannalta. Ensimmäisessä luvussa määritellään itse graa ja sekä siihen liittyviä peruskäsitteitä. Toisessa luvussa esitellään suunnattu graa ja virtausverkosto, jotka ovat erikoistapauksia graafeista. Kolmannessa luvussa käsitellään virtausverkostossa kulkevaa virtausta sekä siihen liittyviä polkuja ja jäännösverkostoa. Viimeisessä luvussa esitään kuinka maksivirtausalgoritmi toimii ja ratkaistaan sillä tutkielman tärkein esimerkkiongelma. Eli kuinka saa kätevästi muodostettua yhdentoista hengen hallituksen neljäntoista halukkaan joukosta, josta kukin henkilö pystyy suorittamaan vain muutamaa hallitustehtävää. Tutkielmassa on käytetty pääasiassa teosta A First Course in Mathematical Modeling[]. 2

Peruskäsitteitä Kuva : Könisbergin seitsemän siltaa.[2] Historiallisesti graateorian katsotaan saaneen alkunsa sveitsiläisen Leonhard Eulerin ratkaisemasta Könisbergin siltaongelmasta vuodelta 736, joka näkyy kuvassa. Könisbergin asukkaat esittivät Eulerille seuraavanlaisen kysymyksen: Onko mahdollista tehdä kävelyretki niin, että ylittää tasan kerran jokaisen Könisbergin seitsemästä sillasta ja päätyy aloituspaikkaansa? Euler havaitsi, että tämän ongelman havainnollistamiseen ja ratkaisemiseen graa on erinomainen työkalu. Graa G koostuu kahdesta joukosta: solmujoukosta V (G) ja kaarijoukosta E(G). Jokainen kaarijoukon E(G) alkio muodostuu solmujoukon V (G) alkioparista. Esimerkiksi kuvassa V (G) = {A, B, C, D} ja E(G) = {a, b, c, d, e, f}. Kaari a voitaisiin merkitä myös solmujen avulla a = AB. Määritelmä.. Jos on olemassa kaari solmujen i ja j välissä, sanotaan että: solmut i ja j ovat viereiset. Esimerkiksi kuvassa solmut A ja B ovat viereiset. Määritelmä.2. Jos solmu i on kaaren ij päätepisteessä, sanotaan että: kaari ij on kytketty solmun i kanssa. Esimerkiksi kuvassa kaari a on kytketty solmun A kanssa. Määritelmä.3. Solmun i aste eli deg(i), on solmun i kytköksien määrä kaariin. Esimerkiksi kuvassa deg(a) = 5. Esimerkki.4. Eulerin siltaongelman yleistys: Milloin voi annetulle graalle muodostaa syklin joka kulkee tasan kerran jokaisen kaaren kautta? Ainakin graan on oltava yhtenäinen eli kaikkien solmujen tulee olla yhteydessä toisiinsa. Lisäksi jokaisen solmuun astutaan yhtä monesti kuin sieltä poistutaan, eli jokaisen solmun aste on oltava parillinen. Nämä ominaisuudet omaavaa graaa kutsutaankin Eulerin graaksi. Vastaus siltaongelmaan: Haluttua kävelyretkeä on mahdoton tehdä, koska kaikki siltojen muodostamat solmut ovat parittomia. 3

a b c d e f g h i j k l m n 2 3 4 5 6 7 8 9 0 Kuva 2: Hallitusesimerkistä muodostettu kaksijakoinen graa. Määritelmä.5. Graa G = (V, E) on kaksijakoinen, jos pistejoukolla V on sellainen ositus [X, Y ], että jokaisen kaaren ij E toinen päätepiste on joukon X ja toinen päätepiste joukon Y piste. Esimerkki.6. Muodostetaan Sigma-killan hallitus. Hallitus sisältää yksitoista numeroitua hallituspaikkaa: PJ (), VPJ (2), Sihteeri (3), Rahastonhoitaja (4), Tiedottaja (5), Excuvastaava (6), Isäntä (7), Emäntä (8), Matikan opintovastaava (9), Fysiikan opintovastaava (0) ja Liikuntavastaava (). Hallitukseen on tarjolla 4 ehdokasta, mutta kaikki eivät pysty hoitamaan kaikkia hallituspestejä. Kandidaatin perään on merkattu numeroilla mitä hallituspestiä hän pystyy tekemään. Anni(2, 8), Bernelle(, 5, 7), Camilla(2, 3), Daria(, 4, 5, 6, 7), Erkki(3, 8), Fanni(0, ), Gabriel(3, 8, ), Heli(2, 9), Ilpo(8, 9, 0), Johanna(, 5, 6, 7), Kari(8, 9), Leevi(3, 9, ), Miro(, 4, 6, 7) ja Niina(9, 0). Hallitukseen on siis 4 ehdokasta X = {a, b,..., n} ja paikkaa täytettävänä Y = {, 2,..., }. Solmuista V (G) = [X, Y ] voidaan muodostaa kaksijakoinen graa pistämällä X solmut vasemmalle ja Y solmut oikealla ja yhdistämällä ne kaarilla, jotka vastaavat kunkin ehdokkaan mahdollista hallituspaikkaa. 4

Määritelmä.7. Graalle G = (V, E), osajoukkoa M E(G) kutsutaan sovitukseksi, jos ei ole kahta osajoukon M alkiota, jotka ovat kytköksissä samaan solmuun. Maksimisovitus on suurin mahdollinen sovitus. Kaksijakoiselle graalle jaolla [X, Y ] ei voi olla sovitusta, joka on suurempi kuin X tai Y. Esimerkkitehtävään.6 liittyvästä graasta saadaan erilaisia sovituksia poistamalla kaaria siten, että jokaisesta pestistä lähtee korkeintaan yksi ja jokaiseen nimeen tulee korkeintaan yksi kaari. Nähdään myös että voidaan muodostaa täysi hallitus, jos ja vain jos siitä tehdylle graalle löytyy sovitus, jossa on kaarta eli hallituspaikkojen määrä. Tämä nähdään myös esimerkissä tehdystä kaksijakoisessa kuvassa 2. Maksimisovituksen sijaan voimme etsiä graan maksivirtauksen, joka on myös sen maksimisovitus. 5

2 Graateoriaa Suunnattu graa ja virtausverkosto ovat graaen erikoistapauksia. Suunnatuissa graafeissa jokaisella kaarella on jokin suunta ja virtausverkostossa myös kapasiteetti. Virtausverkostoissa voi solmujen välillä kulkea virtaus joka kertoo kuinka paljon kapasiteettia on käytetty. 2. Suunnattu graa Suunnatun graan G = (V, A) määrittää solmujoukko V (G) ja nuolijoukko A(G). Jokainen joukon A(G) alkio on määrätty pari joukon V (G) alkioista. Käytetään notaatiota (i, j) kuvaamaan nuolta solmusta i solmuun j. 2.2 Virtausverkosto Virtausverkosto G = (V, A) on suunnattu graa, jossa jokaisella nuolella (i, j) A on epänegatiivinen kapasiteetti c(i, j) 0. Jos nuoli (i, j) ei kuulu joukkoon A, on sen kapasiteetti c(i, j) = 0. Jos nuoli (i, j) kuuluu joukkoon A, niin nuoli (j, i) ei kuulu joukkoon A. Virtausverkosto alkaa lähtösolmusta s ja päättyy maalisolmuun t. Jokaiselle solmulle j V on olemassa polku {s j t} virtausverkostossa. Määritelmä 2.. Olkoon G = (V, A) sellainen virtausverkosto, jolla on kapasiteettifunktio c, sekä lähtösolmu s ja maalisolmu t. Virtaus joukossa G on reaalilukuarvoinen kuvaus f : V V R seuraavilla ominaisuuksilla: Kapasiteettirajoitus: i, j V, 0 f(i, j) c(i, j) Virtauksen säilyvyys: i V {s, t}, f(j, i) = j V j V f(i, j) Kutsutaan epänegatiivistä suuretta f(i, j) virtaukseksi solmusta i solmuun j. Virtauksen f arvo määritellään seuraavasti: f = j V f(s, j) j V f(j, s) 6

Nuolen kautta ei siis voi kulkea sen kapasiteettia isompaa virtausta. Solmuun tuleva virtaus on yhtäsuuri kuin siitä lähtevä virtaus, lukuunottamatta lähdettä s ja maalia t. Virtauksen arvo f on summa kaikesta lähteestä s lähtevästä virtauksesta miinus lähteeseen kulkeva virtaus, joka on yleensä nolla. Esimerkki 2.2. Oulun tehdas on lähde s ja Helsinki on maali t. Firma kuljettaa tuotteita virtausverkon kaupunkien kautta, mutta vain c(u, v) konttia per päivä voi mennä kaupungista u kaupunkiin v. Jokaisella kaarella on oma kapasiteetti c. Kyseinen virtausverkko kapasiteetteineen on esitetty kuvassa 3. Kokkola Tampere v 2 v 3 6 20 Oulu s 4 9 7 t Helsinki 3 v 2 Kuopio 4 v 4 Lahti Kuva 3: Esimerkki virtausverkosta G = (V, E) 4 Tehdasesimerkistä muodostettu virtaus kuvassa 4 on 9, joka ei välttämättä ole maksimivirtaus. Kokkola Tampere v 2/2 v 3 /6 5/20 Oulu s /4 4/9 7/7 t Helsinki 8/3 v 2 /4 Kuopio v 4 Lahti Kuva 4: Virtausverkon G = (V, E) eräs virtaus on f =9. Nuolille on merkattu siitä kulkeva virtaus sekä kapasitetti. 4/4 7

3 Verkkoteoriaa 3. Jäännösverkosto Kappaleessa 2.2 määriteltiin virtausverkosto G ja virtaus f. Jäännösverkosto G f = (V, A f ) koostuu virtausverkoston nuolista A(G), joilla on kapasiteettia jäljellä sekä jo käytettyjen nuolien vastanuolista, joilla voidaan purkaa virtauksia. Määritelmä 3.. Jäännöskapasiteetti: c(i, j) f(i, j), (i, j) A c f (i, j) = f(j, i), (j, i) A 0, muuten. Jäännöskapasiteetti määrittelee virtausverkoston nuolten kapasiteetin lisäksi myös vastanuolten kapasiteetin, joka on siis nuolista jo kulkeneen virtauksen arvoinen mutta vastakkaiseen suuntaan. Määritelmä 3.2. Jäännösverkoston nuolijoukko: A f (G) = {(i, j) A A : c f (i, j) > 0} Virtausverkostossa virtaus voi kulkea nuolia pitkin vain eteenpäin. Jäännösverkostossa voi virtaus myös peruuttaa eli kulkea taaksepäin nuolia pitkin käyttäen tähän vastanuolia, joiden kapasiteetti on nuolesta kulkeneen virtauksen arvoinen. Määritelmä 3.3. Jos f on virtaus verkossa G ja f virtaus vastaavassa jäännösverkostossa G f, määritetään kuvaus f f virtauksen f lisäämiseksi virtaukseen f, eli funktioksi V V R { (f f f(i, j) + f (i, j) f (j, i), (i, j) A )(i, j) = 0, muuten. Jos jäännösverkostossa perutetaan, eli kuljetaan pitkin vastanuolia, niin se laskee niiden virtauksen arvoa. 8

Lemma 3.4. Suure f f virtaus joukossa G arvolla f f = f + f. Osoitetaan, että f f noudattaa kapasiteettirajoitusta jokaiselle nuolelle joukossa A ja virtauksen säilyvyyttä jokaisessa solmussa (V {s, t}). Todistus. Kapasiteettirajoitus: Jos (i, j) A, niin c f (j, i) = f(i, j) ja f (j, i) c f (j, i) = f(i, j), arvioidaan lausetta alaspäin, (f f )(i, j) = f(i, j) + f (i, j) f (j, i) (määritelmä 3.3) f(i, j) + f (i, j) f(i, j) = f (i, j) 0. sekä ylöspäin, (koska f (j, i) f(i, j)) (f f )(i, j) = f(i, j) + f (i, j) f (j, i) (määritelmä 3.3) f(i, j) + f (i, j) f(i, j) f(i, j) + c f (i, j) (virtaukset ovat epänegatiivisia) (kapasiteettirajoitus) f(i, j) + c(i, j) f(i, j) (määritelmä 3.) = c(i, j) Virtauksen säilyvyys: Koska f ja f noudattavat virtauksen säilyvyyttä, saadaan että kaikille i V {s, t}, (f f )(i, j) = (f(i, j) + f (i, j) f (j, i)) j V j V = j V (f(i, j)) + j V (f (i, j)) j V (f (j, i)) = (f(j, i)) + (f (j, i)) (f (i, j)) j V j V j V = j V (f(j, i) + f (j, i) f (i, j)) = j V (f f )(j, i) 9

3.2 Lisäyspolku Lisäyspolku p on yksinkertainen polku lähteestä s maaliin t jäännösverkostossa G f. Jäännösverkoston määritelmän mukaan (3.), voi nuolen (i, j) virtausta polulla lisätä maksimissaan sen jäännöskapasiteetin c f (i, j) verran. Määritelmä 3.5. Lisäyspolun p kapasiteetti: c f (p) = min{c f (i, j) : (i, j) p} Lemma 3.6. Määritetään funktio f p : V V R seuraavasti { c f (p), (i, j) p f p (i, j) = 0, muuten. Siten funktio f p on virtaus joukossa G f arvolla f p = c f (p) > 0 Seuraus 3.7. Lemmoista 3.4 ja 3.6 saadaan: f f p = f + f p > f Jos jäännösverkostosta G f löytyy lisäyspolku p, sen lisäys kasvattaa aina virtausta f arvolla f p. Kun jäännösverkostosta ei löydy enää uusia polkuja lähteestä s maaliin t, on löydetty maksimivirtaus. Esimerkin 2.2 kuvan 4 eräästä virtauksesta muodostettu jäännösverkosto on nähtävissä kuvassa 5. Kuvasta nähdään, että virtauksen f =9 arvoa voidaan vielä kasvattaa. Jäännösverkostosta löytyy lisäyspolku p = {s v 2 v 3 t}, jolla on kapasiteetti c f (p) = 4. Solmusta v 2 solmuun v 3 kuljetaan vastanuolta pitkin, eli siinä puretaan alkuperäisiä virtauksia. Kokkola Tampere v 2 v 3 5 5 4 5 Oulu s 3 t Helsinki 5 7 8 5 7 v 2 3 v 4 4 Kuopio Lahti Kuva 5: Jäännösverkoston G f vastanuolet on merkitty katkoviivoilla. 0

4 Maksimivirtaus Jäännösverkoston ja lisäyspolun määrittelyn jälkeen voidaan vihdoin tutustua algoritmiin, jolla pystyy laskemaan virtausverkon maksimivirtauksen. Ford-Fulkerson(G, s, t) algoritmi[3]. for each arrow(i, j) A(G) 2. f(i, j) = 0 3. while there exist a path p from s to t in the residual network G f 4. c f (p) = min{c f (i, j) : (i, j) p} 5. for each arrow(i, j) in p 6. if (i, j) A 7. f(i, j) = f(i, j) + c f (p) 8. else f(j, i) = f(j, i) c f (p) Algoritmin toistorakenne jatkuu niin kauan kuin jäännösverkostossa löytyy polkuja lähteestä maaliin. Toiston alussa polun kapasiteetiksi määräytyy pienin polulla olevista jäännöskapasiteeteista. Sen jälkeen polun nuolista vähennetään se kapasiteetti ja polun vastanuoliin lisätään se kapasiteetti. Kun polkuja ei enää löydy, algoritmi päättyy. Jos algoritmilla haetaan esimerkin 2.2 maksimivirtaus, niin saadaan vastaukseksi f = 23, joka näkyy kuvassa 6. Kokkola Tampere v 2/2 v 3 /6 9/20 Oulu s /4 0/9 7/7 t Helsinki 2/3 v 2 /4 Kuopio v 4 Lahti 4/4 Kuva 6: Esimerkin 2.2 maksimivirtaus f = 23.

Kaksijakoisen graan pystyy helposti muuttamaan virtausverkoksi lisäämällä siihen lähteen s ja maalin t, sekä antamalla jokaiselle kaarelle saman suunnan ja kapasiteetin. Jatkoa esimerkkiin.6 Palataan tutkielman alussa esitettyyn hallituksen muodostamisongelmaan. Koska siitä on jo muodostettu kaksijakoinen graa (kuva 2), voidaan siitä muodostaa virtausverkko, joka näkyy kuvassa 7. Seuraavaksi voidaan laskea sen maksimivirtaus, joka on siis myös suurin sovitus. s a b c 2 d 3 e 4 f g 5 6 t h i j k l 7 8 9 0 m n Kuva 7: Hallitusesimerkistä muodostettu virtausverkko. 2

Kun Ford-Fulkerson algoritmi on ajetettu läpi, niin saamme maksivirtaukseksi 0. Eli alkuperäisen graan maksimisovitus on 0, joka tarkoittaa että saamme täytettyä vain kymmenen hallituspaikkaa yhdestätoista. Kuvasta 8 näemme, että tilanne korjaantuisi jos esimerkiksi Anni, Camilla, Fanni, Gabriel, Heli, Erkki, Ilpo, Kari tai Niina suostuisi isännäksi(7). a / / b c 2 / / / d e 3 4 / / / s / / f g 5 6 / / t / h 7 / i 8 / / j 9 / / / k l m 0 / n Kuva 8: Esimerkin.6 maksimisovitus on 0. Käyttämättömät nuolet on merkitty katkoviivoilla. 3

Viitteet [] Frank R. Giordano, William P. Fox, Steven B. Horton, Maurice D. Weir: A First Course in Mathematical Modeling; Fourth Edition. Brooks/Cole, Canada, 2009. [2] R. R. Kadesch: Problem Solving Across the Disciplines. Prentice Hall, United States, 997. [3] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Intoduction to Algorithms; Third Edition. The MIT Press, England, 2009. 4