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

Samankaltaiset tiedostot
Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

10. Satunnaisalgoritmit

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki

7. Satunnaisalgoritmit (randomized algorithms)

3. Laskennan vaativuusteoriaa

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

NP-täydellisyys. Joonas Järvenpää ja Topi Talvitie. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

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

Chomskyn hierarkia ja yhteysherkät kieliopit

4.3. Matemaattinen induktio

7. Aikavaativuus. Ohjelmistotekniikan laitos OHJ-2300 Johdatus tietojenkäsittelyteoriaan, syksy

Muita vaativuusluokkia

7.4 Sormenjälkitekniikka

C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko

Sovellettu todennäköisyyslaskenta B

3. Laskennan vaativuusteoriaa

Algoritmit 1. Luento 1 Ti Timo Männikkö

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Todistusmenetelmiä Miksi pitää todistaa?

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Jokaisen parittoman kokonaisluvun toinen potenssi on pariton.

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Alkulukujen harmoninen sarja

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Rajoittamattomat kieliopit (Unrestricted Grammars)

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

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

3SAT-ongelman NP-täydellisyys [HMU ]

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla

Täydentäviä muistiinpanoja laskennan rajoista

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Algoritmit 1. Luento 11 Ti Timo Männikkö

Todennäköisyys. Antoine Gombaud, eli chevalier de Méré?.? Kirjailija ja matemaatikko

Valitse kuusi tehtävää! Kaikki tehtävät ovat 6 pisteen arvoisia.

Algoritmit 2. Luento 7 Ti Timo Männikkö

Laskennan vaativuus ja NP-täydelliset ongelmat

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM

Testaa taitosi 1: Lauseen totuusarvo

Algoritmit 1. Luento 3 Ti Timo Männikkö

Nopea kertolasku, Karatsuban algoritmi

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Shorin algoritmin matematiikkaa Edvard Fagerholm

Algoritmit 2. Luento 13 Ti Timo Männikkö

Diofantoksen yhtälön ratkaisut

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Matematiikan tukikurssi, kurssikerta 2

Positiivitermisten sarjojen suppeneminen

Ensimmäinen induktioperiaate

Ensimmäinen induktioperiaate

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

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

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Matematiikan tukikurssi

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

Tekijöihinjaon kvanttialgoritmi

Algoritmit 1. Luento 2 Ke Timo Männikkö

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

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

Lisää pysähtymisaiheisia ongelmia

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

811120P Diskreetit rakenteet

Äärellisesti generoitujen Abelin ryhmien peruslause

6.1 Rekursiiviset palautukset

Harjoitustyön testaus. Juha Taina

802645S LUKUTEORIA A (5op) Tapani Matala-aho

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

Luuppien ryhmistä Seminaariesitelmä Miikka Rytty Matemaattisten tieteiden laitos Oulun yliopisto 2006

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Laskennan teoria

Derivaattaluvut ja Dini derivaatat

Harjoitus 7: NCSS - Tilastollinen analyysi

Laskennan teoria

1.4 Funktioiden kertaluokat

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Lukuteorian kertausta

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

¼ ¼ joten tulokset ovat muuttuneet ja nimenomaan huontontuneet eivätkä tulleet paremmiksi.

3.7 Todennäköisyysjakaumia

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

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.

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Cantorin joukon suoristuvuus tasossa

811120P Diskreetit rakenteet

T Luonnollisen kielen tilastollinen käsittely Vastaukset 3, ti , 8:30-10:00 Kollokaatiot, Versio 1.1

Kombinatorinen optimointi

Rekursiiviset palautukset [HMU 9.3.1]

Transkriptio:

Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014

1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden suorituksen määräämiseen käytetään satunnaislukuja. Yksinkertaisin malli satunnaisalgoritmien suorittamiseen on Turingin kone, jolla on kyky tuottaa satunnaislukuja joukosta {0, 1}, eli ikäänkuin kyky heittää kolikkoa. Tätä mallia kutsutaan propabilistiseksi Turingin koneeksi. Sen suoritus haarautuu jokaisessa satunnaisuutta vativassa kohdassa kahteen haaraan, joista edetään satunnaisluvun määräämään haaraan. Propabilistisella Turingin koneella on siis yksi tai useampi mahdollinen lopputila samalla syötteellä. Satunnaisalgoritmeista puhuttaessa ollaan usein kiinnostuneita sen virheen todennäköisyyttä. Virheen todennäköisyys tarkoittaa niiden suoritusten osuutta kaikista algoritmin suorituksista, joissa algoritmi antaa satunnaisuudesta johtuen väärän tuloksen. Tämän kirjoitelman taustamateriaalina on Michael Sipserin kirja Introduction to the Theory of Computation[2]. 2 Bounded-error Propabilistic Polynomial (BPP) Bounded-error Propabilistic Polynomial, eli tästä lähtien BP P, on yleisin niin sanottujen tehokkaiden satunnaisalgoritmien luokka. Luokkaan kuuluvilla algoritmeilla väärän vastauksen todennäköisyys tulee olla vakio, joka on pienempi kuin 1 2. Olennainen ero luokkaan kuulumattomiin satunnaisalgoritmeihin on siinä, että virheen todennäköisyys ei saa riippua syötteestä. Syötteestä riippumaton virheen todennäköisyys on vahva ominaisuus, joka mahdollistaa satunnaisalgoritmin muokkaamisen mielivaltaisen tarkaksi seuraavan lauseen perusteella. Lause 1 (Amplification lemma). Olkoon P BP P propabilistinen polynomiaikainen Turingin kone, jonka virheen todennäköisyys on ɛ < 1 2. Tällöin on olemassa propabilistinen polynomiaikainen Turingin kone P, jonka virheen todennäköisyys on 2 ɛ. Todistus. BPP:hen kuuluvan satunnaisalgoritmin virhe saadaan mielivaltaisen pieneksi toistamalla algoritmia useita kertoja, ja valitsemalla yleisin tulos. Saatu Turingin kone on myös polynomiaikainen, sillä virhe on riippumaton syötteen koosta oletuksen perusteella. Siten kaikille syötteille riittää, että algoritmia toistetaan jonkun vakion verran, jotta saadaan halutun pieni virheen todennäköisyys. Yksityiskohtaisempi todistus lauseelle löytyy kirjasta [2]. Amplification lemma on merkittävä tulos tehokkaille satunnaisalgoritmeille. Virheen pienentäminen mielivaltaisen pieneksi polynomiaikaisuuden silti säilyessä mahdollistaa lähes täysin varmojen satunnaisalgoritmien tekemisen. Voidaan valita vaikka niin pieni virheen todennäköisyys, että algoritmin väärä tulos johtuu todennäköisemmin laiteviasta tietokoneessa 1

kuin algoritmin satunnaisuudesta. Toki niin pienellä virheellä todennäköisesti algoritmin suoritusaika voisi olla hyvin pitkä. Olennaista kuitenkin on, että se on polynominen suhteessa syötteen kokoon. 3 Esimerkki: alkuluvun testaaminen Sen testaaminen, onko luku alkuluku vai ei, on ollut perinteisesti laskennallisesti hyvin haastava ongelma. Viime aikoina siihen on löydetty kuitenkin polynomiajassa toimiva algoritmi, mutta tämä vanhempi satunnainen versio on silti mielenkiintoinen esimerkki hyödyllisestä satunnaisalgoritmista. Algoritmi perustuu Fermatin pieneen teoreemaan. Sen mukaan kaikilla alkuluvuilla p ja sitä pienemmillä positiivisilla kokonaisluvuilla a pätee seuraava lause: a p 1 mod p Algoritmin idea on ajaa Fermatin testiä haluttu määrä erilaisilla satunnaisesti valituilla a:n arvoilla. Jos yksikään testi ei epäonnistu, algoritmi sanoo luvun olevan alkuku. Jos yksikin testi epäonnistuu, algoritmi sanoo luvun olevan yhdistetty luku eli ei-alkuluku. Algoritmi ei anna aina oikeaa tulosta, sillä löytyy yhdistettyjä lukuja, jotka läpäisevät Fermatin testit. Kuitenkin useimpien lukujen kohdalla suorittamalla enemmän testejä löytyy joku testitapaus, jossa Fermatin testi epäonnistuu. Oikean alkuluvun algoritmi luokittelee aina oikein, sillä alkuluku ei voi olla läpäisemättä Fermatin testiä. 4 Satunnaisalgoritmien vaativuusluokat Edellisen esimerkin algoritmi kuuluu luokkaan co-rp (co- Randomized Polynomial time). Luokkaan kuuluvat algoritmit antavat varmasti oikean vastauksen, jos oikea vastaus on hyväksy. Jos taas oikea vastaus on hylkää, co-rp :hen kuuluvat ongelmat voivat antaa väärän vastauksen tietyllä virhemarginaalilla. Luokalla RP nämä ovat johdonmukaisesti toisin päin. Co- RP :llä ja RP :llä virhe on siis toispuoleinen. Toisessa puolikkaassa tapauksista algoritmi antaa oikean vastauksen ilman virheen mahdollisuutta. Co-RP :n ja RP :n leikkausta kutsutaan ZP P :ksi (Zero Propability Polynomial time). Tämän luokan ongelmissa virheen mahdollisuutta ei ole kummallakaan oikean vastauksen vaihtoehdolla. ZP P :hen kuuluvat algoritmit voivat silti käyttää satunnaisuutta hyödyksi, mutta satunnaisuus ei vaikuta algoritmin lopputulokseen. Satunnaisuudella voidaan päättää esimerkiksi resurssien käytöstä. Näitä algoritmeja kutsutaan Las Vegas -algoritmeiksi. Esimerkki Las Vegas-algoritmista on quick sort (pahimman tapauksen aikavaativuus n 2, yleensä O(n log n)), jossa jakopisteen valinta suoritetaan satunnaisesti deterministisen valinnan sijaan. Tämä valintatapa tekee todennäköisem- 2

mäksi sen, että quick sort suoriutuu järjestämisestä aina O(n log n) ajassa, vaikka syöte olisi mahdollisimman huono algoritmille. Kaikkien satunnaisalgoritmien luokka on P P (Propabilistic polynomial). Siihen kuuluu niin ensimmäisenä mainittu luokka BP P, kuin RP, co-rp ja ZP P. P P :n määritelmän mukaan siihen kuluu algoritmit, jotka antavat oikean vastauksen todennäköisyydellä, joka on suurempi kuin 1 2. P P kuulostaa hyvin samalta kuin osajoukkonsa BP P, mutta niillä on merkittävä ero. P P :ssä virhe voi riippua syötteen koosta, joten luokan P P algoritmeista ei aina ole lauseen 1 mukaisia polynomiaikaisia versioita. 5 P = BPP? Satunnaisalgoritmeihin liittyy mielenkiintoinen avoin kysymys. Kysymys on, ovatko luokat P (polynomiaikaiset ei-propabilistiset Turingin koneet) ja BP P oikeastaan sama luokka? Jos ne olisivat, se tarkoittaisi, että kaikille BP P :n algoritmeille olisi olemassa polynomiaikainen deterministinen vaihtoehto. Kysymys on avoin, sillä on ongelmia, joihin tiedetään BP P :hen kuuluva ratkaisu, mutta ei polynomiaikaista determinististä ratkaisua. Ongelman ydin onkin se, että antaako satunnaisuus ja virheen salliminen tehokkaamman mallin laskennalle kuin deterministinen Turingin kone. Useille satunnaisalgoritmeille on kuitenkin löydetty deterministinen vastine. Tästä on esimerkki edellä esitelty alkulukujen testaaminen. Ongelman kuuluminen luokkaan P oli pitkään avoin kysymys. Vuonna 2002 intialaiset tietojenkäsittelytieteilijät esittivät paperissaan polynomiaikaisen deterministisen algoritmin alkuluvun testaamiselle [1]. Täten oli osoitettu ongelman kuuluminen luokkaan P. 6 Yhteenveto Satunnaisuuden salliminen algoritmeille antaa paljon uusia mahdollisia menetelmiä algoritmien suunnitteluun. Tässä kirjoitelmassa esiteltiin vain muutamia satunnaisalgoritmien sovelluksia, mutta moniin tärkeisiin ongelmiin löytyy satunnaisuutta hyödyntävä ratkaisu. Usein jopa oikean tuloksen todennäköisyys saadaan niin pieneksi, ettei satunnaisuus enää juuri vaikuta algoritmin lopputulokseen. Tästä päästäänkin edellisessä kappaleessa esiteltyyn ongelmaan P :n ja BP P :n suhteesta. Jos virhe saadaan kerran BP P :hen kuuluvilla algoritmeilla mielivaltaisen pieneksi polynomiaikaisuuden säilyessä, voisiko kaikkia BP P :n algoritmeja vastata polynomiaikainen deterministinen algoritmi? 3

Lähteet [1] Agrawal, Manindra, Kayal, Neeraj ja Saxena, Nitin: PRIMES is in P. Ann. of Math, 2:781 793, 2002. [2] Sipser, Michael: Introduction to the Theory of Computation. Thomson, 2. painos, 2006. 4