Satunnaisalgoritmit. Antti Tanhuanpää. 25. maaliskuuta 2013

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

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

10. Satunnaisalgoritmit

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

3. Laskennan vaativuusteoriaa

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:

7. Satunnaisalgoritmit (randomized algorithms)

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Kertausta 1. kurssikokeeseen

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

7.4 Sormenjälkitekniikka

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

6.1 Rekursiiviset palautukset

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

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

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Lisää pysähtymisaiheisia ongelmia

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Algoritmit 2. Luento 7 Ti Timo Männikkö

Automaatit. Muodolliset kielet

3. Laskennan vaativuusteoriaa

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

Turingin koneen laajennuksia

Muita vaativuusluokkia

Täydentäviä muistiinpanoja laskennan rajoista

Algoritmit 2. Luento 13 Ti Timo Männikkö

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

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

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

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

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

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

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

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Yhteydettömän kieliopin jäsennysongelma

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

4 Tehokkuus ja algoritmien suunnittelu

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

5.3 Ratkeavia ongelmia

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Shorin algoritmin matematiikkaa Edvard Fagerholm

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

Minimilatenssiongelman ratkaisualgoritmeja (valmiin työn esittely)

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

Sovellettu todennäköisyyslaskenta B

Nopea kertolasku, Karatsuban algoritmi

6. Approksimointialgoritmit

Laskennan teoria

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

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

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

ABHELSINKI UNIVERSITY OF TECHNOLOGY

P? = NP Kysymys ratkaisun keksimisestä ja sen tarkistamisesta

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

Esimerkkejä vaativuusluokista

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

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

Algoritmit 2. Demot Timo Männikkö

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Tutkimustiedonhallinnan peruskurssi

811120P Diskreetit rakenteet

Kombinatorinen optimointi

811120P Diskreetit rakenteet

Laskennan teoria

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

Säännöllisen kielen tunnistavat Turingin koneet

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

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Määrittelydokumentti

Algoritmit 1. Luento 2 Ke Timo Männikkö

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.

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 13 Ti Timo Männikkö

Satunnaislukujen generointi

1. Universaaleja laskennan malleja

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

Verkon värittämistä hajautetuilla algoritmeilla

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

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

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

Transkriptio:

Satunnaisalgoritmit Antti Tanhuanpää 25. maaliskuuta 2013 Johdanto Satunnaisalgoritmit ovat algoritmeja, jotka hyödyntävät satunnaisuutta osana laskentaansa. Ensimmäisen tällaisen algoritmin kehitti Michael O. Rabin vuonna 1976 lähimmän parin ongelmaan (closest pair problem). Seuraavana vuonna Robert M. Solovay ja Volker Strassen kehittävät satunnaistetun alkulukutestin (primality test), johon ei vielä siihen aikaan tunnettu deterministista polynomista algoritmia. Deterministinen algoritmi kyseiseen ongelmaan löydettiin vasta 2002 eikä sekään vielä peittoa satunnaistettua. Satunnaisalgoritmeista puhuttaessa on syytä tehdä ero satunnaistettujen ja probabilististen algoritmien välille. Satunnaistetut algoritmit hyödyntävät satunnaisuutta parantaakseen esimerkiksi pahimman tapauksen aikavaativuuttaan (satunnaistettu quick sort), mutta tuottavat aina oikean lopputuloksen. Probabilistiset algoritmit käyttävät laskennassaan satunnaisuutta, mutta eivät välttämättä tuota oikeaa lopputulosta (Monte Carlo -algoritmit) tai eivät tuota lopputulosta ollenkaan (Las Vegas -algoritmit). Saattaa tuntua oudolta, miten tällaisista algoritmeista voisi olla mitään hyötyä, mutta käytännössä virheen salliminen on perusteltua, sillä laskenta tapahtuu aina fyysisillä laitteilla. Esimerkiksi alfahiukkaset ja kosminen säteily aiheuttavat virheitä laitteiden muistissa. Tämä työ käsittelee ainoastaan probabilistisia algoritmeja ja niihin liittyvää laskennallista mallia, probabilistista Turingin konetta. Probabilistiset algoritmit Probabilistisia algoritmeja on kahta perustyyppiä: Las Vegas ja Monte Carlo - algoritmit. Las Vegas -algoritmit eivät välttämättä pysähdy, mutta pysähtyessään antavat aina oikean lopputuloksen. Monte Carlo -algoritmit puolestaan pysähtyvät aina, mutta niiden tuottama tulos on oikea vain jollain ennalta tiedetyllä todennäköisyydellä. 1

Motivoivana esimerkkinä esitetään alkion etsiminen listasta. Alkion etsiminen listasta Olkoon A eksponentiaalisen pitkä lista, jossa on 2 n alkiota. Puolet listan alkiosta on nollia ja puolet ykkösiä. Ongelmana on, kuinka löydämme listasta ykkösen (tai nollan)? Mikä tahansa deterministinen algoritmi toimii pahimassa tapauksessa ajassa O(2 n /2) = O(2 n 1 ), sillä saatamme joutua käymään läpi kaikki väärät alkiot ennen haluamamme alkion löytämistä. Ratkaisun nopeuttamiseksi kehitämme probabilistisen algoritmin. Las Vegas -algoritmi Kehitetään Las Vegas -algoritmi alkion c löymiseksi listasta A. Se saa syötteenään listan A ja halutun alkion c. las-vegas-search(a, c): while True: i = random(0, len(a) - 1) if A[i] == c: return i Algoritmilla ei ole mitään yksittäistä pahinta syötettä, koska alkioita käydään läpi satunnaisessa järjestyksessä, ja aikavaativuus on listan pituudesta riippumaton. Hyvällä lykyllä löydämme haluamme alkion jo ensimmäisellä kierroksella, mutta voi käydä niin, että käymme loputtomasti läpi vääriä alkioita, ja pahimman tapauksen aikavaativuus onkin O( ). Las Vegas -algoritmi voidaan määritellä myös niin, että se pysähtyy aina, muttei välttämättä tuota lopputulosta. Annetaan algoritmille aiempien parametrien lisäksi jokin vakio k, joka kertoo, montako hakua listaan enimmällään tehdään. las-vegas-search2(a, c, k): while k > 0: i = random(0, len(a) - 1) if A[i] == c: return i k = k - 1 Nyt algoritmimme pysähtyy aina ja algoritmin tuottama vastaus on aina oikea, jos se tuottaa vastauksen. Jos vastaus jää saamatta, laskentaan käytetty aika on heitetty hukkaan. 2

Monte Carlo -algoritmi Monte Carlo -algoritmi samaiseen ongelmaan saa syötteenään samat parametrit, kuin edellinen Las Vegas -algoritmi. monte-carlo-search(a, c, k): while k > 0: i = random(0, len(a) - 1) if A[i] == c: break k = k - 1 return i Algoritmi toimii syötteen pituudesta riippumattomassa ajassa, muttei välttämättä anna oikeaa vastausta. Sallimalla virhemarginaalin saamme stokastisia tuloksia. Virhemarginaali ε = 2 k, koska jokaisella haulla todennäköisyys osua oikeaan on 1 2. Todennäköisyys löytää annettu alkio P [löydetään c] = 1 ε, joten varsin varsin vähäisellä hakujen määrällä päästään jo käytännössä luotettaviin tuloksiin. Todennäköisyys saada väärä tulos vielä 48 toiston jälkeen on pienempi, kuin saada Loton päävoitto kahdesti: ε = 2 48 3.6 10 15 ( ) 2 39 P [osua päävoittoon kahdesti] = 7 4.3 10 15 Seuraavaksi formuloimme mallin tutkia probabilistisia algoritmeja. Probabilistinen Turingin kone Probabilistinen Turingin kone (PTM) on epädeterministinen Turingin kone, jolla voidaan mallintaa satunnaisalgoritmien laskentaa. Toisin kuin tavallinen epädeterministinen Turingin kone (NTM), joka käy läpi kaikki laskentapuun haarat, PTM valitsee jokaisella epädeterministisellä askeleella satunnaisesti ( kolikkoa heittämällä ) toisen kahdesta mahdollisesti konfiguraatiosta, mikä tekee siitä mahdollisen toteuttaa käytännössä. PTM voidaan nähdä deterministisen Turingin koneen (DTM) varianttina, jolla on käytössään loputon nauha tasaisesti jakautuneita satunnaisbittejä, josta se lukee valitessaan seuraavaa konfiguraatiotaan. Probabilistisen Turingin koneen M jokaiseen laskennan haaraan b sidotaan todennäköisyys P [b] = 2 n, missä n on epädeterminististen askelten määrä haarassa 3

b, jolla M valitsee kyseisen haaran. Näin voimme määritellä todennäköisyyden sille, että M hyväksyy tai hylkää syötteen ω. P [M hyväksyy syötteen ω] = b hyväksyy P [b] P [M hylkää syötteen ω] = 1 P [M hyväksyy syötteen ω]. Toisin sanoen todennäköisyys hyväksyä syöte on summa yli kaikkien hyväksyvien haarojen todennäköisyyksien ja todennäköisyys hylätä tämän komplementti. Kuten deterministisetkin Turingin koneet, PTM tunnistaa kielen, jos se hyväksyy kieleen kuuluvat syötteet ja hylkää siihen kuulumattomat. Probabististen koneiden kohdalla kuitenkin sallitaan virhemarginaali 0 ε < 1 2 ja sanotaan, että M tunnistaa kielen A virhemarginaalilla ε, jos ja ω A = P [M hyväksyy syötteen ω] 1 ε ω / A = P [M hylkää syötteen ω] 1 ε. ja Määriteltyämme laskinnallisen mallin satunnaisalgoritmeille on mielekästä puhua aikavaativuusluokista. Probabilistiset vaativuusluokat Rajallisen virheen probabilistinen polynomiaalinen aikavaativuus Rajallisen virheen probabilistinen polynomiaalinen aikavaativuus (bounded-error probabilistic polynomial time eli BPP) on niiden kielten luokka, jotka PTM tunnistaa pahimman tapauksen polynomiaalisessa ajassa virhemarginaalilla ε = 1 3. Virhemarginaalin valinta on mielivaltainen, kunhan 0 ε < 1 2, mikä tullaan osoittamaan vahvistuslemman (amplification lemma) käsittelyn yhteydessä. BPP on laajimpia käytännössä hyödyllisiä vaativuusluokkia. Suurimmalle osalle tämän luokan ongelmista on olemassa probabilistinen algoritmi, joka voidaan toteuttaa tehokkaasti nykyisillä tietokoneilla. Monte Carlo -algoritmit kuuluvat tähän luokkaan. 4

Satunnaistettu polynominen aikavaativuus Satunnaistettu polymoninen aikavaativuusluokka (randomized polynomial time, RP ja co-rp) poikkeaa luokasta BPP sillä, että siinä sallitaan virhe ainoastaan yhteen suuntaan. Toisin sanoen, jos oikea ratkaisu on hyväksyä syöte, se hyväksytään virhemarginaallilla 0 ε 1 2, mutta jos oikea ratkaisu on hylätä syöte, se hylätään aina (ja toisinpäin luokassa co-rp). Virheetön probabilistinen polynomiaalinen aikavaativuus Virheetön probabilistinen polynomiaalinen aikavaativuus (zero-error probabilistic polynomial time, ZPP) on luokkien RP ja co-rp leikkaus. Jos Las Vegas -algoritmit määritellään, kuten jälkimmäinen esimerkkimme, ne kuuluvat tähän luokkaan. Probabilististen vaativuusluokkien suhteet Vaativuusluokka ZPP on P:n laajennus, joten P on ZPP:n osajoukko. Toisaalta ZPP on luokkien RP ja co-rp leikkauksena selvästikin molempien osajoukko, jotka puolestaan ovat BPP:n erikoistapauksina sen osajoukkoja. Saadaan siis seuraavat yhteydet: P ZP P RP BP P P ZP P co-rp BP P Mielenkiintoista onkin, onko P BP P. Tätä ei ole toistaiseksi onnistuttu todistamaan, ja yleisesti uskotaankin, ettei näin ole. Luultavasti siis kaikki esitellyt luokat ovat keskenään samoja. Eikö satunnaisuus tuokaan lisää laskentavoimaa? Ehkä pystymme simuloimaan satunnaisuutta riittävän hyvin deterministisillä pseudosatunnaisgeneraattoreilla, joiden tuottamia arvoja polynomiaikainen DTM ei pysty erottamaan aidosta satunnaisesta. Luokkien BPP ja NP suhdetta ei tunneta. Vahvistuslemma Vahvistuslemman avulla minkä tahansa BPP-kielen virhemarginaali ε saadaan kutistettua mielivaltaisen pieneksi ilman, että aikavaativuus kasvaa. 5

Olkoon 0 ε < 1 2. Kaikilla polynomisesti syötteen pituudesta n riippuvilla arvoilla poly(n) voidaan polynomiselle probabilistiselle Turingin koneelle M 1 virhemarginaalilla ε muodostaa ekvivalentti polynominen PTM M 2 virhemarginaalilla 0 ε = 2 poly(n) ε. Vahvistuslemman todistus sivuutetaan. Ideana on suorittaa algoritmia polynomiaalisen monta kertaa ja katsoa, hylätäänkö vai hyväksytäänkö syöte suurimmalla osalla kerroista. Virhemarginaali pienenee eksponentiaalisessa suhteessa suoritusten määrään nähden, mikä voidaan osoittaa Chernoffin rajaa käyttämällä. Tarvittavien toistojen määrä riippuu virhemarginaaleista ε ja ε, mutta pysyy polynomisessa suhteessa syötteen pituuteen nähden. Yhteenveto Vaikka satunnaistetut laskennalliset mallit eivät todennäköisesti tarjoakaan teoreettisia hyötyjä, käytännössä niillä voidaan saada huomattavia nopeutuksia. Lähteet Sipser, Michael 2006. Introduction to the Theory of Computation. 2nd international edition. USA: Course Technology. Cormen, Thomas H.; Leiserson, Charles E., Rivest, Ronald L., Stein, Clifford 2011. Introduction to Algorithms. 2nd edition. USA: MIT Press. Lynch, Nancy 2011. MIT 6.045: Automata, Computability, and Complexity (GITCS), Class 17. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ 6-045j-automata-computability-and-complexity-spring-2011/lecture-notes/ MIT6_045JS11_lec17.pdf 6