Verkkoalgoritmeja. Henry Niveri. hniveri(at)cc.hut.fi

Samankaltaiset tiedostot
7. Satunnaisalgoritmit (randomized algorithms)

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

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

Algoritmit 1. Luento 8 Ke Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Algoritmi on periaatteellisella tasolla seuraava:

Luku 8. Aluekyselyt. 8.1 Summataulukko

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

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

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

Verkon värittämistä hajautetuilla algoritmeilla

Algoritmit 2. Luento 7 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , 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.

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

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

4 Tehokkuus ja algoritmien suunnittelu

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

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

10. Painotetut graafit

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet ja algoritmit

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

13 Lyhimmät painotetut polut

Algoritmit 1. Luento 13 Ma Timo Männikkö

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

Pienin virittävä puu (minimum spanning tree)

Stabiloivat synkronoijat ja nimeäminen

Johdatus graafiteoriaan

Algoritmit 2. Luento 4 To Timo Männikkö

Malliratkaisut Demot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

v 8 v 9 v 5 C v 3 v 4

Algoritmit 2. Luento 8 To Timo Männikkö

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

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Skedulointi, kuormituksen tasaus, robotin navigaatio

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.

Algoritmit 1. Luento 14 Ke Timo Männikkö

Datatähti 2019 loppu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

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

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

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

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

A TIETORAKENTEET JA ALGORITMIT

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

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

6. Approksimointialgoritmit

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Algoritmit 2. Luento 12 Ke Timo Männikkö

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

4.3. Matemaattinen induktio

Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia

Puumenetelmät. Topi Sikanen. S ysteemianalyysin. Laboratorio Aalto-yliopiston teknillinen korkeakoulu

Algoritmit 1. Luento 11 Ti Timo Männikkö

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

Silmukkaoptimoinnista

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

Matemaatiikan tukikurssi

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Tentissä on viisi tehtävää, jotka arvosteellaan asteikolla 0-6. Tehtävien alakohdat ovat keskenään samanarvoisia ellei toisin mainita.

Algoritmit 2. Luento 4 Ke Timo Männikkö

Harjoitus 3 ( )

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Harjoitus 3 ( )

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Algoritmit 1. Luento 2 Ke Timo Männikkö

PARITUS KAKSIJAKOISESSA

Yleinen paikallinen vakautuva synkronointialgoritmi

Matematiikan ja tilastotieteen laitos Matematiikka tutuksi Harjoitus 2, malliratkaisut

Ei-yhteydettömät kielet [Sipser luku 2.3]

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

58131 Tietorakenteet ja algoritmit (syksy 2015)

Transkriptio:

Verkkoalgoritmeja Henry Niveri hniveri(at)cc.hut.fi Seminaariesitelmä 16.4.008 T-106.5800 Satunnaisalgoritmit Tietotekniikan laitos Teknillinen korkeakoulu Tiivistelmä Tässä esityksessä käsitellään satunnaisalgoritmien käyttöä verkkojen tutkimisessa. Johdannossa kuvataan yleisesti verkkoihin liittyviä ongelmia, joita voidaan ratkaista satunnaisalgoritmeilla. Pääasiallisesti esityksessä keskitytään verkon minimileikkauksen löytämiseen satunnaisalgoritmilla. 1

1 Johdanto Satunnaisalgoritmeilla voidaan ratkaista ongelmia, joiden ratkaisu on vaikeaa deterministisillä algoritmeilla. Satunnaisalgoritmeissa käytetään hyväksi sitä, että moneen ongelmaan on todennäköistä löytää ratkaisu satunnaisesti yrittämällä kuin determinisesti päättelemällä. Satunnaisuus algoritmissa aiheuttaa sen, että satunnaisalgoritmi ei tuota välttämättä samaa lopputulosta usealla eri ajokerralla. Tämä ominaisuus johtaa siihen, että jos tiedämme todennäköisyyden, jolla algoritmi tuottaa oikean tuloksen, voimme arvioida kuinka monen ajokerran jälkeen algoritmi tuottaa suurella todennäköisyydellä oikean tuloksen. Verkkoihin liittyvät ongelmat liittyvät usein koko verkon tietyn osajoukon tutkimiseen. Monesti verkosta halutaan löytää tiettyjen solmujen tai kaarien välisten relaatioiden ominaisuuksia. Tämä aiheuttaa sen että käytännössä verkon äärilaidoilla olevat solmut ja kaaret eivät usein tuota optimaalisia ratkaisuja ongelmaan. Jos tyydytään tiettyyn todennäköisyyteen ongelman ratkeamiseen, ei koko verkkoa tarvitse tutkia, kuten deterministinen algoritmi saattaisi joutua tekemään. 1.1 Satunnaisalgoritmityypit verkkoihin liittyvissä ongelmissa Satunnaisalgoritmit jaetaan kahteen pääluokkaan: Las Vegas ja Monte Carlo algoritmeihin. Las Vegas algoritmit tuottavat aina oikean tuloksen, kun taas Monte Carlo algoritmit saattavat tuottaa kyllin lähellä oikeaa ratkaisua olevan tuloksen. Molemmat algoritmityypit soveltuvat verkkoihin liittyvien ongelmien ratkaisuun. 1.1.1 Las Vegas algoritmit Las Vegas algoritmit soveltuvat ongelmiin, joissa on välttämätöntä löytää oikea ratkaisu ja riittää että ratkaisu löytyy todennäköisesti nopeammin kuin deterministisellä algoritmilla. Esimerkiksi matkapuhelinverkkoa suunniteltaessa aluksi päätetään tukiasemien paikat. Tämän jälkeen tukiasemat pitää yhdistää kaapeleilla. Pitemmät kaapelit maksavat enemmän, joten on tärkeää, että selvitään mahdollisimman lyhyillä kaapeleilla kuten kuvassa (1). Tämä ongelma muuttuu siis verkon pienimmän virittävän puun löytämiseksi, mikä on ratkaistavissa satunnaisalgoritmilla. Koska on ensiarvoisen tärkeää, että ongelmaan löydetään pienin virittävä puu on tässä tapauksessa Las Vegas tyyppinen algoritmi ainoa järkevä valinta. Verkon virittävä puu on suuntaamattoman verkon sellainen alipuu, joka sisältää kaikki verkon solmut kytkettynä toisiinsa. Painotetun verkon pienin virittävä puu on sellainen verkon virittävä puu, jonka kaarten painojen summa on pienempi tai yhtäsuuri kuin verkon muiden virittävien puiden(esimerkki virittavästä puusta kuvassa 1). Verkon pienimmän virittävän puun laskevia algoritmeja on tutkittu 1900-luvun alkupuolelta lähtien. Tunnetuimpia virittävän puun selvittäviä deterministisiä algoritmeja ovat Primin ja Kruskalin algoritmit, jotka pystyvät laskemaan pienimmän virittävän puun ajassa O(m log n), jossa m on kaarien lukumäärä ja n on solmujen lukumäärä. Tähän asti nopeimman deterministisen algoritmin,

joka löytää verkon pienimmän virittävän puun on kehittänyt Bernard Chazelle. Chazellen algoritmi pystyy laskemaan pienimmän virittävän puun ajassa O(mα(m, n)), jossa α on käänteinen Ackermanin funktio. Käänteinen Ackermanin funktio kasvaa erittäin hitaasti ja käytännössä se saa arvokseen alle 5 kaikilla käytännössä järkevän kokoisilla verkoilla. Nopeimmissa algoritmeissa käsitellään niin monimutkaisia tietorakenteita, että pienin virittävä puu etsitäänkin useimmiten yksinkertaisemmilla algoritmeilla. Satunnaisalgoritmeilla voidaan kuitenkin löytää verkon pienin virittävä puu melko yksinkertaisesti ajassa O(m + n) [1, p. 96]. Kuva 1: Puhelinverkon pienin virittävä puu 1.1. Monte-Carlo algoritmit Monte Carlo algoritmit sitä vastoin soveltuvat ongelmiin, joissa riittää tarpeeksi hyvä ratkaisu. Esimerkiksi sähköasemalla havaitaan, että sähköverkossa on oikosulku. Jotta sähköaseman yläpuolella verkkotopologiassa olevat laitteet eivät vahingoittuisi, on koko aseman virransyötö katkaistava tietyn ajanjakson jälkeen. Jos ennen tätä pystytään löytämään aseman alapuolella olevasta verkosta uusi jakelureitti, voidaan oikeita erotinlaitteita ohjaamalla säilyttää osa asiakkaista tyytyväisenä. Jos su- 3

urella todennäköisyydellä, saavutetaan pienin mahdollinen alue ilman sähköjä, on algoritmi hyvä. Jos taas algoritmi ei löytänyt parasta mahdollista ratkaisua, niin mikä tahansa ratkaisu on parempi kuin koko sähköaseman sulkeminen, joka katkaisisi sähköt useammalta asiakkaalta. Tällaisen ongelman ratkaisemiseen sopii siis Monte-Carlo tyyppinen algoritmi. Kuva : Vika sähköverkossa Verkon pienin leikkaus Verkon pienimmän leikkauksen(min-cut) löytämiseen käytettävät algoritmit perustuvat normaalisti verkkojen virtauksen analysointiin ja ovat monimutkaisia toteuttaa. Tässä kappaleessa esitellään yksinkertainen mutta tehokas min-cut satunnaisalgoritmi. Kappaleessa käsitellään suuntaamattomia ja kytkettyjä verkkoja. Min-cut algoritmeilla on tarkoitus löytää verkon pienin leikkaus. Käytännössä halutaan siis löytää se kaarien joukko, joka poistamalla verkko hajoaa kahdeksi erilliseksi verkoksi. Samalla jokaisesta solmusta lähtevien kaarien lukumäärä on vähintään pienimmän leikkauksen kaarien lukumäärä. Tätä tietoa voidaan käyttää hyväksi algoritmin tehokkuuden arvioinnissa. Pienimmän leikkauksen löytäminen on hyödyllistä esimerkiksi kommunikaatioverkkojen suunnittelussa, kun halutaan löytää verkon heikoimmat kohdat. Pienin leikkaus kertoo siis, missä kohdassa verkossa on pienin määrä redundattisuutta. Pienintä leikkausta voidaan käyttää myös hyväksi rinnakkaisalgoritmien suunnittelussa. Kommunikaatio eri prosessorien välillä aiheuttaa usein hitautta rinnakkaisesti suoritettavaan algoritmiin. Jos algoritmin suoritettavat osat ovat verkon solmuja, 4

saadaan kommunikaation määrä minimoitua jakamalla ongelma pienimmän leikkauksen kohdalta. Kuva 3: Katkoviiva osoittaa verkon pienimmän leikkauksen.1 Yksinkertainen min-cut algoritmi Verkon leikkaus voidaan löytää poistamalla kaaria, jotka yhdistävät solmuja. Kun verkosta poistetaan kaari kahden solmun väliltä, on olemassa tietty todennäköisyys että kaari ei kuulunut pienimpään leikkaukseen. Algoritmi päättyy kun jäljellä on enää vain solmua. Jos yksikään poistettu kaari ei kuulunut pienimpään leikkaukseen, on jäljelle jääneet kaaret oikea ratkaisu ongelmaan. Olkoon verkko G = (V,E), jossa V on verkon solmujen joukko ja E on verkon kaarien joukko. Kuvassa 3 siis V = {1,,3,4,5,6,7} ja E = {a,b,c,d,e,f,g,h,i,j,k,l,m,n}. Ajetaan kuvassa 3 olevalle verkolle yksinkertainen min-cut algoritmi: Valitse joukosta E satunnaisesti yksi kaari v jonka päätepisteet ovat x ja y Poista kaikki kaaret väliltä {x,y} Luo G:hen uusi solmu z, joka korvaa solmut x ja y siten että kaikki kaaret, jotka liittyvät solmuihin x tai y liittyvät myös solmuun z ja alkuperäiset solmut x ja y poistetaan verkosta Jos jäljellä on yli solmua, aloita alusta Koko algoritmin ajon aikana jäljellä olevat kaaret muodostavat yhden verkon leikkauksista. Algoritmin loputtua jäljellä olevat kaaret ovat verkon pienin leikkaus, jos koko algoritmin ajon aikana ei 5

Kuva 4: Kaaren a karsiminen verkosta ja solmujen 1 ja 3 yhdistäminen poistettu yhtään kaarta joka kuuluu pienimpään leikkaukseen. Kuinka suuri todennäköisyys on siihen, että jäljelle jääneet kaaret ovat verkon pienin leikkaus? Olkoon verkon G solmujen lukumäärä n, kaarien määrä pienimmässä leikkauksessa k. Tarkastellaan yhtä verkon pienintä leikkausta C. Verkossa G täytyy olla vähintään nk/ kaarta, koska muuten verkossa täytyisi olla ainakin yksi solmu, jolla on alle k naapurisolmua ja tällöin tähän solmuun liittyvät kaaret olisivat pienimpi leikkaus kuin määritelty pienin leikkaus. Siis kun poistamme ensimmäisen kaaren verkosta todennäköisyys, että poistimme C:hen kuuluvan kaaren on k/(nk/) = /n. Aina kun verkosta poistetaan kaari algoritmin ajon aikana, solmujen määrä vähenee yhdellä. Eli kun verkosta on karsittu i kaarta on verkossa jäljellä n-i+1 solmua, jolloin seuraava karsittu kaari kuuluu joukkoon C todennäköisyydellä /(n-i+1). n i=1 ( 1 ) = (n i + 1) n i=1 ( ) n i 1 (n i + 1) (1) = n j=3 j j = (n )! n! ( ) n = 1/ = Ω(n ) () Todennäköisyys, että yhdellä ajolla tämä algoritmi löytää pienimmän leikkauksen on siis suurempi kuin /n. Jos ajamme algoritmin n / kertaa, todennäköisyys, että emme löydä pienintä leikkausta on vähintään (1 n ) n / < 1/e (3) Käytännössä meillä on siis hyvin yksinkertainen Monte Carlo algoritmi, jolla saadaan suurella todennäköisyydellä oikeita ratkaisuja. Tämän yksinkertaisen algoritmin ajaminen vaatii aikaa O(n ) ja algoritmi pitää suorittaa vähintään Ω(n ) kertaa, että saamme kohtuullisella todennäköisyydellä oikean ratkaisun. Ratkaisun löytäminen kestää siis O(n 4 ). Parhaat deterministiset algoritmit maksi- 6

maalisen virtauksen löytämiseksi kestävät O(mn log(n /m)). Maksimaalisen virtauksen laskeminen tuottaa verkon pienimmän leikkauksen sivutuloksena kuten aiemmin mainittiin. Satunnaista min-cut algoritmia on siis tehostettava, jotta se tuottaa hyviä tuloksia nopemmin kuin deterministinen algoritmi.. Nopeutettu min-cut algoritmi Yllä esitellyn pienimmän leikkauksen löytävän algoritmin suurin ongelma on, että se löytää pienimmän leikkauksen melko pienellä todennäköisyydellä Ω(n ), jonka vuoksi se on ajettava liian useasti, että saamme suurella todennäköisyydellä oikean ratkaisun. Välituloksesta (1) näemme, että kun karsittujen kaarien määrä kasvaa, niin todennäköisyys, että poistamme pienimpää leikkaukseen kuuluvan kaaren kasvaa samalla. Eli kun verkko pienenee, niin algoritmi poistaa suuremmalla todennäköisyydellä kaaren, jota ei pitäisi poistaa. Algoritmia voisi siis luultavasti tehostaa sillä, että kun ongelman ratkaisujoukko(verkon koko) käy pienemmäksi, kasvatetaan todennäköisyyttä, jolla emme poista pienimpään leikkaukseen kuuluvaa kaarta. Oletetaan, että yksinkertaista min-cut algoritmia ajetaan kunnes jäljellä on vain t solmua. Tällöin algoritmi ei ole poistanut oikeaa ratkaisua todennäköisyydellä: n t i=1 ( ) n i 1 = (n i + 1) ( ) t / ( ) n = Ω ( ( ) ) t n (4) Algoritmin nopeuttaminen perustuu hajoita ja hallitse menetelmään. Poistetaan verkosta satunnaisalgoritmillamme rajallinen määrä solmuja kahdesti. Toistetaan kahdelle uudelle verkolle sama operaatio rekursiivisesti. Kun rekursiivisesti tutkitut verkot käyvät tarpeeksi pieniksi, pienimmän leikkauksen löytäminen tulee triviaaliksi, jolloin se ratkaistaan deterministisellä algoritmilla. Tällä algoritmilla meidän aiempi yksinkertainen algoritmi ajetaan useammin mutta, koska tutkittavien verkkojen koot pysyvät suurempina, todennäköisyys huonon kaaren poistamiseen pienenee. 1. n on verkon G solmujen lukumäärä. Toista kunnes n 6 (a) t 1 + n (b) Käytä yksinkertaista supistusalgoritmia verkkoon G kunnes jäljellä on vain t solmua saadaksesi verkon H 1 (c) Käytä yksinkertaista supistusalgoritmia verkkoon G kunnes jäljellä on vain t solmua saadaksesi verkon H (d) Kutsu rekursiivisesti tätä algoritmia verkoille H 1 ja H (e) Palauta pienempi verkko H 1 tai H 7

3. Etsi pienin leikkaus determinisesti pienestä verkosta Rekursio lopetetaan kun solmujen lukumäärä on pienempi kuin 7, koska tämän jälkeen t ei enää ole ole pienempi kuin jäljellä olevien solmujen lukumäärä. Nopeamman algoritmin tehon ymmärtää helpoiten ajattelemalla näitä kahta eri algoritmiä puina(5). Yksinkertainen algoritmi on puu, jossa on yksi juuri ja sillä O(n ) lehtisolmua, jotka kuvaavat jokaista algoritmin eri ajokertaa. Nopeutettu algoritmi on binääripuu, jonka juurena on alkuperäinen verkko G. Juuren ensimmäiset lapsisolmut ovat ensimmäisella rekursiokierroksella syntyneet verkot H 1 ja H. Näiden solmujen lapsisolmuja ovat taas seuraavat rekursioaskeleet ja niin edespäin. Eli nopeutettu algoritmi ei pienennä mahdollisten ratkaisujen joukkoa, vaan jakaa työn pienempiin osatekijöihin. Kuva 5: Yksinkertaisen ja nopeutetun min-cut algoritmin vertailu...1 Nopeutetun min-cut algoritmin tehokkuus Koska yksinkertainen supistusalgoritmi käyttää aikaa O(n ), niin on varmaa, että myös algoritmin edetessä tutkittavat puut supistuvat vähintään samassa ajassa. Algoritmissa tutkitaan rekursiivisesti puuta, joiden koko on 1 + n. Rekursiivinen min-cut algoritmi voidaan siis suorittaa vähintään ajassa T (n) = T ( 1 + n ) + O(n ) (5) Koska puun jokaisen horisontaalisen tason tutkimiseen kuluu aikaa O(n ) ja puussa on O(log n) 8

tasoa, koko algoritmin suorittaminen kestää siis T (n) = O(n log n) (6) Algoritmin edetessä, jokaisella rekursiokierroksella, muistissa täytyy pitää vain yhtä verkkoa. Jos rekursiossa ollaan edetty d askelta, on tutkittavassa verkossa enää jäljellä vain ω(n/ d/ ) solmua. Tilaa tarvitaan siis O ( d=0.. Nopeutetun min-cut algoritmin onnistumistodennäköisyys ) n d = O(n ) (7) Algoritmin ensimmäinen rekursiokierros karsii alkuperäisen verkon G solmuja n, niin kauan että solmuja on jäljellä t = 1 + n. Välituloksesta(4) nähdään, että pienin leikkaus on vielä jäljellä vähintään todennäköisyydellä ( ) ( t 1 + n/ ) = 1 n n (8) Seuraava todistus löytyy viitteestä ([1, Theorem 10.17, p.94]). Olkoon P(t) todennäköisyys, että nopeutettu min-cut algoritmi löytää pienimmän leikkauksen verkosta, jossa on t solmua. Rekursiivinen kutsu osaverkkoon H i ei poista pienintä leikkausta todennäköisyydellä P ( 1 + t ), jos osaverkko H i vielä sisälsi pienimmän leikkauksen. H i sisältää pienimmän leikkauksen vähintään todennäköisyydellä 1 (8). Eli rekursiivinen kutsu osaverkkoon H i ei poista pienintä leikkausta todennäköisyydellä 1 P ( 1 + t ). Koska rekursio jakaantuu kahteen osaverkkoon, todennäköisyys sille, että ainakin toinen rekursio kierros ei poista solmuja pienimmästä leikkauksesta on siis P (t) 1 (1 1 P ( 1 + t )) (9) Kuvataan rekursion syvyyttä sijoittamalla k = Θ(log t) ja olkoon p(k) pienin onnistumistodennäköisyys. Tällöin p(0) = 1 ja p(k + 1) = p(k) p(k) 4 (10) Kaava yksinkertaistuu lisää uudella sijoituksella q(k) = 4/p(k) 1 9

q(k + 1) = q(k) + 1 + 1 q(k) (11) Ylläolevasta rekursiosta voidaan induktiivisesti päätellä k < q(k) < k + H k 1 + 4 (1) Jossa H i on harmooninen luku i k=1 1 k = Θ(log i) (13) Tästä seuraa q(k) = k + Θ(log k). Takaisin sijoittamalla näemme, että p(k) = Θ(1/k), johon sijoittamalla näemme että P (t) = Θ(1/ log t). Siis jos verkossa on n solmua, niin nopeutettu pienimmän leikkauksen löytävä algoritmi löytää oikean ratkaisun todennäköisyydellä Θ(1/ log n). Eli nopeutettu algoritmi pitää siis ajaa vähintään log n kertaa, että saamme suurella todennäköisyydellä oikean vastauksen. Siispä jos nopeutetun algoritmin ajaminen kestää O(n log n) (6) ja algoritmi pitää ajaa log n kertaa, algoritmimme löytää verkon pienimmän leikkauksen ajassa O(n log n). Jos paras deterministinen algoritmi löytää verkon pienimmän leikkauksen ajassa O(mn log(n /m)), jossa m on kaarien lukumäärä huomaamme, että satunnainen algoritmi on tehokkaampi kuin deterministinen algoritmi. Koska satunnaisalgoritmimme on Monte-Carlo algoritmi on siitä myös hyötyä, jos algoritmin sovelluskohteessa nopea suoritus on tärkeämpää, kuin täysin oikean ratkaisun löytäminen. 3 Yhteenveto Satunnaislgoritmit soveltuvat hyvin moniin verkkoihin liittyviin ongelmiin. Verkon pienimmän leikkauksen etsintää ja pienimmän virittävän puun löytämistä satunnaisalgoritmeilla tutkitaan koko ajan. Koska satunnaisalgoritmit soveltuvat useaan ongelmaan, joita voidaan ratkaista rinnakkaisen ja hajautetun laskennan avulla, hajautuksen yleistyessä tietotekniikassa, satunnaisalgoritmien käyttö mitä luultavimmin yleistyy. Satunnaisalgoritmien yleistyessä myös verkkoihin liittyviä ongelmia tullaan todennäköisesti ratkaisemaan yhä useammin satunnaisalgoritmeilla. 10

Viitteet [1] Motwani, R., Raghavan, P. Randomized algorithms. Cambridge University Press, 1995. [] Michael Mitzenmacher, Eli Upfal. Probability and Computing: Randomized Algorithms and Probabilistic Analysis. Cambridge University Press, 005. [3] ACM Special Interest Group for Automata and Computability Theory, ACM, Activity Group on Discrete Mathematics, SIAM Activity Group on Discrete Mathematics, Special Interest Group for Automata and Computability Theory, SIAM. Proceedings of the Fifth Annual ACM-SIAM Symposium on Discrete Algorithms. SIAM, 005. [4] Sanguthevar Rajasekaran. Handbook of Randomized Computing. Springer, 001. [5] Wikipedia,Minimum spanning tree, http://en.wikipedia.org/wiki/minimum spanning tree, viitattu 13.4.008 11