7.4 Sormenjälkitekniikka

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

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

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

7. Satunnaisalgoritmit (randomized algorithms)

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

Algoritmi on periaatteellisella tasolla seuraava:

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmit 2. Luento 12 To Timo Männikkö

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

Hajautus. operaatiot insert ja search pyritään tekemään erittäin nopeiksi

Satunnaislukujen generointi

2017 = = = = = = 26 1

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Esimerkkejä vaativuusluokista

811120P Diskreetit rakenteet

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

Ensimmäinen induktioperiaate

Algoritmit 2. Luento 9 Ti Timo Männikkö

Ensimmäinen induktioperiaate

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Algoritmit 1. Demot Timo Männikkö

Harjoitustyön testaus. Juha Taina

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

9 Erilaisia tapoja järjestää

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

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Algoritmit 2. Luento 13 Ti Timo Männikkö

a ord 13 (a)

4.3. Matemaattinen induktio

Harjoitus 5 (viikko 41)

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

Sovellettu todennäköisyyslaskenta B

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

Algoritmit 2. Luento 2 Ke Timo Männikkö

MS-A0402 Diskreetin matematiikan perusteet

Harjoitus 3 (viikko 39)

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

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

Tarkennamme geneeristä painamiskorotusalgoritmia

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä.

Nopea kertolasku, Karatsuban algoritmi

Laskuharjoitus 5. Mitkä ovat kuvan 1 kanavien kapasiteetit? Kuva 1: Kaksi kanavaa. p/(1 p) ) bittiä lähetystä kohti. Voidaan

Algoritmit 2. Luento 12 Ke Timo Männikkö

ITKP102 Ohjelmointi 1 (6 op)

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

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

Toinen harjoitustyö. ASCII-grafiikkaa

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

T Privacy amplification

Turingin koneen laajennuksia

Algoritmit 1. Luento 12 Ke Timo Männikkö

Lisää pysähtymisaiheisia ongelmia

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

6. Approksimointialgoritmit

1 Erilaisia tapoja järjestää

Tehtäväsarja I Seuraavissa tehtävissä harjoitellaan erilaisia todistustekniikoita. Luentokalvoista 11, sekä voi olla apua.

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

Matematiikan tukikurssi, kurssikerta 1

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Stabilointi. Marja Hassinen. p.1/48

Algoritmit 1. Luento 11 Ti Timo Männikkö

Tietotekniikan valintakoe

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

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

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

ITKP102 Ohjelmointi 1 (6 op)

Algoritmit 1. Luento 10 Ke Timo Männikkö

Datatähti 2019 loppu

Kombinatorinen optimointi

Johdatus matemaattiseen päättelyyn

HY, MTL / Matemaattisten tieteiden kandiohjelma Todennäköisyyslaskenta IIb, syksy 2017 Harjoitus 1 Ratkaisuehdotuksia

Verkon värittämistä hajautetuilla algoritmeilla

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

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

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Transkriptio:

7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan tarkistaa, päteekö x = y. Ei kuitenkaan haluta lähettää isoja tiedostoja verkon yli. Menetelmä: 1. Valitaan satunnainen m-bittinen alkuluku p. 2. Tiedostolle x lasketaan sormenjälki h p (x) = l(x) mod p missä l(x) on x (bittijonoksi ja siten) luonnolliseksi luvuksi tulkittuna; vastaavasti h p (y). 3. Verrataan sormenjälkiä; vaatii O(m) bitin kommunikoimista. Jos h p (x) h p (y), tiedetään varmasti x y. Jos h p (x) = h q (y), uskotaan x = y (mutta tässä voi tulla virhe). Kuinka suuri m tarvitaan, että virhetodennäköisyys on siedettävä? 380

Olkoon π(n) niiden alkulukujen määrä, jotka ovat korkeintaan n. Siis esim. π(10) = { 2, 3, 5, 7 } = 4. Alkulukulauseen mukaan π(n) n ln n. Esitetty menettely johtaa virheeseen, jos l(x) l(y) mutta l(x) l(y) on jaollinen luvulla p. Koska l(x) l(y) 2 n, luvulla l(x) l(y) ei mitenkään voi olla enempää kuin n alkutekijää. Virheeseen johtavia lukuja p on siis korkeintaan n kappaletta. Siis virhetn. n π(2 m ) n 2 m /m ln 2 = nm ln 2 2 m. Siis jos esim. tiedostot ovat 100 Mb ja m = 64, saadaan virhetodennäköisyydeksi noin 2, 0 10 9. (Alkulukulauseen arvio on jo melko tarkka 64-bittisillä luvuilla.) 381

Toisena esimerkkinä joukkojen yhtäsuuruusvertailu. Tehtävänä on ylläpitää jonkin suuren perusjoukon U osajoukkoja S 1,..., S n. Aluksi joukot ovat tyhjiä. Sallittuja operaatioita ovat insert(i, x): S i := S i { x } (tässä siis x U) equals(i, j): palauttaa tosi joss S i = S j Näyttäisi, että deterministisesti equals(i, j) vaatisi ajan O( S i + S j ) millä tahansa mieleen tulevalla talletusrakenteella. Esitetään satunnaisratkaisu, joka tekee m insert/equals-operaatiota odotusarvoisesti ajassa O(m log(m/ε)) missä ε on equals-operaatioille sallittu virhetodennäköisyys. (Parametrit m ja ε pitää antaa ennakolta.) 382

Valitaan k = log(m/ε). Ideana on käyttää kullekin joukolle S i sormenjälkenä k-bittistä lukua s[i] = { r(x) x S i } missä r(x) on alkiolle x valittu satunnainen k-bittinen koodi ja on bittikohtainen XOR. insert(i, x): if r(x) ei määritelty then r(x) := random(0... 2 k 1) s[i] := s[i] r(x) equals(i, j): return s[i] = s[j] Aluksi s[i] = 0 kaikilla i. Koodit r(x) voidaan taulukoida esim. hajauttamalla. 383

Tarkastellaan nyt operaatiota equals(i, j), jossa sattuu virhe. Merkitään R = S i S j = (S i S j ) (S j S i ). Ehto s[i] = s[j] on yhtäpitävää sen kanssa, että { r(x) x R } = 0. Kun R on kiinteä joukko alkioita x ja koodit r(x) ovat tasaisesti jakautuneita k-bittisiä, niin myös { r(x) x R } on tasaisesti jakautunut k-bittinen ja ( ) k 1 P ( { r(x) x R } = 0) =. 2 Siis yhden nimenomaisen operaation equals(i, j) virhetodennäköisyys, kun S i S j, on 2 k 2 log(m/ε) = ε m. Jos S i = S j, virhetodennäköisyys on nolla. Siis todennäköisyys että m operaatiossa sattuu ainakin yksi virhe on korkeintaan m ε m = ε. 384

7.5 Symmetrian rikkominen Tarkastellaan hajautettua järjestelmää, jossa on n identtistä mutta ei välttämättä synkronista prosessoria. Jotta hyödyllistä rinnakkaisuutta saadaan aikaan, prosessorien pitää erityä. (Muuten vain suoritetaan samat asiat n kertaa.) Tämä voidaan tehdä valitsemalla yksi prosessori johtajaksi, joka sitten jakaa muille työt. Oletetaan, että kukin prosessori tietää prosessorien kokonaismäärän n, voi lähettää viestejä koko verkolle ja osaa generoida satunnaislukuja omalla siemenluvullaan muista prosessoreista riippumatta. Seuraava algoritmi (jota kaikki prosessorit suorittavat) valitsee johtajan käyttäen odotusarvoisesti alle kolme viestintäkierrosta prosessorien lukumäärästä riippumatta. Yhdellä viestintäkierroksella jokainen prosessori saa lähettää yhden viestin kaikille muille. 385

Johtajanvalinta-algoritmi: 1. Aseta m := n. 2. Valitse r := random(1... m) 3. Lähetä kaikille muille prosessoreille luku r. 4. Odota, kunnes olet saanut kaikilta muilta prosessoreilta niiden valitsemat luvut. 5. Olkoon k niiden prosessorien lukumäärä (sinä itse mukaanlukien) jotka valitsivat luvun 1. 6. Jos k = 0, palaa kohtaan 2. Jos k 1 ja r 0, lopeta; sinusta ei tule johtajaa. Jos k 2 ja r = 1, aseta m := k ja palaa kohtaan 2. Jos k = 1 ja r = 1, olet johtaja. Siis valinnalla r = 1 pääsee mukaan seuraavalle kierrokselle. Jos kukaan ei valinnut r = 1, kaikki pysyvät kuitenkin mukana. Muuttujassa m pidetään kirjaa mukana olevien prosessorien määrästä. 386

Yhteenveto Algoritmia suunnitellessa on hyvä pitää mielessä sille asetettavat vaatimukset oikeellisuus aikavaativuus suorituskyky ml. vakiokertoimet Syötteen koko suhteessa käytettävissä olevaan laskentakapasiteettiin rajoittaa ylipäänsä kyseeseen tulevia ratkaisumenetelmiä (peruuttaminen vs. dynaaminen ohjelmointi vs. ahne) Paras ja tehokkain ratkaisu on usein palauttaminen tunnettuun ongelmaan (ja olemassaolevaan toteutukseen). Teoreettisia peruskysymyksiä: satunnaisuuden ja epädeterminismin vaikutus laskentavoimaan approksimoituvuus optimaaliset ratkaisut perusongelmille Loppu 387