MS-A0401 Diskreetin matematiikan perusteet Osa 2: Relaatiot ja funktiot Riikka Kangaslampi Syksy 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto
Relaatiot
Relaatio Määritelmä 1 Relaatio joukosta A joukkoon B on mikä tahansa joukko R A B. Joukko A on relaation R lähtöjoukko, joukko B sen maalijoukko. Jos A = B, sanotaan, että R on relaatio joukossa A. Huomautus Määritelmää yllä kutsutaan usein myös binääriseksi relaatioksi. (Vastaavasti voidaan määritellä n-paikkainen relaatio joukkojen A 1,..., A n välillä joukon A 1... A n osajoukkona.) Sovelluksia mm. Relaatiotietokannat, ohjelmointikielten kääntäjät. 1 / 35 R. Kangaslampi MS-A0401
Relaatio Esimerkki 2 Olkoon A = {1, 2, 3, 4}. Määritellään relaatio R joukossa A säännöllä R = {(a, b) : a on b:n tekijä}. Tällöin R = {(1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (2, 4), (3, 3), (4, 4)}. Huom: Yllä jaollisuutta (a, b) R on tapana merkitä a b. Yleisestikin relaatioon pyritään liittämään sopiva symboli (esim., =,, ) ja merkitsemään vastaavasti. Merkitsemme tällä kurssilla yleistä relaatiota a b emmekä arb kuten lähteissä. 2 / 35 R. Kangaslampi MS-A0401
Relaatio suunnattuna verkkona Esimerkki 3 Olkoon A = {0, 1, 2}, B = {a, b} ja R = {(0, a), (0, b), (1, a), (2, b)}. Tällöin relaatio R voidaan esittää suunnattuna verkkona kuten alla: 0 1 2 a b Kysymys Jos A = m ja B = n, montako relaatiota on olemassa joukosta A joukkoon B? (Vastaus: 2 mn.) 3 / 35 R. Kangaslampi MS-A0401
Relaatioiden luokittelua Määritelmä 4 Relaatio joukossa A (merkitään ) on refleksiivinen, jos x A : x x symmetrinen, jos x, y A : x y y x transitiivinen, jos x, y, z A : (x y ja y z) x z antisymmetrinen, jos x, y A : (x y ja y x) x = y. Esimerkki 5 Joukon Z relaatio = on refleksiivinen, symmetrinen, transitiivinen ja antisymmetrinen. Joukon N relaatio (jaollisuus) on antisymmetrinen, refleksiivinen ja transitiivinen. 4 / 35 R. Kangaslampi MS-A0401
Ekvivalenssirelaatio Määritelmä 6 Jos relaatio on refleksiivinen, symmetrinen ja transitiivinen, sitä kutsutaan ekvivalenssirelaatioksi tai lyhyesti ekvivalenssiksi. Esimerkki 7 C-ohjelmointikielen kääntäjä tarkistaa muuttujien nimistä vain kahdeksan ensimmäistä merkkiä ja mikäli ne ovat samoja, katsoo muuttujat samoiksi. (Lähde: Rosen.) Määritellään äärellisten merkkijonojen joukossa relaatio R asettamalla (x, y) R, jos x = y tai jos x:n ja y:n kahdeksan ensimmäistä merkkiä ovat samat. Tällöin R on ekvivalenssi. 5 / 35 R. Kangaslampi MS-A0401
Ekvivalenssirelaatio Ekvivalenssirelaatio ilmaisee yleistä samuutta. Riippuu tilanteesta, millä kriteereillä samuus määritellään, mutta jokainen ekvivalenssirelaatio jakaa joukkonsa samojen alkioiden muodostamiin ekvivalenssiluokkiin: Määritelmä 8 Olkoon R ekvivalenssirelaatio joukossa A (merkitään ). Alkion a A ekvivalenssiluokka on joukko [a] = {x A : a x}. 6 / 35 R. Kangaslampi MS-A0401
Ekvivalenssirelaatio Pätee Jos joukossa A on annettu ekvivalenssi, niin sen ekvivalenssiluokat jakavat A:n erillisiin osiin. Toisin sanoen kaikille a, b A pätee joko [a] = [b] tai [a] [b] =. Tarkemmin: Book of Proof, 11.2 & 11.3, erityisesti kuva sivulla 184. (Moduloluvut ovat neljännen viikon asiaa.) 7 / 35 R. Kangaslampi MS-A0401
Järjestysrelaatio Vastaavasti määritellään yleinen järjestyksen käsite relaationa, joka on antisymmetrinen ja transitiivinen. Esimerkki 9 Vaatteiden pukemisjärjestys on osittainen järjestys (eng. partial order; poset = partially ordered set): tietyt vaatekappaleet kannattaa pukea ennen toisiaan, mutta ei ole yhtä yksiselitteistä järjestystä. (Kuva taululla.) 8 / 35 R. Kangaslampi MS-A0401
Funktiot
Funktio Määritelmä 10 Funktio joukosta A joukkoon B on relaatio f joukosta A joukkoon B siten, että kullekin lähtöjoukon alkiolle a löytyy täsmälleen yksi maalijoukon alkio b, jolle (a, b) f. Esimerkki 11 lähtöjoukko maalijoukko lähtöjoukko maalijoukko 9 / 35 R. Kangaslampi MS-A0401
Funktio Huomioita Funktio siis rajoittaa relaatiota kahdella tavalla: 1) kaikkien lähtöjoukon alkioiden on oltava relaatiossa jonkun maalijoukon alkion kanssa, 2) maalijoukon alkio on yksikäsitteinen. Tapana on funktion tapauksessa merkitä f (a) = b eikä (a, b) f. Funktiota f joukosta A joukkoon B merkitään lyhyesti f : A B. 10 / 35 R. Kangaslampi MS-A0401
Funktio Huomioita (jatkuu) Määritelmä tarkasti: a A, b, c B : ( f (a) = b ja f (a) = c ) b = c. Joskus funktiolle ei tarvita kirjainta; voidaan esimerkiksi ilmaista reaaliluvun korottaminen neliöön funktiona R R, x x 2. (Tässä f (a) = b on korvattu ilmaisulla a b.) Tarkemmin: Book of Proof, 12.1. 11 / 35 R. Kangaslampi MS-A0401
Funktio Esimerkki 12 Funktion f = {(x, 4x + 5) : x Z} Z Z määrittelyjoukko (domain) on Z maalijoukko (codomain) on Z arvojoukko (range) on {4x + 5 : x Z} = {..., 7, 3, 1, 5, 9,...} Esimerkki 13 Lukujono on funktio N R. Algoritmien nopeuksien vertailukohteena käytetään lukujonoja muotoja f (n) = log k n, f (n) = n k ja f (n) = k n (jollekin k N) sekä näiden yhdistelmiä. 12 / 35 R. Kangaslampi MS-A0401
Injektio, surjektio, bijektio Määritelmä 14 Funktio f : A B on injektio (tai yksi-yhteen ), jos x, y A : x y f (x) f (y) surjektio (tai peittävä ), jos b B a A : f (a) = b bijektio, jos se on sekä injektio että surjektio. Esimerkki 15 injektio surjektio bijektio 13 / 35 R. Kangaslampi MS-A0401
Injektio, surjektio, bijektio Esimerkki 16 Onko kuvaus f : Z Z Z, f (n) = (2n, n + 3), bijektio? Kuvaus on injektio, jos f (n) = f (m) = m = n. Nyt: f (n) = f (m) = (2n, n + 3) = (2m, m + 3) = (2n = 2m) (n + 3 = m + 3) = (n = m) (n = m) = n = m eli kuvaus todellakin on injektio. Kuvaus on surjektio, jos kaikilla (x, y) Z Z on olemassa n Z siten, että f (n) = (x, y), eli että (2n, n + 3) = (x, y). Tämä ei ole totta: esimerkiksi jos (x, y) = (2, 5), pitäisi olla samanaikaisesti 2n = 2 ja n + 3 = 5 eli n = 1 ja n = 2. Kuvaus siis ei ole bijektio. 14 / 35 R. Kangaslampi MS-A0401
Injektio, surjektio, bijektio Bijektiiviset funktiot voidaan kääntää: Määritelmä 17 Bijektiivisen funktion f : A B käänteisfunktio on funktio g : B A, missä g(b) on se yksikäsitteinen luku a, jolle f (a) = b. Huomioita Voidaan osoittaa, että käänteisfunktio on yksikäsitteinen (ts. jos g ja h ovat f :n käänteisfunktioita, niin g = h). Funktion f käänteisfunktiota merkitään f 1. Merkintää f 1 käytetään eri tarkoituksessa alkukuvan käsitteen yhteydessä, tästä lisää hetken kuluttua. 15 / 35 R. Kangaslampi MS-A0401
Injektio, surjektio, bijektio Määritelmä 18 Bijektiivistä funktiota A A (oletetaan A < ), kutsutaan joukon A permutaatioksi. Esimerkki 19 Olkoon A = {1, 2, 3}. Määritellään permutaatio f : A A asettamalla ( f (1) ) = 3, f (2) = 2, f (3) = 1. Tiiviimmin matriisina: 1 2 3 f =. Nyt f 1 = f. 3 2 1 16 / 35 R. Kangaslampi MS-A0401
Yhdistetty funktio Määritelmä 20 Funktioiden f : A B ja g : B C yhdistetty funktio on g f : A C, (g f )(x) = g ( f (x) ). Huomioita Määritelmässä f :n maalijoukko = g:n lähtöjoukko. Määritelmä toimii myös, kun f :n maalijoukko g:n lähtöjoukko. Yhdistäminen ei ole vaihdannainen (eng. commutative): yleensä g f f g. Yhdistäminen on liitännäinen (eng. associative): f (g h) = (f g) h. Tarkemmin: Book of Proof, luku 12.4. 17 / 35 R. Kangaslampi MS-A0401
Yhdistetty funktio Esimerkki 21 Määritellään ( joukon ) {1, 2, ( 3} permutaatiot ) 1 2 3 1 2 3 f = ja g =. Tällöin 3 2 1 2 1 3 ( ) ( ) 1 2 3 1 2 3 g f = ja f g =. 3 1 2 2 3 1 18 / 35 R. Kangaslampi MS-A0401
Kuva ja alkukuva Tilanteessa f (a) = b sanotaan, että b on a:n kuva ja a on b:n alkukuva. (Funktiota kutsutaan joskus nimellä kuvaus.) Sama terminologia on voimassa yleisemmin joukoille: Määritelmä 22 Olkoon f : X Y. Joukon A X kuva on joukko {f (a) : a A} Y. Joukon B Y alkukuva on joukko {x X : f (x) B} X. Joukon A kuvaa merkitään f (A) ja joukon B alkukuvaa merkitään f 1 (B). 19 / 35 R. Kangaslampi MS-A0401
Kuva ja alkukuva Huomioita Kuva ja alkukuva ovat aina hyvin määriteltyjä. Erityisesti alkukuva f 1 (B) on aina olemassa, vaikka f ei olisi bijektio. Kuvan ja alkukuvan määritelmät toimivat myös relaatiolle. Itse asiassa mikä tahansa relaatio voidaan kääntää (ks. BoP luku 12.5), mutta funktion käänteisrelaatio ei ole funktio ellei alkuperäinen funktio ole bijektio. Tarkemmin: Book of Proof, luku 12.6. 20 / 35 R. Kangaslampi MS-A0401
Funktiot ja joukko-operaatiot Lause 23 Kaikille funktioille f ja kaikille lähtö- tai maalijoukon osajoukoille A, B pätee: A B f (A) f (B) A B f 1 (A) f 1 (B) f (A B) = f (A) f (B) f 1 (A B) = f 1 (A) f 1 (B) f 1 (A B) = f 1 (A) f 1 (B) f 1 (A \ B) = f 1 (A) \ f 1 (B). Siis: Alkukuva säilyttää kaikki joukko-operaatiot, mutta kuva vain yhdisteen ja osajoukkouden. 21 / 35 R. Kangaslampi MS-A0401
Funktiot ja joukko-operaatiot Erityisesti siis lauseen kaksi viimeistä eivät yleisesti päde kuvajoukoille, kuten vastaesimerkit etsimällä huomaamme: Esimerkki 24 (Tehtävä) Etsi sellainen esimerkkifunktio ja joukot, joille f (A B) f (A) f (B) f (A \ B) f (A) \ f (B). Ensimmäiseen kohtaan sopii vastaesimerkiksi tilanne, jossa A B on tyhjä joukko, mutta f (A) f (B) ei, ja toiseen vastaavasti tilanne, jossa f (A) \ f (B) on tyhjä joukko, mutta f (A \ B) ei ole. 22 / 35 R. Kangaslampi MS-A0401
Joukon mahtavuus Määritelmä 25 Kaksi joukkoa A ja B ovat yhtä mahtavia, jos on olemassa bijektio A B. Tällöin merkitään A = B. Huomioita A = n tarkoittaa, että on olemassa bijektio A {1, 2,..., n}. Joukko A on äärellinen jos on olemassa n N siten, että A = n. Jos joukko ei ole äärellinen, se on ääretön. Määritelmässä joukkojen A ja B ei tarvitse olla äärellisiä. Joukko A on numeroituva (eli numeroituvasti ääretön) jos A = N ja ylinumeroituva jos A > N. 23 / 35 R. Kangaslampi MS-A0401
Joukon mahtavuus Esimerkki 26 Pätee N = Z = Q R. Joukot N, Z ja Q ovat siis numeroituvia ja R on ylinumeroituva. Todistus: N = Z. Koska funktio f : N Z, missä f (0) = 0, f (2k 1) = k ja f (2k) = k kun k 1, on bijektio, niin joukot ovat yhtä mahtavia. 24 / 35 R. Kangaslampi MS-A0401
Joukon mahtavuus Todistus: N = Q. N = Q, koska voimme järjestää murtoluvut jonoon, ja siis konstruoida bijektion, seuraavalla tavalla: 0 1 1 2 1 3 1 4 1 5 1... 1 1 2 1 3 1 4 1 5 1... 1 2 2 2 3 2 4 2 5 2... 1 2 2 2 3 2 4 2 5 2... 1 3 2 3 3 3 4 3 5 3... Hypäten jo listalla olevien lukujen yli saamme seuraavan bijektion: f (0) = 0, f (1) = 1, f (2) = 2, f (3) = 1, f (4) = 1 2, f (5) = 2, f (6) = 3, f (7) = 4, f (8) = 3, f (9) = 1 2, f (10) = 1 3, f (11) = 3, f (12) = 4, f (13) = 5,... 2 25 / 35 R. Kangaslampi MS-A0401
Joukon mahtavuus Todistus: Q R. Todistus on harjoitustehtävänä. 26 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Lukujono on funktio N R. Esimerkki 27 Funktio f (n) = n antaa lukujonon 0,1,2,3,4,... Funktio g(n) = n 3 antaa lukujonon 0,1,8,27,... Tarkastellaan lukujonoja ja niiden kasvunopeuksia hieman tarkemmin, tavoitteena saada keinoja arvioida laskenta-algoritmien nopeuksia. 27 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Määritelmä 28 Lukujono f : N R on kasvava, jos pätee kaikille n, m N. Esimerkki 29 n m f (n) f (m) Jonot f (n) = 1, f (n) = log n, f (n) = n, f (n) = n log n, f (n) = n 2, f (n) = 2 n ja f (n) = n! ovat kasvavia. Tarkistetaan esimerkkinä f (n) = n 2 : Olkoon n m eli n m 0. Halutaan f (n) f (m) eli n 2 m 2 eli n 2 m 2 0 eli (n m)(n + m) 0. Tämä pätee, koska lähtökohtana oli n m eli n m 0. 28 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Määritelmä 30 Lukujono f : N R kasvaa rajatta, jos M N n 0 N : n n 0 f (n) M. (1) Lukua M tulee ajatella suurena ylärajaehdokkaana. Implikaatio 1 ilmaisee, että f (n) saavuttaa minkä tahansa rajan M, kunhan n kasvaa tarpeeksi suureksi. Esimerkki 31 Osoitetaan, että lukujono f (n) = n 2 kasvaa rajatta: Olkoon M N. Halutaan löytää n 0 N siten, että n n 0 n M. Koska n M n 2 M (f on kasvava), niin luvuksi n 0 kelpaa mikä tahansa luonnollinen luku, joka on suurempi tai yhtä suuri kuin M. 29 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Huom: Rajattoman kasvun määritelmä ei edellytä, että lukujono on kasvava. Lukujono voi heilahdella ja kasvaa keskimäärin. Esimerkiksi f (n) = n + n sin(n) ei ole kasvava, mutta kasvaa rajatta. 40 20 0 10 20 30 40 50-20 -40 30 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Määritelmä 32 Olkoot f (n) ja g(n) kaksi lukujonoa. Sanotaan, että f :n asymptoottinen kasvunopeus on enintään suuruusluokkaa g, jos on olemassa vakiot C N ja n 0 N siten, että n n 0 f (n) Cg(n). Toisin sanoen f (n) ei suurilla n voi kasvaa nopeammin kuin vakio kertaa g(n). Tätä merkitään myös f (n) = O(g(n)). Vastaavia asymptoottisia suuruusluokkamerkintöjä on useita, mutta tämä iso-o ( big-o, ordo-notaatio) lienee yleisin. 31 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Esimerkki 33 Jonon f (n) = n 2 + n asymptoottinen kasvunopeus on enintään suuruusluokkaa n 2, koska n 2 + n n 2 + n 2 = 2n 2 kaikilla n N. Määritelmän 32 vakioksi C voidaan siis ottaa luku 2 ja luvuksi n 0 voidaan ottaa luku 0 (mitkä tahansa suuremmatkin kelpaavat). Esimerkki 34 Ilmaisu f (n) = O(1) tarkoittaa, että jono f on rajoitettu. 32 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Saman ongelman ratkaisuun on usein olemassa monia algoritmeja, joiden nopeus voi vaihdella huomattavasti. Algoritmin aikavaativuus on O(f (n)), jos algoritmin ajankäyttö kasvaa korkeintaan samassa suhteessa kuin funktio f (n), kun muuttuja n kuvaa tiedon määrää. Algoritmin suoritus vie siis aikaa korkeintaan k f (n) jollain vakiolla k, kun n on riittävän suuri. Esimerkki 35 Algoritmien nopeuksien vertailukohteena käytetään usein lukujonoja muotoja f (n) = log k n, f (n) = n k ja f (n) = k n (jollekin k N) sekä näiden yhdistelmiä. 33 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Käsiteltävän tiedon määrän kaksinkertaistuessa (eli n 2n) vakioaikaisen algoritmin O(1) nopeus ei muutu, logaritminen algoritmi O(log n) tarvitsee yhden lisäaskeleen, lineaarinen algoritmi O(n) tarvitsee kaksinkertaisen ajan, neliöllinen algoritmi O(n 2 ) tarvitsee nelinkertaisen ajan, kuutiollinen algoritmi O(n 3 ) tarvitsee kahdeksankertaisen ajan, O(n k )-aikainen algoritmi tarvitsee 2 k -kertaisen ajan, eksponentiaalisen algoritmin O(k n ) ajankäyttö kasvaa räjähdysmäisesti. 34 / 35 R. Kangaslampi MS-A0401
Lukujonojen kasvunopeuksista Esimerkki 36 Mikä on seuraavan algoritmin aikavaativuus? long kertoma (int n) (1) { long k; (2) int i; (3) k = 1; (4) for (i=2; i<=n; i=i+1) (5) { k=k*i; } (6) return (k); (7) } Vast: O(n). (Kukin rivi suoritetaan vakioajassa, toisto riveillä 4-5 suoritetaan n 1 kertaa.) 35 / 35 R. Kangaslampi MS-A0401