Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon harjoituksissa. Kotitehtävät 15-16 tulee palauttaa seuraavan alkuviikon harjoituksiin paperilla tai pdf-muodossa kurssin MyCourses-sivuille maanantaihin klo 20.00 mennessä. Sama kellonaika on myös viikoittaisten verkkotehtävien dl, joskin verkkotehtävät kannattaa tehdä ennen palautettavia kotitehtäviä. Alkuviikko: joukko-oppi, iso-o Tuntitehtävä 9: a) Tutustu Ordoon eli Ordo eli Iso-O -merkintään f O(g): Jos g on funktio, joka on määritelty kaikilla riittävän isoilla kokonaisluvuilla niin f O(g) kertoo että myös f on määritelty kaikilla riittävän isoilla kokonaisluvuilla ja on olemassa vakiot C f ja N f siten, että f(n) C f g(n), n N f. Tämän merkinnän käyttö tarkoittaa myös sitä, ettei ole erityisen oleellista mitä vakiot C f ja N f oikeasti ovat tai miten pieniksi ne voi valita. Usein kirjoitetaan f O(g):n sijasta f(n) = O(g(n)) ja silloin merkinnällä tarkoitetaan, että funktiolle f pätee f(n) C g(n) kun n N. (Lisätietoa esim Wikipediasta haulla "Big O notation".) b) Pätevätkö seuraavat väitteet? i) Jos f O(n 2 ) ja g O(n 3 ) niin f g O(n 5 ). ii) Jos 2 on pienin luku p f siten, että f O(n p f ) ja 3 on pienin luku pg siten, että g O(n pg ), niin 5 on pienin luku p siten, että f g O(n p ). b) i) Jos f O(n 2 ) ja g O(n 3 ) niin f g O(n 5 ), koska f(n) C f n 2 kun n N f ja g(n) C g n 3 kun n N g joten f(n)g(n) C f C g n 2+3 kun n max(n f, N g ). Huom: Vastaava tulos ei päde jakolaskun kohdalla, koska O(g) antaa vain ylärajan, ei alarajaa. 1
ii) Jos f(n) = n 2 ja g(n) = n 3 niin f O(n 2 ), g O(n 3 ) ja 5 on (tietenkin?) pienin luku p siten, että f g O(n p ). Mutta jos yleisesti, tuntematta funktioita, tiedetään vain että 2 on pienin luku p f siten, että f O(n p f ) ja 3 on pienin luku pg siten, että g O(n pg ) niin siitä ei välttämättä seuraa, että 5 olisi pienin luku p siten, että f g O(n p ). Voimme esimerkiksi valita f(n) = { n 2, n on pariton 0, n on parillinen, ja g(n) = jolloin f(n)g(n) = 0 kaikilla n ja f g O(n p ) kaikilla p Z. { 0, n on pariton n 3, n on parillinen Tuntitehtävä 10: a) Jos meidän pitää laskea x n ja laskemme x 2 = x x, x 3 = x 2 x jne. niin joudumme laskemaan n 1 kertolaskua. Tehokkaampi tapa on laskea x 2 = x x, x 4 = x 2 x 2 jne. ja sitten kertoa tarvittavat x 2j :n potenssit keskenään, jotta saisimme tulokseksi x n. Määritä kohtuullisen yksinkertainen funktio f(n) siten, että kertolaskujen lukumäärä tällä menetelmällä on O(f(n)). b) Jos meillä on jono lukuja x = [x 1, x 2,... x n ] niin voimme tuottaa uuden jonon, missä alkiot on järjestetty suuruusjärjestykseen, esimerkiksi seuraavall algoritmilla: function x=jarj(x) n=max(size(x)); for i=1:n for j=1:i if x(i)<x(j) x([i,j])=x([j,i]); % eli jonon ko. alkioiden paikat vaihdetaan end end end endfunction Jos nyt x on lukujono, jonka pituus on n, niin olkoon v(n) tämän algoritmin tekemien vertailujen (x(i)<x(j)) lukumäärä kun se laskee Jarj(x). Määritä pienimmät mahdolliset ei-negatiiviset luvut a ja b siten, että v O(n a log(n) b ). a) Oletamme, että n > 1 ja kirjoitamme tämän luvun binäärilukuna : n = a k 2 k + a k 1 2 k 1 +... + a 1 2 + a 0, missä a j {0, 1}, j = 0, 1,..., k 1 ja a k = 1. Silloin k = log 2 (n). Lausekkeiden x, x 2, x 4,... x 2k laskemiseksi meidän pitää suorittaa k kertolaskua ja kun kerromme ne potenssit x 2j, j = 0, 1,..., k, joilla a j = 1, keskenään meidän pitää myös suorittaa korkeintaan k kertolaskua. Kertolaskujen yhteismääräksi tulee näin ollen korkeintaan 2k = 2 log 2 (n). Näin ollen voimme sanoa, että kertolaskujen lukumäärä on (tai kuuluu joukkoon) O(log 2 (n)) (tai O(log(n)) jos emme halua välittää logaritmin kantaluvusta). 2
b) Vertailujen lukumääräksi tulee n i v(n) = 1. Koska lasketaan yhteen ykkösiä saadaan yläraja i=1 j=1 v(n) n n 1 = i=1 j=1 n n = n n = n 2. i=1 Näin ollen pätee varmasti v O(n 2 ) eli v O(n a log(n) b )) missä a = 2 ja b = 0. Jos haluamme varmistua siitä, että lukuja a = 2 ja b = 0 ei voida vaihtaa pienempiin voimme laskea n v(n) = i = 1 2 n(n + 1) 1 2 n2 i=1 ja todeta, että jos a < 2 niin pätee 1 2 n2 > Cn a log(n) b kun n on riittävän iso, olivatpa C ja b mitkä tahansa luvut. Huomaa, että ajatus iso-o:n takana on siis, että 1 n(n + 1) on samaa suuruusluokkaa kun 2 n 2 ja että tavallisesti saadaan helposti pelkästään yläraja, kuten n 2 tässä, mutta harvemmin tarkka lauseke, kuten 1 n(n + 1). 2 Kotitehtävä 11: Olkoot A, B, C joukkoja. Todista a) A (B C) = (A B) (A C) b) A (B \ C) = (A B) \ (A C). a) Oletetaan aluksi, että kyse on epätyhjistä joukoista. Ensin avaamme joukkojen määritelmät: Sitten tehdään muutos A (B C) = (A B) (A C), ja lopulta puretaan TAI-ehto kahden joukon yhdisteeksi. A (B C) ={(x, y) : (x A) (y (B C))} ={(x, y) : (x A) ((y B) (y C))} ={(x, y) : ((x A) (y B)) ((x A) (y C))} ={(x, y) : (x A) (y B)} {(x, y) : (x A) (y C)} =(A B) (A C) Sitten tutkitaan vielä tyhjien joukkojen tapaukset: Jos A on tyhjä, on kaikki sen karteesiset tulot tyhjiä, joten yhtäsuuruus pätee. Samoin jos joukko C tai B on tyhjä, niin sen karteesinen tulo on tyhjä ja väite on muotoa A B = (A B). Vielä todetaan, että myös tapaus B C = johtaa yhtäsuuruuteen. 3
b) Jälleen avataan käsitteet. JA-merkkejä voidaan järjestellä uudelleen, ja toistaa vaatimus (x A). Viimeisessä askeleessa todetaan, että y:n kuuluvuus- ja kuulumattomuusehto muodostavat kahden joukon erotuksen. A (B \ C) ={(x, y) : (x A) (y B \ C)} ={(x, y) : (x A) (y B y / C)} ={(x, y) : ((x A) (y B)) (y / C)} ={(x, y) : ((x A) (y B)) ((x A) (y / C))} ={(x, y) : (x A) (y B)} \ {(x, y) : (x A) (y C)} =(A B) \ (A C) Entä tyhjät joukot? Jos A on tyhjä, on kaikki karteesiset tulot tyhjiä ja väite pätee. Jos taas B \C =, on oltava B C. Tällöin (A B) (A C), ja oikealla puolella oleva joukko on tyhjä. Kotitehtävä 12: Olkoot A, B, C, D joukkoja. a) Muodosta negaatio väitteelle (A C ja B D) (A B) (C D). b) Todista oikeaksi joko a-kohdan väite tai sen negaatio. c) Päteekö a-kohdan väitteelle käänteinen Perustele. (A B) (C D) (A C ja B D)? a) Väitteenä siis on, että kaikille joukoille A, B, C, D ehdosta (A C ja B D) seuraa (A B) (C D). Väite, joka on tosi vain silloin kun tämä väite on epätosi, on se, että on olemassa jotkut joukot A, B, C, D, joille pätee (A C ja B D) mutta ei (A B) (C D). Lauseena: A, B, C, D : (A C B D) ((A B) (C D)) Yleisen pätevyyden negaatio on siis vastaesimerkin olemassaolo. b) Osoitetaan a-kohdan väite todeksi. Oletetaan vasen puoli, eli että A C ja B D. Nyt otetaan jokin joukon A B:n alkio (a, b). Koska a A, on myös a C. Samoin b D. Toisin sanoen (a, b) (C D). Koska tämä pätee kaikille A B:n alkioille, on se C D:n osajoukko: (A B) (C D). 4
c) Käänteisen väitteen kumoamiseksi riittää yksikin vastaesimerkki: valitaan A = {1}, B =, C = D = {2}. Nyt A B on tyhjä joukko, koska A:sta ei voida valita yhtäkään alkiota parin ensimmäiseksi. Tämä tyhjä joukko on jokaisen joukon osajoukko, eli (A B) (C D). Kuitenkaan A ei sisälly selvästikään joukkoon C. Siispä väite ei päde kaikille joukoille A, B, C, D. Sen sijaan jos vaaditaan, että joukot ovat epätyhjiä, väite pätee ja nuoli voidaan vaihtaa ekvivalenssiksi. Loppuviikko: relaatiot, funktiot Tuntitehtävä 13: Olkoon A = {1, 2, 3}, B = {4, 5} ja R = (A A) (B B). Perustele, miksi R on ekvivalenssirelaatio joukossa A B, ja määritä kaikki sen ekvivalenssiluokat. R koostuu kaikista A:n ja B:n sisäisistä pareista. Silloin siihen sisältyvät kaikki parit (a, a), jolloin reflektiivisyysvaatimus täyttyy. Myös, jos (a, b) R, on se joukon sisäinen ja siten myös käänteinen relaatio löytyy, (b, a), eli relaatio on symmetrinen. Lisäksi, koska joukkojen A ja B leikkaus on tyhjä, ei relaatio voi "hypätä"joukosta toiseen. Siis jos (a, b) R ja (b, c) R, kuuluvat a ja c samaan joukkoon A tai B, eli myös relaatio (a, c) R (transitiivisuus). Koska sekä refleksiivisyys, symmetrisyys että transitiivisuus täyttyvät, on R ekvivalenssirelaatio joukossa A B ja sen ekvivalenssiluokat ovat A ja B. Tuntitehtävä 14: Onko funktio f : R N N R, f(x, n) = (n, 3nx) bijektio? Jos on, niin mikä on sen käänteisfunktio? Osoitetaan injektiivisyys: Olkoon (x 1, n 1 ), (x 2, n 2 ) R N siten, että f((x 1, n 1 )) = f((x 2, n 2 )). Osoitetaan, että (x 1, n 1 ) = (x 2, n 2 ) Pätee siis (n 1, 3n 1 x 1 ) = (n 2, 3n 2 x 2 ) josta nähdään heti että n 1 = n 2. Tätä tietoa käyttäen saadaan parien jälkimmäisten osien yhtäsuuruudesta 3n 1 x 1 = 3n 2 x 2 n 1 x 1 = n 1 x 2 x 1 = x 2 jossa n 1 saatettiin jakaa pois koska se ei ole koskaan nolla. Eli kuvien yhtäsuuruudesta seurasi lähtöpisteiden yhtäsuuruus, joten f on injektio. Osoitetaan surjektiivisuus: olkoon (m, y) N R. Halutaan löytää (x, n) R N siten, että f((x, n)) = (m, y). (n, 3xn) = (m, y) n = m 3xm = y x = joka on määritelty koska nimittäjä m N ei ole koskaan nolla. Eli löytyi ratkaisu ( y, m) jokaiselle maalijoukon alkiolle, joten f on surjektio. Yhdistettynä injektiivisyyteen tämä osoittaa f:n 3m bijektiivisyyden. f:n käänteisfunktio löydettiin samalla kun osoitettiin surjektiivisuus: f 1 : N R R N, f 1 (n, x) = ( x 3n, n) 5 y 3m
Kotitehtävä 15: Muodosta pienin joukon A = {1, 2, 3, 4, 5, 6, 7, 8} ekvivalenssirelaatio, joka sisältää järjestetyt parit (1, 4), (2, 5), (6, 8) ja (7, 4). (Pienin siinä mielessä, että se A A:n osajoukkona sisältää mahdollisimman vähän alkioita.) Muodosta tämän ekvivalenssirelaation ekvivalenssiluokat eli joukko A:n ei-tyhjiä ja pistevieraita osajoukkoja, joiden unioni on A siten, että alkiot x ja y kuuluvat samaan osajoukkoon jos ja vain jos (x, y) kuuluu kyseiseen ekvivalenssirelaatioon. Ekvivalenssirelaatio on refleksiivinen, symmetrinen ja transitiivinen joten tässä tapauksessa pienin relaatio, joka sisältää annetut parit on R = {(1, 4), (4, 1), (7, 4), (4, 7), (1, 7), (7, 1), (2, 5), (5, 2), (6, 8), (8, 6), Tällä relaatiolla on seuraavat ekvivalenssiluokat: (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8)}. A = {1, 4, 7} {3} {2, 5} {6, 8}. Kotitehtävä 16: Osoita, että relaatio R = {( (m, n), (p, q) ) m q = n p } joukossa Z (Z\{0}) on ekvivalenssirelaatio. Käytä pelkästään kokonaislukujen laskutoimituksia ja -sääntöjä (eli ei mitään jakolaskuja). Voit olettaa tunnetuksi, että kahden kokonaisluvun tulo on 0 ainoastaan jos ainakin toinen luvuista on 0. Mitä tämän relaation ekvivalenssiluokat ovat? Meidän pitää osoittaa, että tämä relaatio on refleksiivinen, symmetrinen ja transitiivinen. Jos (m, n) Z (Z \ {0}) niin m n = m n joten ( (m, n), (m, n) ) R ja R on refleksiivinen. Jos ( (m, n), (p, q) ) R niin m q = p n jolloin p n = m q josta seuraa, että ( (p, q), (m, n) ) R eli R on symmetrinen. Jos ( (m, n), (p, q) ) R ja ( (p, q), (s, t) ) R niin m q = p n, p t = s q. Nyt kerromme edellisen yhtälön molemmat puolet luvulla t ja jälkimmäisen luvulla n, jolloin saamme m q t = p n t, p t n = s q n. Vähentämällä jälkimmäisen yhtälön molemmat puolet edellisestä saamme yhtälön (m t s n) q = 0. 6
Koska kahden kokonaisluvun tulo on 0 ainoastaan, jos ainakin toinen luvuista on 0, niin voimme päätellä, koska q 0, että m t s n = 0. Tästä seuraa, että ( (m, n), (s, t) ) R. Näin ollen relaatio on myös transitiivinen ja siten ekvivalenssirelaatio. Koska ehdoista m q = p n, n 0 ja q 0 seuraa m = p, niin ekvivalenssiluokat ovat käytännössä n q rationaaliluvut. Verkkotehtävät 2: Muistathan myös verkkotehtävät! Toinen tehtäväsarja sulkeutuu maanantaina 6.2. klo 20.00. 7