Sormejälkimeetelmät Matti Risteli mristeli@iksula.hut.fi Semiaariesitelmä 23.4.2008 T-106.5800 Satuaisalgoritmit Tietotekiika laitos Tekillie korkeakoulu Tiivistelmä Sormejälkimeetelmät ovat satuaisuutta hyväksikäyttäviä algoritmeja, joilla pyritää ratkaisemaa s. ekvivalessiogelmia. Nämä ovat ogelmia, joissa tietojoukkoje A ja B sisällö yhtäläisyyttä halutaa tutkia. Sormejälkimeetelmiä hyödytävät algoritmit voivat olla sekä Mote Carlo että Las Vegas -tyyppisiä. Satuaisalgoritmeilla voidaa pieetää tietojoukkoje vertailussa tarvittava tiedo määrää esim. tilateissa joissa jokaise tavu vertailu ei ole soveltuvaa(suuri tietomäärä hitaa yhteyde päässä toisistaa). Satuaiset sormejälkimeetelmät perustuvat todistajie rusaus -paradigmaa ja iide virhetodeäköisyyttä voidaa parataa helposti. 1 Johdato Tämä semiaarityö käsittelee satuaisuutee perustuvia sormejälkimeetelmiä. Sormejälkimeetelmillä pyritää ratkaisemaa s. ekvivalessiogelmia, joissa kahde tietojouko yhtäläisyys halutaa selvittää tilateissa joissa iide suora vertailu tai kryptografiste tiivisteide laskemie ei ole käytäöllistä esimerkiksi suure datamäärä vuoksi. Tällöi tietojoukkoje suora vertailu sijaa verrataa iide sormejälkiä. Sormejäljet ovat epätarkkoja kuvauksia, joilla alkuperäie tietojoukko esitetää pieemmässä tilassa. Tällä yhtäältä saavutetaa suorituskykyetua mutta toisaalta myös mahdollistetaa virheelliset päätelmät. Sormejälkimeetelmät voidaa ähdä yleisesti todistajie rusaus -paradigma erityistapauksea, joka virhetodeäköisyyttä voidaa pieetää amplifioimalla. Sormejälkimeetelmiä voidaa käyttää hyväksi sekä Las Vegas että Mote Carlo -algoritmeissa. Teksti perustuu Juraj Hromcovici kirjaa Desig ad Aalysis of Radomized Algorithms [1] ja mukailee pääpiirteissää kirja Figerpritig-luvu sisältöä. Aluksi esittele mitä ekvivalessiogelmalla tarkoitetaa ja mite sormejälkimeetelmät periaatteellisella tasolla toimivat. Se jälkee käydää läpi sekä Las Vegas että Mote Carlo -algoritmejä käyttävät esimerkkiogelmat ja lopuksi iide käytäö sovelluksia. 1
2 Ekvivalessiogelmista Ekvivalessiogelma o ogelma, joka muodostuu kahdesta tietojoukosta, joide yhtäläisyys halutaa selvittää. Yksikertaisilla tietojoukoilla tämä voidaa tehdä helposti vertailemalla tietoja toisiisa suoraa, mutta usei se ei ole soveltuvaa joko suure tietomäärä tai vertailu vaikeude aiheuttamie suorituskykyogelmie vuoksi. Yksikertaie esimerkki tällaisesta ogelmasta o polyomie ekvivalessi ts. mite ratkaista oko esimerkiksi polyomit (x 1)(x 2 + 4) ja x 3 + 4x 4 toistesa eri esitysmuotoja. Normaali lähestymistapa olisi tietysti johtaa molemmat polyomit jokilaisee ormaalimuotoo ja tarkistaa jokaise termi yhtäläisyys eriksee. Tämä ei kuitekaa moimutkaisemmissa tapauksissa ole järkevää, koska sekä vertailu että se valmistelut ovat hitaita. Sormejälkimeetelmällä tehty tarkistus o opeampi ja virhetodeäköisyys o joko hyvi piei tai virhettä ei ole ollekaa. Polyomiesimerki tapauksessa sormejälkimeetelmii perustuva tarkistus evaluoisi molemmat polyomit samalla syötteellä ja tutkisi vastauste yhtäsuuruutta. Virhetodeäköisyys olisi tässä tapauksessa yhtälö asteesta riippuva mutta tuettu. 3 Sormejälkimeetelmät Sormejälkimeetelmä voidaa ajatella todistajie joukkoa, joide avulla voidaa kuvata lähdetietojouko moimutkaise esitykse helpommi vertailtavaksi sormejäljeksi. Polyomiesimerkissä todistajia ovat satuaisesti valitut x: arvot ja sormejälkiä polyomeille valittuje x: arvoje perusteella saadut arvot. Triviaalisti voidaa saoa että x: arvo 0 o huoo todistaja. Yleisesti hyvä sormejälkimeetelmä täyttää seuraavat vaatimukset: Sormejälkie tulee olla tarpeeksi yksikertaisia ja pieiä että iitä voidaa vertailla tehokkaasti. Tämä saavuttamiseksi sormejälki saa olla jopa epätäydellie esitys alkuperäisestä tietojoukosta. Sormejälje tulee sisältää mahdollisimma paljo oleaista iformaatiota alkuperäisestä tietojoukosta. Yleisemmi sormejälkimeetelmää voidaa kuvata joukkoa M, joka jokaie alkio o fuktio, joka tuottaa tietojouko täydellisestä kuvauksesta sitä vastaava sormejälje. Yksittäisessä tapauksessa ogelmaa o löytää M, joka tarpeeksi moi fuktio f tuottaa kuvaukse, jolla erilaisille tietojoukoille O 1 ja O 2 pätee f(o 1 ) f(o 2 ). Tästä johtue sormejälkimeetelmä oki todistajie rusaus -meetelmä erityistapaus. Joukko M voidaa ajatella joukoksi todistajakadidaatteja, joilla pyritää todistamaa että O 1 O 2 ja h M yksittäiseksi todistajaksi sille että O 1 O 2, jos h(o 1 ) h(o 2 ). 3.1 Sormejälkimeetelmä toimita Tarkoitus o selvittää kahde suure tietojouko O 1 ja O 2 ekvivalessi. Sormejälkii perustuva ekvivalessitarkistus eteee seuraavasti: 2
1. Tuetaa joukko M, joka sisältää fuktioita, joista jokaie kuvaa tietojouko täydellise sisällö pieempää tilaa. Valitaa tästä joukosta yksi fuktio h satuaisesti. 2. Lasketaa h(o 1 ) ja h(o 2 ), h(o i ):tä kutsutaa O i : sormejäljeksi, i = 1,2 3. Verrataa h(o 1 ): ja h(o 2 ): arvoja. Jos h(o 1 ) = h(o 2 ), ovat O 1 ja O 2 ekvivaletit. Sormejälkimeetelmä suuittelussa oleaista o oikea jouko M löytämie. Yhtäältä tavoiteltavaa o että käytetyt meetelmät tuottavat mahdollisimma uiiki sormejälje ja täte M sisältää paljo todistajiksi sopivia kadidaatteja, toisaalta sormejälje täytyy olla mahdollisimma piei jotta sitä voidaa vertailla tehokkaasti. Nämä tavoitteet ovat selkeästi ristiriidassa, jote soveltuva kompromissi löytämie o tärkeää. 4 Esimerkkiogelmia Tässä kappaleessa kuvataa aluksi kaksi läheisesti toisiisa liittyvää ogelmaa ja iihi Mote Carlo -tyyppisee algoritmii perustuvat ratkaisut, jotka sallivat site pieellä todeäköisyydellä myös virhepäätelmät. Toisee ogelmatyyppii esitä Las Vegas -algoritmi, joka suorituksessa sormejälkiä käytetää hyväksi ilma virhee mahdollisuutta. Molemmat algoritmit käyttävät hyväksee samatyyppisiä sormejälkiä, mutta ovat silti hyvi erityyppiset. 4.1 Tietoliikee Tutkitaa skeaarioita, joissa kahde tietokoee, R 1 ja R 2, muistie sisältöä halutaa vertailla tehokkaasti. Koska tarkoitus o esitellä sormejälkimeetelmiä oletetaa, että jokaisessa ogelmassa tietokoeet ovat ii kaukaa, joko fyysisesti kaukaa tai muute vaa hitaa yhteyde päässä, toisistaa, ettei muistie sisällö suora vertailu ole tehokasta. Tästä syystä algoritmie tehokkuus mitataa iide siirtämä tiedo perusteella. Esimmäisessä tapauksessa halutaa tutkia oko tietokoee R 1 sisältämä bittijoo x {0,1} sama kui tietokoee R 2 sisältämä bittijoo y {0,1}. Determiistie algoritmi lähettäisi data kooaisuudessaa toiselta koeelta toiselle, mikä jälkee vertailu tehtäisii saa(word) kerrallaa. Lisäksi siirrety tiedo eheys aiheuttaa lisäkustauksia. Merkitää bittijooja x = x 1 x 2 x 3...x ja y = y 1 y 2 y 3... y, x i,y i 0,1, i = 1,...,. Number(x) tarkoittaa bittijoo x kymmekataista lukutulkitaa. Mahdolliste todistajie joukoksi otetaa kaikki alkuluvut < 2, merkitää tätä joukkoa Prim( 2 ). Sormejälkialgoritmi toimii seuraavasti 1. R 1 valitsee sormejälje geeroitia varte luvu p Prim( 2 ) 2. R 1 laskee valitu luvu avulla s = Number(x) mod p ja lähettää sekä s: että p: R 2 :lle 3
3. R 2 vastaaottaa s: ja p: ja laskee q = Number(y) mod p Jos q = s, todetaa että x = y, muute x y. Algoritmi toimia kaalta oleaista ovat siirrety tiedo määrä ja algoritmi virhetodeäköisyys. Tiedo määrästä tiedetää, että s p < 2. Tästä seuraa että s tai p vie maksimissaa log 2 2 bittiä, jote koko viesti pituudeksi tulee 2 log 2 2 4 log 2. Jos = 10 16 saadaa siirrettävä tiedo määräksi 4 16 log 2 10 = 256 bittiä, joka o huomattava väheys 10 16 bittii ähde. Virhetodeäköisyyde arvioitia varte jaetaa kaikki p: mahdolliset arvot(alkuluvut jotka ovat pieempiä kui 2, merkitää Prim( 2 )) kahtee joukkoo, iihi jotka aiheuttavat virhee ja iihi jotka eivät). Koska jokaise p Prim( 2 ) valitatodeäköisyys o sama o virhetodeäköisyys huootluvutprim( 2 ) : ssa Prim( 2. ) Alkulukuteoreema perusteella tiedetää, että Prim( 2 ) > 2 2 l. Bad(2 ): maksimiarvoksi voidaa l 2 äyttää 1. Tästä saadaa, että kuvatu algoritmi virhetodeäköisyys o. Tapuksessa = 10 16, virhetodeäköisyydeksi saadaa 0,36892 10 14, mikä ei ole todellie riski. Toie tapaus o laajeettu esimmäisestä. Tässä koee R 1 muistissa o bittijoo x {0,1}. Toise koee R 2 muistissa o bittijoojoukko U = {u 1,u 2,u 3,...,u k },u i {0,1},i = 1,...,k. Halutaa selvittää kuuluuko joo x joukkoo U. Determiistisellä algoritmillä aioa tapa olisi lähettää joo x kokoaisuudessaa koeelle R 2, joka se jälkee vertaisi x:ää jokaisee U: alkioo. Satuaisalgoritmi PSet eteee esimmäisessä tapauksessa kuvatu mukaisesti mutta R 2 laskee p: avulla q i = Number(u i ) mod p, i = 1,...,k, mikä jälkee jos s {q 1,q 2,...,q k } todetaa että x U, muute x U. Kuvatu protokolla vaatima tiedosiirto o triviaalisti sama kui aiemmassa esimerkissä(4 log 2 ), jote tutkitaa järjestelmä virhetodeäköisyyttä. Tilae jaetaa kahtee tapauksee Jos x U, tiedetää että o olemassa j {1,...,k} jolla x = u j ts. Number(x) = Number(u j ) mod m, jote algoritmi toimii varmasti ku x U. Jos x U, merkitää A i sitä tapausta ku ja Number(x) mod p = Number(u i ) mod p,i = 1,...,k A = k i=1 A i, joka o tapaus, jossa PSet tuottaa väärä vastaukse x U. Aiemma esimerki perusteella tiedetää, että ja täte P(A i ) 1 Prim(2) 2 l, kaikille i {1,...,k}. 4
josta seuraa että V irhet PSet (x,u) = V irhet PSet (x,u) 1 2, ku k P(A) = P( k i=1a i ) Σ k i=1p(a i ) Σ k 2 l i=1 = k 2 l, 4 l. Täte PSet o yksipuolise virhee(oe-sided error) Mote Carlo -algoritmi, joka tarkistaa kuuluuko x joukkoo U, ku k 4 l. Molemmissa kuvatuissa ogelmissa algoritmi virhetodeäköisyyttä voidaa pieetää käyttämällä useampaa alkulukua todistajaa. Lisäksi voidaa äyttää, että virhee aiheuttavie alkulukuje määrä o aia maksimissaa 1, jote virheelliste ja hyvie alkulukuje suhdetta voidaa parataa myös kasvattamalla joukkoa, josta alkulukuja valitaa. Algoritmia voidaa amplifioida jopa ii että hyötyje katoamatta algoritmi virhetodeäköisyys saadaa ii pieeksi että muista syistä(rautavika, luoo katastrofi tms.) johtuvie virheide todeäköisyys o suurempi. 4.2 Alimerkkijoo-ogelma Hahmotuistus(patter matchig) o yksi yleisimmistä tekstikäsittelyy ja algoritmeihi liittyvistä ogelmista. Sillä o myös käytäö sovellutuksia yleisesti molekyylibiologiassa. Hahmotuistamise perusteella voidaa jaotella asioita eri kategorioihi tai tehdä hakuja tietojoukosta. Tässä kappaleessa kuvataa sormejälkiä käyttävä tapa tuistaa alimerkkijooja tehokkaasti. Aluksi tuetaa merkkijoo x = x 1 x 2 x 3...x ja teksti y = y 1 y 2...y m aakkostossa Σ(ts. x i Σ, i = 1,..., ja y j Σ, j = 1,...,m). Halutaa selvittää sisältääkö y merkkijoo x. Lisäksi, mikäli x o y: alimerkkijoo, halutaa tietää myös piei ideksi r, jolla x 1 x 2...x = y r y r+1...y r+ 1. Selvyyde vuoksi tässä esimerkissä valitaa aakkostoksi Σ = {0,1}. Jokaiselle k {1,...,m 1} ja r 1,...,m k + 1 merkitä y(r,k) = y r y r+1... y r+k 1 tarkoittaa sitä k-pituista alimerkkijooa, joka alkaa ideksistä r. Aetuille x = x 1 x 2... x ja y = y 1 y 2... y m yksikertaie determiistie algoritmi vertaa x:ää jokaisee y(r,):ää, r = 1, 2,..., m +1. Yksikertaie, jokaise merki vertailuu vasemmalta oikealle perustuva algoritmi suorittaa O( + m) operaatiota etsiessää x:ää y:stä. Alla esitellää sormejälkiä hyväksikäyttävä algoritmi, joka suoriutuu tehtävästä opeammi. Algoritmi suorittamista varte määritellää fuktio f : N N N, joka arvoa pieempiä alkulukuja algoritmissa käytetää. STRING(f)-algoritmi eteee seuraavasti 5
1. Valitaa satuaisesti alkuluku p joukosta P rim(f(, m)). 2. Lasketaa Figer p (x) = Number(X) mod p 3. Lasketaa järjestyksessä Figer p (y(r,)) = Number(y(r,)) mod p ja verrataa Figer p (y(r,)):ää Figer p (x):he, kaikille r {1,2,...,m + 1}.. Jos Figer p (y(r,)) = Figer p (x), verrataa x:ää y(r,):ää. Jokaiselle j {1,2,...,m + 1}, jolle pätee Figer p (y(j,)) = Figer p (x), tarkistetaa vielä että x vastaa oikeasti y(j, ):ää. Jos y(j, ) = x, algoritmi palauttaa j: pieimmäksi ideksiksi josta merkkijoo x löytyi. Muussa tapauksessa jatketaa vertailua Figer r (y(j + 1,)):ästä. Yllä esitelty algoritmi o Las Vegas -tyyppie, koska kaikki osumat tarkistetaa vielä alkuperäisiä merkkijooja käyttäe, mikä estää virheelliste osumie palauttamise. Algoritmi aikakompleksisuutta tutkitaa seuraavaksi. Triviaalisti Figer p (x) tai Figer p (1,) vie aikaa O(). Kaikki sormejäljet Figer p (y(r,)), ku r = 1,...,m + 1 voidaa laskea ajassa O(m). Tämä pitää paikkasa koska valitusta aakkostosta johtue Number(y(r + 1,)) = 2 [Number(y(r,)) 2 1 y r ] + y r+ ja tästä johtue sormejälki Figer p (y(r + 1,)) voidaa laskea Figer p (y(r + 1,)) = (2 [Figer p (y(r,)) (2 1 y r ) mod p] + y r+ ) mod p. Myös millä tahasa muulla aakkostolla voidaa alimerkkijooje lukuarvot laskea edellise alimerkkijoo arvo avulla. Tutkitaa tapaukse, jossa y ei sisällä alimerkkijooa x:ää, aikavaatimukse ylärajaa. Merkitää A r sitä tapausta, jossa silti Figer p (x) = Figer p (y(r,)). Edellisestä kappaleesta tiedetää että virheellise sormejälje todeäköisyys o P(A r ) Täte STRING(f)-algoritmi aikavaatimus o 1 Prim(f(,m)) lf(,m) f(,m) O(m) + Σ m +1 r=1 (1 + Prob(A r ) ), O(m)-ajassa saadaa laskettua Figer p (x) ja kaikki Figer p (y(r,)): arvot. O(m) + m 2 l f(,m) f(,m) Jos valitaa f(,m) = 2 m l( 2 m), saadaa Aikavaatimus STRING( 2 m l( 2 m))(x,y) O(m) Tilatee, jossa x löytyy y:stä aikavaatimus o pieempi, koska algoritmi suoritus loppuu tällöi aiemmi. 6
5 Käytäö sovelluksia Yllä kuvatut esimerkit ovat luoteeltaa hyvi teoreettisia, jote tässä kuvaa muutamia käytäö sovelluksia, missä sormejälkitekiikoista o hyötyä. Useat sormejälkitekiikoide käytäö sovellukset perustuvat Las Vegas -algoritmeihi, joissa jotai vaikeaa hakua opeutetaa filtteröimällä tietoa alimerkkijooesimerki(ks. 4.2) tapaisesti ja hakemalla tästä suppeammasta joukosta osumia tehokkaasti. Tällaisia ogelmia o usei esimerkiksi tekstikäsittelyssä. Mote Carlo -tyyppie esimerkki esitetää Idetifyig redudacy i source code usig figerprits -kofferessipaperissa[2] tapa käyttää sormejälkiä toisteisuude tutkimisee isossa lähdekoodimäärässä. Tämäki meetelmä perustuu osittai kappaleessa 4.2 esitety alimerkkijooogelma ratkaisuu. Tässä tapauksessa lähdekoodeista geeroidaa sormejäljet vastaavasti kui alimerkkijooesimerki tekstistä y. Toisi kui alimerkkijooesimerkissä tässä käytettyje alimerkkijooje pituus o joki rivimäärä lähdetiedostoissa, mikä aiheuttaa se että eri kohdissa syötettä sormejälki geeroidaa eri pituisista merkkijooista. Koska tietoa o huomattava määrä sormejälkie geeroimiseki jälkee, poimitaa kaikista geeroiduista sormejäljistä e, jotka kattavat pisimmät merkkijoot, kuvaamaa kaikkia merkkijooja, jotka sisältyvät sormejälkee. Jäljelle jääeistä sormejäljistä poistetaa vielä e jotka esiityvät vai kerra, sekä yhdistetää peräkkäiset sormejäljet, jotka esiityvät joka paikassa samalla tavalla peräkkäi. Nyt jäljelle jääeide sormejälkie perusteella voidaa tutkia mahdollisia toisteisuus tarkemmi. 6 Yhteeveto Sormejälkimeetelmiä voidaa käyttää hyväksi tietytyyppisissä päätösogelmissa. Sormejälkie tarkoituksea o kuvata iso tietojoukko pieempää tilaa, site että sormejälkie perusteella tehty vertailu o tehokkaampaa. Sormejälkitekiikoide käyttötapoja o sekä Mote Carlo -tyyppisissä että Las Vegas -tyyppisissä algoritmeissa. Mote Carlo -algoritmeissa ogelma ratkaisu perustuu suoraa tietojoukoista tuotettuu sormejälkee, mikä sormejälje omiaisuuksie vuoksi aiheuttaa virheitä tietyllä todeäköisyydellä. Usei kuiteki virhetodeäköisyys o ii piei(tai voidaa amplifioimalla saattaa hyvi pieeksi), että sitä ei tarvitse ottaa huomioo. Toie tapa käyttää sormejälkiä o käyttää iitä tiedo filtteröitii jolloi tarkempi vertailu voidaa tehdä sille tietojoukolle, joka sormejälki vastaa toista vertailtavaa. Tässä tapauksessa virheitä ei tule ja täte algoritmi o Las Vegas -tyyppie, mutta filtteröiti vähetää silti vaadittavie vertailuje määrää ja site tehostaa ogelma ratkaisua. 7
Viitteet [1] Juraj Hromkovic. Desig Ad Aalysis of Radomized Algorithms, Itroductio to Desig Paradigms, chapter 4. Spriger, 2005. [2] J. Howard Johso. Idetifyig redudacy i source code usig figerprits, 1993. 8