7. Satunnaisalgoritmit (randomized algorithms)

Samankaltaiset tiedostot
7.4 Sormenjälkitekniikka

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

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

Tarkennamme geneeristä painamiskorotusalgoritmia

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

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

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

Algoritmit 1. Luento 8 Ke Timo Männikkö

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

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmi on periaatteellisella tasolla seuraava:

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

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

Datatähti 2019 loppu

6. Approksimointialgoritmit

Formalisoidaan hieman täsmällisemmin, millaisia suoritustakuita satunnaisalgoritmeilta voidaan vaatia.

Algoritmit 2. Luento 2 To Timo Männikkö

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

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

Algoritmit 1. Demot Timo Männikkö

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

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

Algoritmit 2. Luento 12 Ke Timo Männikkö

Todennäköisyyslaskenta I, kesä 2017 Helsingin yliopisto/avoin Yliopisto Harjoitus 1, ratkaisuehdotukset

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

HY / Matematiikan ja tilastotieteen laitos Tilastollinen päättely II, kevät 2017 Harjoitus 1 Ratkaisuehdotuksia Tehtäväsarja I

4. Joukkojen käsittely

3.4 Peruutus (backtracking)

Algoritmit 2. Luento 4 Ke Timo Männikkö

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

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.

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

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

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 9 Ti Timo Männikkö

Verkon värittämistä hajautetuilla algoritmeilla

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

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

C.C. McGeoch, Toward an experimental method for algorithm simulation. algorithm simulation = algoritmin testaus, experimental algorithmics

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

Satunnaislukujen generointi

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

30A02000 Tilastotieteen perusteet

Algoritmit 1. Luento 10 Ke Timo Männikkö

(b) Onko hyvä idea laske pinta-alan odotusarvo lähetmällä oletuksesta, että keppi katkeaa katkaisukohdan odotusarvon kohdalla?

Algoritmit 1. Luento 12 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

Algoritmit 1. Luento 13 Ti Timo Männikkö

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

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

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

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

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

Sovellettu todennäköisyyslaskenta B

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

SAT-ongelman rajoitetut muodot

MAT Todennäköisyyslaskenta Tentti / Kimmo Vattulainen

Satunnaisalgoritmit

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 1. Luento 12 Ke Timo Männikkö

isomeerejä yhteensä yhdeksän kappaletta.

Algoritmit 1. Luento 13 Ma Timo Männikkö

4.1. Olkoon X mielivaltainen positiivinen satunnaismuuttuja, jonka odotusarvo on

Tietotekniikan valintakoe

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

Nollasummapelit ja bayesilaiset pelit

Tutkimustiedonhallinnan peruskurssi

P (A)P (B A). P (B) P (A B) = P (A = 0)P (B = 1 A = 0) P (B = 1) P (A = 1)P (B = 1 A = 1) P (B = 1)

Algoritmit 2. Luento 10 To Timo Männikkö

Matematiikan tukikurssi, kurssikerta 2

Markov-kustannusmallit ja kulkuajat

Algoritmit 1. Luento 7 Ti Timo Männikkö

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

Tuloperiaate. Oletetaan, että eräs valintaprosessi voidaan jakaa peräkkäisiin vaiheisiin, joita on k kappaletta

4. laskuharjoituskierros, vko 7, ratkaisut

Transkriptio:

7. Satunnaisalgoritmit (randomized algorithms) Satunnaisuudella on laskentaongelmien ratkaisemisessa moninaisia käyttötapoja. Tässä tarkastellaan lähinnä perinteisten algoritmien nopeuttamista, ja sitäkin suhteellisen pinnallisesti. Tämän luvun jälkeen opiskelija omaa yleiskuvan satunnaisuuden käyttötavoista, osaa luokitella satunnaisalgoritmeja niiden laatukriteerien mukaan (esim. Monte Carlo vs. Las Vegas), tuntee edustavan joukon esimerkkejä satunnaisalgoritmien suunnittelutekniikoista (Sherwood-algoritmit, otanta, sormenjälkitekniikka) osaa soveltaa odotusarvojen ja virherajojen arvioimisen perustekniikoita (odotusarvon lineaarisuus, binomijakauma), Aiheesta on luennoitu erikoiskurssi viimeksi keväällä 2003. Hyvä oppikirja on Motwani ja Raghavan: Randomized algorithms. 344

7.1 Peruskäsitteitä Satunnaisuutta voidaan käyttää useisiin eri tarkoituksiin, kuten symmetrian rikkominen (hajautetut järjestelmät) vastustajan hämääminen (pelit, salaus) otanta tavallisten laskentaongelmien nopea ratkaiseminen arvaamalla monimutkaisten algoritmien yksinkertaistaminen (esim. aiemmin esitetty mediaanialgoritmi) yleiskäyttöiset optimointimenetelmät (simuloitu jäähdytys, geneettiset algoritmit) uudet laskentaparadigmat (kvanttilaskenta jne.) 345

Mielenkiintoinen periaatteellinen kysymys: mitä satunnaisuudella todella voidaan voittaa? Toisinaan satunnaisalgoritmeja saadaan derandomisoiduksi. Ehkä kuitenkin joissain tilanteissa satunnaisuudesta on aidosti hyötyä? Jos näin on, mitä on ajateltava pseudosatunnaislukugeneraattoreista, joihin käytännön sovellukset yleensä perustuvat? Yleisesti uskotaan, että perinteinen satunnaisuus ei riitä NP-kovien ongelmien ratkaisemiseen polynomisessa ajassa. Kvanttilaskennan asema on epäselvempi. 346

Ensimmäisenä johdattelevana esimerkkinä tarkastellaan seuraavaa satunnaistettua pikajärjestämisalgoritmia: RandQS(A): if A > 1 then p := random(1.. A ) pivot := A[p] Vertaa alkiota pivot kaikkiin taulukon A alkioihin. Muodosta taulukko A 1 alkiota pivot pienemmistä ja A 2 alkiota pivot suuremmista alkioista. RandQS(A 1 ) RandQS(A 2 ) return A 1 [pivot] A 2 else return A Kutsu RandQS(A) järjestää taulukon A. (Oletamme yksinkertaisuuden vuoksi, että taulukon luvut ovat erisuuria.) Funktio random(i..j) palauttaa satunnaisen luvun joukosta { i, i + 1,..., j } siten, että jokaisella luvulla on sama todennäköisyys ja eri kutsukertojen tulokset ovat toisistaan riippumattomia. Merkintä A B tarkoittaa taulukoiden A ja B yhdistämistä peräkkäin. Olkoon C taulukko, jossa on n lukua, pienimmästä suurimpaan x 1,..., x n. Analysoidaan kutsua RandQS(C). 347

Olkoon X rs satunnaismuuttuja, joka kertoo kuinka monta kertaa alkioita x r ja x t verrattiin toisiinsa kutsun RandQS(C) suorituksen aikana. Tietyn suorituskerran kokonaisaikavaativuus on selvästi verrannollinen vertailujen lukumäärään n r 1 r=1 s=1 X rs. Tarkastellaan tämän odotusarvoa [ n ] r 1 n E X rs = r=1 s=1 r 1 r=1 s=1 E [X rs ] missä on käytetty hyväksi odotusarvon lineaarisuutta. Koska X rs on joko 1 tai 0, saadaan E[X rs ] = 0 (1 p rs ) + 1 p rs = p rs missä p rs on todennäköisyys, että alkioita x r ja x s verrataan. Haluamme siis arvioida summaa n r 1 p rs. r=1 s=1 348

Määritellään binääripuu T (A) kaikille niille A, joilla kutsun RandQS(C) suorituksen aikana tehtiin rekursiivinen kutsu RandQS(A). Puussa on n solmua, joihin sijoitellaan luvut x 1,..., x n. Määritelmä on rekursiivinen. Jos A = 0, niin T (A) on tyhjä puu. Jos A = 1, niin T (A) on lehti, jossa on taulukon A ainoa alkio. Muuten olkoon pivot, A 1 ja A 2 kuten algoritmissa. Nyt T (A) on puu, jonka juuressa on luku pivot, vasempana alipuuna T (A 1 ) ja oikeana T (A 2 ). Siis puun T (A) vasemmassa alipuussa ovat juurta pienemmät ja oikeassa juurta suuremmat taulukon alkiot. Järjestys x 1,..., x n vastaa puun T (C) läpikäyntiä sisäjärjestyksessä. 349

Algoritmin ja puun T (A) määritelmistä seuraa, että kutsun RandQS(A) suorituksen aikana puun juurta verrataan tasan kerran kuhunkin muuhun puun alkiooon. Siis X rs = 1 jos ja vain jos joko x r on alkion x s jälkeläinen puussa T (C) tai kääntäen. Olkoon π taulukon C järjestys, joka saadaan luettelemalla ensin puun T (C) juuri, sitten juuren lapset vasemmalta oikealle, sitten lapsenlapset vasemmalta oikealle jne. Olkoon s < r. Siis x q on solmujen x r ja x s lähin yhteinen esivanhempi, jos se on järjestyksessä π ensimmäinen jolla x s x q x r. Tämä on yhtäpitävää sen kanssa, että x q päätyy pivot-alkioksi aiemmalla rekursiotasolla kuin mikään muu alkio joukosta { x s, x s+1,..., x r }. Siis X rs = 1 jos ensimmäinen joukosta { x s, x s+1,..., x r } valittava pivot on joko x r tai x s. Koska pivot valitaan satunnaisesti, tämän todennäköisyys on 2/(r s + 1). 350

Saadaan n r 1 r=1 s=1 p rs = = Koska H n ln n, saadaan 2 n r 1 r=1 s=1 r 1 n r=1 k=1 n r=1 k=1 = 2nH n. 2 r s + 1 2 k + 1 n 1 Lause Algoritmi RandQS tekee odotusarvoisesti O(n log n) vertailua n-alkioisen taulukon järjestämisessä. k 351

Huomioita: Deterministisessä pikajärjestämisessä aikavaativuus on O(n log n) keskimäärin, kun oletetaan syötteen eri järjestyksen yhtä todennäköisiksi. Tässä odotusarvo on algoritmin sisäisten rahanheittojen yli; ei tarvita oletuksia syötteestä. Jos käytettävissä tosiaan on rahanheittoja eli (pseudo)satunnaisia bittejä, satunnaislukujen generoiminen mielivaltaisesta joukosta { 1,..., n } on hieman epätriviaalia (mutta ei tässä mikään varsinainen ongelma). Tarkemmalla analyysilla voidaan osoittaa, että suurella todennäköisyydellä suoritus on O(n log n). Toisin sanoen suuren poikkeamat ovat epätodennäköisiä, mikä usein on tärkeää. 352

Toisena johdantoesimerkkinä tarkastellaan verkon minimileikkauksen määrittämistä. On järkevää ratkaista ongelma yleisemmin moniverkoille G = (V, E) missä siis E V V on monijoukko (multiset, bag; sama kaari saa esiintyä monta kertaa). Emme jatkossa toista etuliitettä moni. Jatkossa n = V ja m = E. Kaarijoukko C E on leikkaus, jos verkko (V, E C) on epäyhtenäinen. Leikkaus C on minimileikkaus, jos kaikilla leikkauksilla C pätee C C. Aiemmin todetun perusteella (s. 290 291) minimileikkausongelma palautuu maksimivuo-ongelmaan, jos on lisäksi annettu solmut s ja t joiden tiedetään olevan minimileikkauksen eri puolilla. Jos tällaisia solmuja ei tunneta, ongelma voidaan silti ratkaista etsimällä V maksimivuota (harjoitus 12, tehtävä 2). Itse asiassa ongelma voidaan ratkaista verkkovuota käyttämällä ajassa O(nm log(n 2 /m)). Esitämme seuraavaksi periaatetasolla yksinkertaisen satunnaisalgoritmin ongelmalle. Ideaa tarkentamalla saadaan satunnaisalgoritmi, joka suurella todennäköisyydellä löytää minimileikkauksen ajassa O(n 2 (log n) c ) jollain vakiolla c. (Palaamme pian siihen, mitä suurella todennäköisyydellä tarkalleen tarkoittaa.) 353

Kaaren e = (u, v) E kutistaminen (contraction) tarkoitaa solmujen u ja v liittämistä yhdeksi uudeksi solmuksi. Kaari (u, v) häviää ja muuten solmuihin u ja v tulevat kaaret korvautuvat uuteen solmuun liittyvillä kaarilla. b b a c i a c i e k l j h e j h d f g d f g Esimerkki kutistuksesta; selvyyden vuoksi kaaret nimetty. Kutistettavana jompi kumpi kaarista k tai l. Jos verkko G on saatu kutistuksella verkosta G, ja C on leikkaus verkossa G, niin C on selvästi leikkaus myös verkossa G (kun ajatellaan kaarten identiteetit säilytetyksi ylläolevan esimerkin tapaan). Siis erityisesti kutistuksessa minimileikkauksen koko ei pienene. Minimileikkauksen koko voi kasvaa, jos kutistettavana on minimileikkaukseen kuuluva kaari. 354

Saadaan seuraava periaatealgoritmi, joka löytää verkossa G = (V, E) jonkin leikkauksen: 1. Valitse satunnainen kaari e E ja kutista se. 2. Jos V > 2, palaa kohtaan 1. 3. Nyt E on leikkaus. Tässä siis taas oletetaan, että kaarilla on identiteetti josta pidetään kirjaa kutistuksissa. Lopuksi V = { a, b } joillain a, b, ja kaikki kaaret ovat solmujen a ja b välillä. Jos näiden kaarten vastinkaaret poistetaan alkuperäisestä verkosta, syntyy kaksi erillistä komponenttia, jotka koostuvat solmuun a päätyvistä ja solmuun b päätyvistä solmuista. Siis lopuksi E todella on leikkaus. Olkoon C jokin alkuperäisen verkon G minimileikkaus, ja k = C. Jos kutistettavaksi ei koskaan valita joukon C kaarta, niin lopuksi E = C. Tässä vaiheessa verkossa voi olla jäljellä vain kaksi solmua, sillä muuten jokin leikkauksen C aito osajoukko olisi leikkaus. Siis algoritmi löysi minimileikkauksen. Analysoidaan siis todennäköisyyttä, että kaikki satunnaiset valinnat osuvat joukon C ulkopuolelle. 355

b e e a d f g c h c b e e g a c f g c h h b e a g c h Eräs minimileikkausalgoritmin suoritus. Kutistettavat kaaret valittu sopivasti (d, f, a, h) niin, että löytyy minimileikkaus { e, c }. 356

Kiinnitetään jokin minimileikkaus C, C = k. Tällöin verkon jokaisen solmun v asteluku on ainakin k, koska muuten solmuun v päättyvät kaaret muodostaisivat pienemmän leikkauksen. Lisäksi missä tahansa algoritmin suoritusvaiheessa, jos ei vielä ole kutistettu mitään joukkoon C kuuluvaa kaarta, niin C on edelleen minimileikkaus ja jokaisen solmun asteluku on edelleen ainakin k. Oletetaan, että vaiheissa 1,..., i on kutistettu vain joukkoon C kuulumattomia kaaria. Koska solmuja on jäljellä n i, niin kaaria on jäljellä ainakin k(n i)/2. Todennäköisyys, että seuraava valinta osuu joukkoon C, on korkeintaan k/(k(n i)/2) = 2/(n i). Siis todennäköisyys osua joukon C ulkopuolelle vaiheessa i + 1, jos aina ennenkin on osuttu, on ainakin 1 2/(n i). Todennäköisyys pysyä joukon C ulkopuolella kaikissa vaiheissa 1,..., n 2 on ainakin n 3 i=0 ( 1 2 ) n i = = = n 3 i=0 n i 2 n i (n 2)(n 3)... 2 1 n(n 1)... 4 3 2 n(n 1). 357

Olemme siis osoittaneet, että ainakin todennäköisyydellä 2/(n(n 1)) > 2/n 2 mitään joukon C kaarta ei valita, jolloin algoritmi palauttaa minimileikkauksen C. Tämä onnistumistodennäköisyys on tietysti häviävän pieni vähänkään suuremmilla n. Menetellään nyt niin, että toistetaan algoritmia n 2 /2 kertaa, ja valitaan löydetyistä leikkauksista pienin. Jos ei löydetty minimileikkausta, niin kaikki suorituskerrat epäonnistuivat, minkä todennäköisyys on korkeintaan (1 2n 2 ) n2 /2 < e 1. Tämä todennäköisyys saadaan mielivaltaisen pieneksi toistamalla algoritmia riittävän monta kertaa. Palaamme pian tämäntyyppisen tilanteen tarkempaan analyysiin. 358

7.2 Satunnaisalgoritmien luokittelua Hyvällä onnella tietysti kaikki satunnaisalgoritmit antavat hyvän ratkaisun. Algoritmeja voidaan luokitella sen mukaan, mitä yleisiä toimivuustakuita niillä on: Las Vegas -algoritmit: vastaus on aina oikein, mutta pienellä todennäköisyydellä suoritus voi kestää kauan Monte Carlo -algoritmit: vastaus saa olla väärä pienellä todennäköisyydellä Satunnaiset approksimointialgoritmit: suurella todennäköisyydellä vastaus on ainakin suunnilleen oikein Edellä esitetyistä RandQS oli tyyppiä Las Vegas ja minimileikkaus tyyppiä Monte Carlo. Nimitys Las Vegas on melko tuore [Babai 1979]. Perinteisesti kaikenlaisia satunnaisalgoritmeja, kuten numeerisia approksimointialgoritmeja, on nimitetty Monte Carlo -algoritmeiksi. Las Vegas -nimikettä käytetään toisinaan sellaisista algoritmeista, jotka toimivat aina nopeasti eivätkä koskaan anna väärää vastausta, mutta toisinaan vastaavat en tiedä. Tämä on oleellisesti sama käsite kuin edellä esitetty. 359