Parinmuodostuksesta tietojenkäsittelytieteen silmin Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Suomalainen Tiedeakatemia Nuorten Akatemiaklubi 18.10.2010
Sisältö Mitä tietojenkäsittelytieteessä (ja erityisesti algoritmiikassa) tutkitaan? Parinmuodostuksesta vakaat pariutukset (Gale & Shapley 1962) eräs esimerkki omasta työstä: lähes vakaat pariutukset paikallisen laskennan mallissa
Tietojenkäsittelytiede Mitä tehtäviä voidaan automatisoida?... ja miten tämä tehdään tehokkaasti?
Käytäntö Systemaattinen ratkaisumenetelmä (=algoritmi) 75 x 253 225 + 375 Matemaattinen malli & laskentatehtävä + 150 253m 18975 75m 75 x 253 =?
Algoritmi: Systemaattinen ratkaisumenetelmä kaikille mahdollisille syötteille 5 x 9 =? 75 x 253 =? 981 x 584 =?... 35821871745743 x 87412352367121 =? 35821871745743 x 87412352367121 35821871745743 + 71643743491486 + 35821871745743 + 250753102220201 + 214931230474458 + 107465615237229 + 71643743491486 + 179109358728715 + 107465615237229 + 71643743491486 + 35821871745743 + 143287486982972 + 250753102220201 + 286574973965944 3131274075488702980803264512
Kokonaislukujen kertolasku Peruskoulualgoritmi Ainekset: Allekkain yhteenlasku (algoritmi itsessään) Kertotaulu (opetellaan ulkoa) 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Ohjeet kuinka soveltaa edellisiä kokonaislukujen kertomiseksi (opetellaan ulkoa)
Tietojenkäsittelytiede Mitä tehtäviä voidaan automatisoida?... ja miten tämä tehdään tehokkaasti? Mitä tarkoitamme tehokkuudella?
Tehokkuus Kuinka paljon laskentaresursseja kuluu annetun tehtävän ratkaisuun (käytettäessä määrättyä algoritmia)? Resursseja Aika (kauanko ratkaisussa kestää?) Tila (paljonko muistia tarvitaan?) Energia (kuinka suuri sähkölasku?) Tiedonsiirto (montako bittiä siirretään?)... (montako lähetys/vastaanotto -kierrosta tarvitaan?)
Peruskoulu - kertolaskualgoritmin syöte koostuu n-numeroisista karkea analyysi Paljonko aikaa tarvitaan? (n funktiona) luvuista (tässä n=14) { }} { 35821871745743 x 87412352367121 35821871745743 + 71643743491486 + 35821871745743 + 250753102220201 + 214931230474458 + 107465615237229 + 71643743491486 + 179109358728715 + 107465615237229 + 71643743491486 + 35821871745743 + 143287486982972 + 250753102220201 + 286574973965944 3131274075488702980803264512
Paljonko aikaa tarvitaan? (n funktiona) ~ aika on karkeasti verrannollinen tarvittavaan ruutupaperipintaalaan ~ karkeasti n² ruutua syöte koostuu n-numeroisista luvuista (tässä n=14) { }} { 35821871745743 x 87412352367121 35821871745743 + 71643743491486 + 35821871745743 + 250753102220201 + 214931230474458 + 107465615237229 + 71643743491486 + 179109358728715 + 107465615237229 + 71643743491486 + 35821871745743 + 143287486982972 + 250753102220201 + 286574973965944 3131274075488702980803264512
Tietojenkäsittelytiede Mitä tehtäviä voidaan automatisoida?... ja miten tämä tehdään tehokkaasti? Voidaanko tehtävä ratkaista tehokkaammin?
Sisältö Mitä tietojenkäsittelytieteessä (ja erityisesti algoritmiikassa) tutkitaan? Parinmuodostuksesta vakaat pariutukset (Gale & Shapley 1962) esimerkki omasta työstä: lähes vakaat pariutukset paikallisen laskennan mallissa
Parinmuodostuksesta Käytännössä on usein tarvetta muodostaa pareja Esimerkkejä: Parisuhteet Työpaikat ja työntekijät Koulutuspaikat ja opiskelijat Ostajat ja myyjät...
Käytäntö Systemaattinen ratkaisumenetelmä (=algoritmi) Matemaattinen malli & laskentatehtävä
Työpaikat ja työntekijät Työntekijät hakevat työpaikkoja omien mieltymystensä mukaan (työn mielekkyys, palkka,...) Työnantajat täyttävät työpaikkoja omien mieltymystensä mukaan (hakijan pätevyys, koulutustausta,...) Tavoitteena on muodostaa vakaa joukko työsuhteita
Työpaikat ja työntekijät x a työpaikka y z b c työntekijä mahdollinen pari
Mieluisuusverkko x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y Oletetaan, että a) kukin työntekijä on järjestänyt mahdolliset työpaikkansa b) kukin työpaikka on järjestänyt mahdolliset työntekijänsä mieluisuuden mukaan
Pariutus x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y Pariutus on joukko erillisiä (mahdollisia) pareja
Rikkuriparit x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y Mahdollinen pari on rikkuripari jos sen osapuolet ovat a) ilman paria, tai b) pitävät rikkuriparistaan nykyistä pariaan enemmän
Vakaa pariutus x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y Pariutus on vakaa jos mikään mahdollinen pari ei ole rikkuripari
Laskentatehtävä: Etsi vakaa pariutus (tai totea ettei sellaista ole) x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y
Käytäntö Systemaattinen ratkaisumenetelmä (=algoritmi) Matemaattinen malli & laskentatehtävä
Kosinta-algoritmi (Gale & Shapley 1962) A) Jokainen työntekijä 1) ei tee mitään jos hän on ehdolla työpaikkaan, tai 2) hakee mieluisinta paikkaa, josta häntä ei ole vielä hylätty (jos tällaisia löytyy) B) Jokainen työpaikka 1) ei tee mitään jos uusia hakemuksia ei saavu, tai 2) hylkää kaikki paitsi mieluisimman hakijan (mahdollinen ehdokas aiemmalta kierrokselta lasketaan hakijaksi), ja ilmoittaa mieluisimmalle hakijalle, että hän on ehdolla paikkaan Toistetaan A & B kunnes hylkäyksiä ei tule, jolloin ehdollisista työsuhteista tulee lopullisia
A) Työntekijät hakevat mieluisinta paikkaa x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y
B) Työpaikat valitsevat mieluisimman hakijan x: a>b>c x EHDOLLA a a: x>y>z y: c>b>a y HYLKÄYS b: x>z>y b z: b>c>a z EHDOLLA c c: z>x>y
A) Työntekijät hakevat mieluisinta paikkaa x: a>b>c x EHDOLLA a a: x>y>z y: c>b>a y b b: x>z>y EHDOLLA z: b>c>a z c c: z>x>y
B) Työpaikat valitsevat mieluisimman hakijan x: a>b>c x EHDOLLA a a: x>y>z EHDOLLA y: c>b>a y b b: x>z>y z: b>c>a z HYLKÄYS c c: z>x>y
A) Työntekijät hakevat mieluisinta paikkaa x: a>b>c x EHDOLLA a a: x>y>z EHDOLLA y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y
B) Työpaikat valitsevat mieluisimman hakijan x: a>b>c x EHDOLLA a a: x>y>z EHDOLLA y: c>b>a y b b: x>z>y z: b>c>a z HYLKÄYS c c: z>x>y
A) Työntekijät hakevat mieluisinta paikkaa x: a>b>c x EHDOLLA a a: x>y>z EHDOLLA y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y
B) Työpaikat valitsevat mieluisimman hakijan x: a>b>c x EHDOLLA a a: x>y>z EHDOLLA y: c>b>a y b b: x>z>y EHDOLLA z: b>c>a z c c: z>x>y
Ei hylkäyksiä lopullinen pariutus x: a>b>c x a a: x>y>z y: c>b>a y b b: x>z>y z: b>c>a z c c: z>x>y
Algoritmi: Systemaattinen ratkaisumenetelmä kaikille mahdollisille syötteille
Havaintoja (1/2) Olkoon työpaikkoja ja työnhakijoita molempia n kappaletta Olkoon kullakin työpaikalla ja työntekijällä enintään d mahdollista paria Väite. Tällöin kosinta-algoritmi pysähtyy enintään n x d kierroksessa Perustelu: Jokaisella kierroksella ennen pysähtymistä hylätään ainakin yksi hakija Hylkäyksen saatuaan työntekijä ei enää hae kyseistä paikkaa
Havaintoja (2/2) Väite. Kosinta-algoritmi tuottaa vakaan pariutuksen Perustelu: Olk. XA mielivaltainen mahdollinen pari X A Jos A jää ilman paria, X on hylännyt A:n hakemuksen (mieluisamman ehdokkaan hyväksi), joten XA ei voi olla rikkuripari Olkoon siis A:n pari Y Jos A:Y>X, tällöin XA ei ole rikkuripari (A ei tahdo rikkoa) Y X A Olkoon siis A:X>Y, jolloin X on hylännyt A:n hakemuksen, ja siten XA ei voi olla rikkuripari
Yhteenveto (Gale & Shapley) Esitetyssä mallissa on siis aina olemassa ainakin yksi vakaa pariutus... joista yhden kosinta-algoritmi löytää enintään n x d kierroksessa n ~ työpaikkojen/työntekijöiden määrä d ~ yläraja kunkin työpaikan/työntekijän mahdollisille pareille
Käytäntö Systemaattinen ratkaisumenetelmä (=algoritmi) x a y b z c Matemaattinen malli & laskentatehtävä
Käytäntö Systemaattinen ratkaisumenetelmä (=algoritmi) x a y b z c Matemaattinen malli & laskentatehtävä
Käytännössä...... n voi olla hyvinkin suuri... parinmuodostukseen ei käytetä n x d kierrosta... eikä kurinalaisesti käytetä kosinta-algoritmia... rikkureita löytyy... mieltymykset muuttuvat...
Kysymys Entäpä jos käytämme jotakin muuta menettelyä onko ylipäätään mahdollista löytää vakaa pariutus merkittävästi alle n kierroksessa?... jos oletamme, että jokainen solmu (=työpaikka/ työntekijä) tuntee alussa vain omat mieltymyksensä ja mahdolliset parinsa (=solmun naapurit)... ja että kukin solmu joka kierroksella 1. vastaanottaa viestin jokaiselta naapuriltaan 2. suorittaa itsenäistä laskentaa 3. lähettää viestin jokaiselle naapurilleen
Havainto: Vakaat pariutukset ovat herkkiä pienille muutoksille mieltymyksissä 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 2 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
Viestintärajoitteiden vuoksi T kierroksessa voimme nähdä vain 2T mahdollisen parin päähän... näin ollen oikea laita ei näe vasenta laitaa kuin vasta likimain n kierroksen kuluttua 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 A: 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 B: 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 2 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
Havainto Rikkuriparit ovat siis (oletetussa mallissa) väistämättömiä ellemme käytä pariutuksen etsimiseen likimain n kierrosta Käytännössä rikkuripareja ei isoissakaan verkoissa kuitenkaan vaikuta olevan kovin paljon pystyisimmekö selittämään havaintoa (mallimme pohjalta)?
Kysymys Entäpä jos suoritamme kosinta-algoritmia vain T kierrosta, missä T on huomattavasti pienempi kuin n x d?... tällöin emme yleisesti ottaen löydä vakaata pariutusta... mutta kuinka nopeasti rikkuriparien lkm suhteessa ehdolla olevien parien lkm pienenee kun T kasvaa?... erityisesti, saadaanko tämä suhdeluku mielivaltaisen pieneksi riippumatta verkon solmujen määrästä? (ts. riippumatta n arvosta)
Väite. Tarkastellaan kaksijakoista mieltymysverkkoa, jossa on ainakin yksi mahdollinen pari. Tällöin kosinta-algoritmin kierroksen T =5, 6,... lopussa pätee R E 2d2 T 4, missä R on rikkuriparien lukumäärä, E on ehdolla olevien parien lukumäärä, ja d on yläraja kunkin solmun naapurien lukumäärälle.
Sisältö Mitä tietojenkäsittelytieteessä (ja erityisesti algoritmiikassa) tutkitaan? Parinmuodostuksesta vakaat pariutukset (Gale & Shapley 1962) eräs esimerkki omasta työstä: lähes vakaat pariutukset paikallisen laskennan mallissa
Kiitokset Patrik Floréen, Valentin Polishchuk, Jukka Suomela Suomen Akatemia, projektit 116547, 117499, 118653 (ALGODAN) Helsinki Graduate School in Computer Science & Engineering (Hecse) Nokian Säätiö Algorithms & Complexity Group / U. Glasgow