Diskreetit rakenteet, syksy 2015 Itä-Suomen yliopisto, Tietojenkäsittelytieteen laitos Ville Heikkinen 14.12.2015 15:23 Sisältö 1 Johdanto, Tavoitteet 4 2 Lähteitä 6 3 Propositiologiikkaa 7 4 Karnaugh'n kartat 62 5 Joukko-oppia 87 5.1 Joukko-opin perussäännöt . . . . . . . . . . . . . . . . . . . . 104 5.2 Joukkojen karteesinen tulo . . . . . . . . . . . . . . . . . . . . 110 6 Predikaattilogiikkaa 116 7 Matemaattinen todistaminen 133 7.1 Suora päättely . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.2 Epäsuora päättely . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.3 Yleinen epäsuora päättely 7.4 Induktiotodistus . . . . . . . . . . . . . . . . . . . . . . . . . . 144 . . . . . . . . . . . . . . . . . . . . 143 8 Relaatiot 155 9 Funktiot 187 10 Rekursio 201 11 Kombinatoriikkaa 212 12 Suuntaamattomat graat 237 13 Suunnatut graat 259 14 Lukujärjestelmät 281 15 Logaritmi ja eksponentti 294 16 Algoritmien aikavaativuudesta lyhyesti 305 1 Johdanto, Tavoitteet Diskreetti matematiikka tarjoaa laskennallisia menetelmiä ja matemaattisia "olioita", joiden avulla ymmärretään ja suunnitellaan tietokonejärjestelmiä. Kurssin tavoitteet 1. Oppia tiedon esittämisestä matemaattisessa muodossa. 2. Ymmärtää tiettyjen matemaattisten "olioiden"rakenne (esim. funktio). 3. Kerrata matemaattisia menetelmiä muita kursseja varten. Harjoituksista Harjoitukset viikoittain (in English!). Tehtävät on esitetty suomeksi ja englanniksi. 1. Harjoitukset: Hoorieh Afkari Roshkhari. 2. Kaikista harjoitustehtävistä on suoritettava 1/3, jos haluaa suorittaa kurssin välikokeiden kautta. 3. Tutustu kurssin infoon web-sivulla (materiaali ja harjoitukset täältä): http://cs.uef.fi/pages/heikkinen/dr_2015.htm. Moodlekin tulossa... 4. Viralliset harjoitukset alkavat vasta ensi viikolla (5.11.2015 ja 6.11.2015). 2 Lähteitä Logic And Discrete Mathematics A Computer Science Perspective. Prentice Hall. Grassmann, K.W., Tremblay, J. (1996). Haggarty R. (2001) Parkkinen, J. yliopisto. Juvaste, S. opisto. Discrete Mathematics for Computing. Addison Wesley. Diskreetit Rakenteet, Luentomateriaali (useita). Itä-Suomen Diskreetit Rakenteet, Luentomateriaali (2011). Itä-Suomen yli- Logiikka ja algoritmien suunnittelu, Luentomateriaali (1980's, maybe). Kuopion yliopisto. Oja, E. Pääosin seurataan sisällön osalta Haggartyn kirjaa ja Juvasteen monistetta (linkki kurssin sivuilla: http://cs.uef.fi/pages/heikkinen/dr_2015.htm). 3 Propositiologiikkaa Propositiologiikka (Lausekalkyyli) Propositiologiikka muodostuu loogisista väittämistä (lause, ilmaus), konnektiiveista ja suluista. Määritelmä 1: Lausetta, joka on tosi tai epätosi, kutsutaan propositioksi. Lauseet voivat saada vain totuusarvot ovat vakioita. tosi (T) tai epätosi (E). Arvot T ja E Huom! Emme voi propositiologiikan avulla käsitellä kaikkia mahdollisia väitteitä. Myös järkevät väitteet voivat olla totuusarvoltaan epäselviä. Tarkastellaan lausetta: "Hän on presidentti". Lauseella on totuusarvo riippuen siitä, kuka "Hän"on. Lause on predikaatti, jolloin lause tulee määritellyksi vasta kun "Hän"jotenkin rajoitetaan. Esim. "Hän"= Ahtisaari. Nope. "Hän"= Niinistö. Jep. Palaamme predikaatteihin myöhemmin. Määritelmä 2: Propositio, jossa on vain yksi muuttuja tai yksi vakio on atomilause. Kaikki muut lauseet ovat yhdistettyjä lauseita. Kaikissa yhdiste- tyissä lauseissa on ainakin yksi konnektiivi. Tulevassa atomilauseita merkitään isoilla kirjaimilla, kuten P , Q ja R, ja jot- ka voivat saada vain totuusarvot T tai E. Huom! Esim. Juvasteen monisteessa arvoa T merkitään myös numerolla 1, ja arvoa E numerolla 0. Palataan tähän erityisesti Boolen Algebran tapauksessa. Esimerkki propositiosta, joka on atomilause: P = "Maa on litteä". Joku voisi tosin sanoa tätä myös predikaatiksi...Oletetaan kuitenkin, että kyseessä on maapallo, Tellus. Lauseiden (ilmaisuiden) muodostaminen Lauseita (atomilauseet, yhdistetyt lauseet) voidaan yhdistellä käyttämällä konnektiiveja ja sulkuja, jolloin muodostetaan uusia lauseita ("kaavoja", "il- maisuja"). Merkitään tulevassa lauseita muodossa f (P ), f (P, Q), f (P, Q, R, ..., ), g(P, Q), g(P, Q, R, ..., ). Huom. atomilauseiden tapauksessa voimme siis kirjoittaa f (P ) = P . Konnektiiveja (ns. perusjoukko) ovat: 1. Negaatio (ei, NOT): ¬. 2. Konjunktio (ja, AND): 3. Disjunktio (tai, OR): ∧. ∨. 4. Implikaatio (jos ... niin, IF ... THEN): →. 5. Ekvivalenssi (jos ja vain jos, joss, IF AND ONLY IF): ↔. Esimerkki yhdistetystä lauseesta Olkoon atomilauseet P, Q, ja R: P = "Tänään on maanantai" Q = "Ulkona sataa vettä" R = "Viitsin mennä luennolle" Yhdistetty lause voisi olla: f (P, Q, R) = (P ∨ Q) → (¬R). Eli: "JOS tänään on maantai TAI ulkona sataa vettä, NIIN EN viitsi mennä luennolle." Lauseiden evaluaatio Voidaan ajatella, että yhdistetyn lauseen lauseita P, Q, R, .... f (P, Q, R, ...) muuttujat ovat atomi- Voidaan usein merkitä lausetta vain muodossa f, jolloin muuttujia ei erikseen mainita. Esim. Lauseen f (P, Q, R) paus jossa atomilauseet (muuttujat) saavat arvot evaluaatio f (T, T, T ) f (T, T, T ), eli taP = Q = R = T . Lauseen eräs evaluaatio (valuaatio) olisi saa totuusarvon T tai E riippuen lauseen ominaisuuk- sista. Olettaen, että atomilauseita on k kappaletta, on mahdollisten evaluaatioiden 2k . Lauseen kaikki evaluaatiot esitetään usein avulla. lukumäärä totuustaulun Totuustaulut Peruskonnektiivien totuustaulut atomilauseiden ovat P T T E E Q T E T E P ∧Q T E E E P T T E E Q T E T E P →Q T E T T P T T E E P T T E E Q T E T E Q T E T E P ∨Q T T T E P ↔Q T E E T P T E ¬P E T P ja Q avulla määriteltynä Implikaatiosta Implikaation P →Q tapauksessa, jos P ei ole tosi, niin Q:n totuusarvo voi olla tosi (T) tai epätosi (E). Luonnollisessa kielessä implikaatio esiintyy eri tavoin, esimerkiksi • Jos P niin • P jos • P vain jos Q: P → Q Q: Q → P Q: P → Q Voidaan ajatella, että implikaatio vastaa sanallisesti "P on riittävä ehto Q:lle". Eli, implikaation tapauksessa Toisaalta Q Q voi saada arvon T, vaikka P:n arvo ei ole T. saa arvon T aina, jos P:n arvo on T. Ekvivalenssista Ekvivalenssin P ↔Q tapauksessa, jos P ei ole tosi, niin myöskään Q ei voi olla tosi. Voidaan ajatella, että implikaatio vastaa sanallisesti "P on riittävä ja välttämätön ehto Q:lle". Eli, ekvivalenssin tapauksessa on T. Toisaalta Q Q voi saada arvon T, jos ja vain jos P:n arvo saa arvon E aina, jos ja vain jos P:n arvo on E. Konnektiivien suoritusjärjestys 1. ¬ 2. ∧ 3. ∨ 4. → 5. ↔ Esim. 1. 2. ¬P ∧ Q = (¬P ) ∧ Q. P ∧ Q ∨ R = (P ∧ Q) ∨ R. Jos disjunktiolla käytetään sulkuja, eli P ∧ (Q ∨ R). halutaan "operoida"ensin, 3. Jos tarkoitetaan implikaation negaatiota, on kirjoitettava 4. P →Q→R tarkoittaa ((P → Q) → R) → S . ¬(P → Q). Muita usein käytettyjä konnektiiveja • Y • (XOR, Ekslusiivinen disjunktio) | (NOT AND, NAND, Sheerin viiva) • ↓ (NOT OR, NOR, Peircen nuoli). Nämä konnektiivit voidaan esittää perusjoukon avulla. Totuustaulut ovat muotoa: P T T E E Q T E T E P YQ E T T E P T T E E Q T E T E P ↓Q E E E T P T T E E Q T E T E P |Q E T T T Harjoitus. Kuinka monta eri totuustaulua (konnektiivia) kahdella proposi- tiolla voi yhteensä olla? P T T E E Q T E T E → T E T T ↔ T E E T Yhdistettyjen lauseiden totuustaulut Olkoon lause f (P, Q) = ¬(P ∧ ¬Q) Lauseen f (P, Q) totuustaulu saadaan muodostamalla askelittain konnektiive- ja vastaavat totuustaulut. P T T E E Q T E T E ¬Q E T E T P ∧ ¬Q E T E E ¬(P ∧ ¬Q) T E T T Toinen merkintätapa: f (P, Q) = ¬(P ∧ ¬Q) P Q ¬( P ∧ ¬Q) T T T T E E T E E T T T E T T E E E E T T E E T 3 1 2 1 askel Tautologia, kontradiktio, looginen ekvivalenssi Määritelmä 3: Mikäli lause tioilla (atomilauseiden ta tautologiaksi. Määritelmä 4: P, Q, . . . f (P, Q, . . .) on tosi kaikilla lauseen evaluaa- totuusarvokombinaatioilla), sanotaan lauset- Jos lause ei ole tosi millään valuaatiolla, on lause diktio (looginen epätotuus). Tautologian totuustaulun kaikki arvot ovat T Esim. P ∧ ¬P . Tautologia: Määritelmä 5: lentteja P ∨ ¬P , Lauseet kontradiktio: f (P, Q, . . .) ja ja kontradiktion g(P, Q, . . .) ovat E. loogisesti ekviva- jos ja vain jos niiden totuustaulut ovat identtiset. Merkitään f (P, Q, . . .) ≡ g(P, Q, . . .) kontra- Esimerkki loogisesta ekvivalenssista f (P, Q) = ¬(P ∧ Q) g(P, Q) = ¬P ∨ ¬Q P T T E E Q T E T E askel ¬(P ∧ Q) E T T T (P T T E E ∧ T E E E Q) T E T E P T T E E Q T E T E askel ¬P E E T T ¬P ∨ ¬Q E T T T ¬Q E T E T Esim. 2 Olkoon lauseet: f(P,Q) = "Ei ole niin, että ruusut ovat punaisia ja orvokit sinisiä." ja g(P,Q) = "Ruusut eivät ole punaisia tai orvokit eivät ole sinisiä." Lauseet P f (P, Q) ja g(P, Q) ovat loogisesti ekvivalentteja. = "ruusut ovat punaisia", Saadaan siis ¬(P ∧ Q) ≡ ¬P ∨ ¬Q Q = "orvokit ovat sinisiä" Esim. 3 P →Q Vertaillaan lauseita ja ¬P ∨ Q: P Q ¬P P →Q ¬P ∨ Q T T E T T T E E E E E T T T T E E T T T Vertaillaan lauseita P ↔Q ja (P → Q) ∧ (Q → P ): P Q P ↔Q (P → Q) (Q → P ) (P → Q) ∧ (Q → P ) T T T T T T T E E E T E E T E T E E E E T T T T Kummassakin tapauksessa saadaan siis looginen ekvivalenssi. Esim. 4 (Kontraposition laki) Todistetaan vielä ns. "kontraposition laki": P Q ¬P ¬Q P →Q ¬Q → ¬P T T T E E E T T E T E E E T E E T E T T T T T T (P → Q) ≡ (¬Q → ¬P ): Esim. 5 Todistetaan, että totuustaulua. Tod. Luennoilla... f (P, Q, R) = (P ∧ Q) → (P ∨ ¬R) on tautologia käyttäen Yleinen looginen päättelysääntö Usein halutaan todistaa (päätellä) seuraavanlainen lause: f1 ∧ f2 ∧ . . . ∧ fn → h . Lause h Lauseita lause saadaan siis implikaationa premissien konjunktiosta. f1 , . . . , f n kutsutaan premisseiksi ja niistä saadaan johtopäätöksenä h. Huom! kaikilla lauseilla f1 , . . . , fn , h on tietyt muuttujat (atomilauseet), joita ei edellä ole kirjoitettu näkyviin. Loogisesti pätevä päättely Sanotaan, että lauseen f1 ∧ f2 ∧ . . . ∧ fn → h mukainen päättely on loogisesti pätevä, jos kyseinen lause on tautologia. Tässä tapauksessa premissien voimassaolo "loogisesti implikoi"johtopäätöksen voimassaolon (eli johtopäätös on ainakin TOSI, jos kaikki premissit saavat arvon TOSI). Jos päättely on loogisesti pätevä, käytetään sille merkintää f1 , f2 , . . . , fn h. Loogista päättelyä (todistamista) voidaan tarkastella totuustaulujen ja päättelysääntöjen avulla. Esimerkki. Tarkastellaan aluksi ns. 1. P → Q modus ponens -päättelysääntöä (Aristoteles): P:stä seuraa Q, (Ulkona sataa → Pipo kastuu) 2. P P on voimassa, (Ulkona sataa) 3. Q Q on siis voimassa, (Siis pipo kastuu) Lauseet f1 (P, Q) = P → Q f2 (P ) = P (lause 2.) h(Q) = Q (lause 3.). (lause 1.) ja premissit ja niistä saadaan johtopäätös muodostavat Osoitetaan modus ponens loogisesti päteväksi totuustaulun avulla. P Q ((P → Q) ∧ P) → Q T T T T T T T T E E E T T E E T T E E T T E E T E E T E ↑ Koska saatiin tautologia, päättely on loogisesti pätevä, joten käytetään sille merkintää P → Q, P Q. Edellinen vastaa siis muotoa (P → Q) ∧ P → Q. Päättelysääntöjä (Grassmann & Tremblay: p.50) Olkoon f, g ja h lauseita, joilla tietyt muuttujat. Loogisessa päättelyssä käy- tetään usein joukkoa päättelysääntöjä: 1. 2. 3. f, g f ∧ g f ∧g g f ∧g f f f ∨g g f ∨g (Yhdistämissääntö) (Yksinkertaistamissääntö) (Lisäyssääntö, jos f on tosi, niin disjunktiolauseke on tosi riippumatta g:n totuusarvosta) 4. 5. 6. 7. f, f → g g ¬g, f → g ¬f f → g, g → h f → h f ∨ g, ¬f g f ∨ g, ¬g f ( ( modus ponens) modus tollens) Hypoteettinen syllogismi modus tollendo ponens), jos toinen ei ole Disjunktiivinen syllogismi ( totta, niin toisen pitää olla jotta disjunktiolause olisi tosi. 8. 9 . f → g, ¬f → g g f ↔gf →g f ↔gg→f (Vaihtoehtojen laki) (Implikaatiosääntö) Kunkin näistä säännöistä voidaan todistaa oikeaksi totuustauluilla (tai muita sääntöjä käyttäen). Esimerkiksi sääntö 5: f g ¬g ¬f f →g ¬g ∧ (f → g) (¬g ∧ (f → g)) → ¬f T T E E T E T T E T E E E T E T E T T E T E E T T T T T Esimerkki sääntöjen käytöstä. Olkoon 1. 2. 3. 4. A, B, C, D, E atomilauseita (muuttujia). Todista ¬C → D D →A∧B C→E ¬E B Meidän on siis todistettava, että aina kun premissit 1.-4. ovat voimassa, niin myös B on tosi. Voimme käyttää edelläolleita (todistettuja) päättelysääntöjä ja todistaa päättelyn symbolisesti: Premissit: 1. 2. 3. 4. ¬C → D D →A∧B C→E ¬E Päättely (apulauseet): 5. 6. 7. 8. ¬C D A∧B B premisseistä 4,3 käyttäen sääntöä 5 apulauseesta 5 ja premissistä 1 käyttäen sääntöä 4 premissistä 2 ja apulauseesta 6 käyttäen sääntöä 4 apulauseesta 7 käyttäen sääntöä 2 Esimerkki 2 Todista, että logiikka ei ole vaikeaa käyttäen seuraavia premissejä 1. joko mehiläisenhoito tai kuvanveisto on hauskaa 2. jos logiikka on vaikeaa, niin kuvanveisto ei ole hauskaa 3. mehiläisenhoito ei ole hauskaa Formalisoidaan atomilauseet seuraavasti: P = logiikka on vaikeaa Q = mehiläisenhoito on hauskaa R = kuvanveisto on hauskaa 1. 2. 3. 4. 5. Q∨R P → ¬R ¬Q R ¬P premissi 1. premissi 2. premissi 3. 1,3 sääntö 7. 2,4 sääntö 5. (säännössä Siis, logiikka ei ole vaikeaa. ¬R) Esimerkki 3 Tarkastellaan ohjelmointikielen lausetta if x > Max then x := Max Haluamme osoittaa, että lauseen suorituksen jälkeen ei ole mahdollista että x > M ax. Formalisoidaan lauseet P = x > M ax ennen lauseen suoritusta Q = x = M ax lauseen suorituksen jälkeen R = x > M ax lauseen suorituksen jälkeen Selvästikin voimme sanoa: Premissi 1.: P → Q, eli "Jos x > M ax ennen suoritusta, niin x = M ax eli "Jos x = M ax suorituksen jälkeen, niin x > M ax suorituksen jälkeen". Premissi 2.: Q → ¬R, ei ole totta suorituksen jälkeen". Premissi 3.: x > M ax ¬P → ¬R, eli "Jos x > M ax ei ole totta ennen suoritusta, niin ei ole totta suorituksen jälkeen". Käytetään nyt hypoteettista syllogismia (sääntö 6.) premisseihin 1. ja 2., jolloin saadaan apulause x > M ax P → ¬R, eli "Jos x > M ax ennen suoritusta, niin ei ole totta suorituksen jälkeen." Käytetään nyt vaihtoehtojen lakia (sääntö 8.) premisseihin 3. ja edelliseen apulauseeseen, jolloin saadaan ¬R. Eli, "Siis, riippumatta siitä onko x > M ax tosi(T) tai epätosi(E) ennen suoritusta, saadaan suorituksen jälkeen, niin että x > M ax on epätosi (E)." Todistus lyhyemmin: 1. 2. 3. 4. 5. P →Q Q → ¬R ¬P → ¬R P → ¬R ¬R premissi 1. premissi 2. premissi 3. 1,2 (sääntö 6.) 3,4 (sääntö 8.) Loogisesta päättelystä Aiemmin todistimme päättelyitä päteväksi (valid). Kuitenkin, edellinen (logiikka) ei ota kantaa lauseiden sisältöön (niiden totuuteen) vaan pelkästään päättelyn "muodon"oikeellisuuteen. Pätevässä päättelyssä siis hyväksymme johtopäätöksen (loogisesti) seurauksena, jos premissit ovat totta. Voimme siis "päätellä"muodollisesti oikein varsin levottomia johtopäätöksiä, kuten "Logiikka ei ole vaikeaa". Loogisesti pitävä(järkevä) päättely Todellisuudessa, kun teemme päättelyä, meidän täytyy olla tarkkana siinä hyväksymmekö todella premissit. Erityisesti, usein olemme kiinnostuneita tapauksesta, jossa myös premissit ovat totta. Sanotaan, että lauseen f1 ∧ f2 ∧ . . . ∧ fn → h mukainen päättely on tevä pitävä (järkevä) (sound), jos kyseinen päättely on pä- JA premissit ovat totta. Huom! Grassman and Tremblay:n mukaan sana "sound"viittaa vain päättelyyn. pätevään Loogisesti pitävä(järkevä) päättely On kuitenkin aika vaikeaa todistaa pitävästi, että "Logiikka ei ole vaikeaa", kuten aiemmissa esimerkeissä teimme...(Varsinkin kun ottaa huomioon miten epäkonsistentteja alan termit ja määritelmät näyttävät olevan (henk. koht. mielipide luennoitsijalta)). Epäsuora todistus Eräs tärkeä päättelysääntö on ns. epäsuora todistus (ristiriitatodistus): ((¬f → g) ∧ (¬f → ¬g)) → f . Eli, olettaen että haluamme todistaa f:n todeksi, voimme suorittaa todistuksen, jossa negaatio f johtaa ristiriitaan. Epämuodollisesti voidaan muotoilla todistuksen kulku seuraavasti: 1. Oletetaan ¬f . 2. Osoitetaan, että oletus johtaa ristiriitaan. 3. Johtopäätöksenä on f. Palataan todistusteoriaan, ja epäsuoraan todistukseen kuitenkin myöhemmin vasta predikaattilogiikan yhteydessä. Tarkastellaan seuraavaksi lauseiden normaalimuotoja. Lauseiden normaalimuodot ja sievennys Jos ajattelemme, että meillä on käytössä viisi konnektiivia ja joukko niihin liittyviä päättelysääntöjä voi olla, että päättelyiden automatisointi (toteutus tietokoneella) on monimutkaista. Mikäli lauseet voidaan muuntaa niin, että käytetään vain rajattua konnektiivijoukkoa, on mahdollista, että automatisointi helpottuu huomattavasti. Lisäksi esim. digitaalitekniikassa pitää esittää lauseet jonkinlaisessa normaalimuodossa, niin että voimme käsitellä niitä mahdollisimman tehokkaasti. Tässä kohdassa tarkastelemme lauseiden limuotojen muodostamista. sievennystä, sekä lauseiden normaa- Sieventämisellä on kolme tarkoitusta: 1. Esittää lauseet mahdollisimman vähillä erilaisilla konnektiiveilla. 2. Esittää lauseet mahdollisimman vähillä konnektiiveilla. 3. Esittää lause normaalimuodossa automaattista käsittelyä varten. Esim. kuten aiemmin todistimme totuustaulujen avulla, voimme esittää implikaation ja ekvivalenssin käyttäen kolmea muuta peruskonnektiivia: P →Q P ↔Q ≡ ¬P ∨ Q ≡ (P → Q) ∧ (Q → P ) ≡ (¬P ∨ Q) ∧ (¬Q ∨ P ) Määrittellään seuraavassa lauseiden normaalimuodot. Määritelmä 6: Lause on alkeiskonjunktio, jos se on muotoa A1 ∧ A2 ∧ . . . An , missä 1) kukin Ai 2) termin on joko atomilause tai atomilauseen negaatio, Ai sisältämä atomilause esiintyy lauseessa vain kerran joko itsenään tai negaationa. Esim. ei ole. P ∧Q∧R ja P ∧ ¬Q ∧ R ovat alkeiskonjunktioita, mutta ¬Q ∧ Q ∧ R Määritelmä 7: Lause on alkeisdisjunktio, jos se on muotoa A1 ∨ A2 ∨ . . . An , missä 1) kukin Ai 2) termin on joko atomilause tai atomilauseen negaatio, Ai sisältämä atomilause esiintyy lauseessa vain kerran joko itsenään tai negaationa. Esim. ei ole. P ∨Q∨R ja P ∨ ¬Q ∨ R ovat alkeiskonjunktioita, mutta ¬Q ∨ Q ∨ R Määritelmä 8: Lauseen sanotaan olevan dossa (DNM), jos lause f disjunktiivisessa normaalimuo- on muotoa f1 ∨ f2 ∨ . . . f m , jonka kaikki (lause)termit fi ovat alkeiskonjunktioita ja toistuvat vain kerran. Esimerkiksi f (P, Q, R) = (P ∧ Q ∧ R) ∨ (¬P ∧ Q ∧ R) tai g(P, Q, R) = (Q ∧ R) ∨ (¬P ∧ Q ∧ R) ovat disjunktiivisessa normaalimuodossa. Määritelmä 9: Lauseen sanotaan olevan maalimuodossa (KDNM), jos lause f kanonisessa disjunktiivisessa nor- on muotoa f1 ∨ f2 ∨ . . . f m , fi ovat alkeiskonjunktioita, toistuvat vain kerran, lauseen f muuttujat joko itsenään tai negaationa. jossa kaikki (lause)termit ja sisältävät kaikki Esimerkki DNM-muotoinen lause kolmella muuttujalla voi näyttää esimerkiksi tältä: f (P, Q, R) = (P ∧ ¬Q)∨(¬P ∧ Q ∧ R) KDNM-muotoinen lause kolmella muuttujalla voi näyttää esimerkiksi tältä: f (P, Q, R) = (P ∧ ¬Q ∧ ¬R)∨(¬P ∧ Q ∧ R) Määritelmä 10: Lauseen sanotaan olevan dossa (KNM), jos lause f konjunktiivisessa normaalimuo- on muotoa f1 ∧ f2 ∧ . . . f m , jonka kaikki (lause)termit fi ovat alkeisdisjunktioita ja toistuvat vain kerran. Esimerkiksi f (P, Q, R) = (P ∨ Q ∨ R) ∧ (¬P ∨ Q ∨ R) tai g(P, Q, R) = (Q ∨ R) ∧ (¬P ∨ Q ∨ R) ovat konjunktiivisessa normaalimuodossa. Määritelmä 11: Lauseen sanotaan olevan normaalimuodossa (KKNM), jos lause f kanonisessa konjunktiivisessa on muotoa f1 ∧ f2 ∧ . . . f m , fi ovat alkeisdisjunktioita, toistuvat vain kerran, ja f muuttujat joko itsenään tai negaationa. jossa kaikki (lause)termit sisältävät kaikki lauseen Esimerkki KNM-muotoinen lause kolmella muuttujalla voi näyttää esimerkiksi tältä: g(P, Q, R) = (P ∨ ¬Q)∧(¬P ∨ Q ∨ R) KKNM-muotoinen lause kolmella muuttujalla voi näyttää esimerkiksi tältä: g(P, Q, R) = (P ∨ ¬Q ∨ ¬R)∧(¬P ∨ Q ∨ R) Lauseet voidaan muuntaa normaalimuotoihin käyttämällä termien loogisia ekvivalensseja. Loogisia ekvivalensseja Olkoon f , g, h lauseita, joilla tietyt muuttujat. Sievennys voidaan tehdä seu- raavia muunnoksia apuna käyttäen: Laki f ∨ ¬f ≡ T f ∧ ¬f ≡ E f ∨E ≡f f ∧T ≡f f ∨T ≡T f ∧E ≡E f ∨f ≡f f ∧f ≡f ¬(¬f ) ≡ f Nimi (suomennokset epäselviä) Kolmannen vaihtoehdon olemattomuus Kontradiktio yksikkölait hallitsevan lait (domination) neutraalilait (idempotent) kahden negaation laki f ∨g ≡g∨f f ∧g ≡g∧f (f ∨ g) ∨ h ≡ f ∨ (g ∨ h) (f ∧ g) ∧ h ≡ f ∧ (g ∧ h) (f ∨ g) ∧ (f ∨ h) ≡ f ∨ (g ∧ h) (f ∧ g) ∨ (f ∧ h) ≡ f ∧ (g ∨ h) ¬(f ∧ g) ≡ ¬f ∨ ¬g ¬(f ∨ g) ≡ ¬f ∧ ¬g vaihdantalait assosiatiivisuuslait osittelulait De Morganin lait Absorptiolaki. merkiksi Mainittujen lakien avulla voidaan todistaa lisää lakeja, esi- absorbtiolait : f ∨ (f ∧ g) ≡ ≡ ≡ ≡ Vastaavasti (f ∧ T ) ∨ (f ∧ g) f ∧ (T ∨ g) f ∧T f f ∧ (f ∨ g) ≡ f yksikkölaki osittelulaki hallitsevan laki yksikkölaki (todistus harjoitustehtävänä). Esimerkki 1. Tarkastellaan edelleen implikaatiota Valitaan laeissa f (P ) = P P ↔ Q. ja P →Q ja ekvivalenssia g(Q) = ¬Q. Kaksoisnegaation (kahden negaation laki) ja De Morganin lain avulla saadaan esitykset P →Q ≡ ¬P ∨ Q ≡ ¬P ∨ ¬¬Q ≡ ¬(P ∧ ¬Q) P ↔Q ≡ (P → Q) ∧ (Q → P ) ≡ (¬P ∨ Q) ∧ (¬Q ∨ P ) ≡ ¬(P ∧ ¬Q) ∧ ¬(Q ∧ ¬P ) Esimerkki 2. Muunna lause ¬((P ∨ Q) ∧ ¬R) konjunktiiviseen normaali- muotoon. ¬((P ∧ ¬Q) ∧ ¬R) ≡ ¬(P ∨ ¬Q) ∨ ¬¬R ≡ ¬(P ∨ ¬Q) ∨ R ≡ (¬P ∧ ¬¬Q) ∨ R ≡ (¬P ∧ Q) ∨ R ≡ (¬P ∨ R) ∧ (Q ∨ R) De Morgan kaksoisnegaatio De Morgan kaksoisnegaatio osittelulaki Huomaa, että toiseksi viimeinen rivi on disjunktiivista normaalimuotoa! Esimerkki 3. Muunna lause ¬(P ∧ Q) → ¬P ∨ ¬(P ∧ ¬Q) disjunktiiviseen normaalimuotoon. ¬(P ∧ Q) → ¬P ∨ ¬(P ∧ ¬Q) ≡ ¬¬(P ∧ Q) ∨ (¬P ∨ ¬(P ∧ ¬Q)) ≡ (P ∧ Q) ∨ (¬P ∨ ¬(P ∧ ¬Q) ≡ (P ∧ Q) ∨ (¬P ∨ ¬P ∨ ¬¬Q) ≡ (P ∧ Q) ∨ (¬P ∨ ¬P ∨ Q) ≡ (P ∧ Q) ∨ ¬P ∨ Q implikaation esitys kaksoisnegaatio De Morgan kaksoisnegaatio neutraalilaki Yleensä muunnos voidaan tehdä alla olevan "algoritmin"mukaan: 1. Muunnetaan implikaatiot ja ekvivalenssit disjunktioksi tai konjunktioksi. 2. Muunnetaan termit joissa on negaatio koko termille De Morganin laeilla. 3. Erotellaan mahdollisesti termejä osittelulaeilla. 4. Muunnetaan mahdollisesti konjunktioita disjunktioiksi tai päinvastoin osittelulaeilla. Esimerkki 4. Muunna lause f (P, Q, R) = (¬P ∧ Q) ∨ (Q ∧ R) kanoniseen disjunktiiviseen normaalimuotoon. (¬P ∧ Q) ∨ (Q ∧ R) ≡ ((¬P ∧ Q) ∧ (R ∨ ¬R)) ∨ ((Q ∧ R) ∧ (P ∨ ¬P )) ≡ ((¬P ∧ Q ∧ R) ∨ (¬P ∧ Q ∧ ¬R)) ∨((Q ∧ R ∧ P ) ∨ (Q ∧ R ∧ ¬P )) ≡ (¬P ∧ Q ∧ R) ∨ (¬P ∧ Q ∧ ¬R) ∨ (Q ∧ R ∧ P ) 1. looginen ekvivalenssi: Lisätään alkeistermeihin puuttuva muuttuja käyttäen yksikkölakia ja kolmannen vaihtoehdon olemattomuutta. 2. looginen ekvivalenssi: Osittelulaki. 3. looginen ekvivalenssi: Vaihdantalaki, Neutraalilaki ja assosiatiivisuuslaki. Totuustaulu ja kanoninen disjunktiivinen normaalimuoto (KDNM). Lauseelle voidaan tuottaa KDNM suoraan tunnetusta totuustaulusta. 1. Poimi totuustaulusta rivit, joilla lause on TOSI. 2. Muodosta kultakin vaiheen 1. riviltä atomilauseiden konjunktio (alkeiskonjunktio) siten, että atomilause tulee atomilauseena, kun sen totuusarvo rivillä on TOSI ja atomilause tulee negaationa, kun totuusarvo on EPÄTOSI. 3. Muodosta vaiheesta 2. saatujen alkeiskonjunktioiden disjunktio. Esimerkki. lausetta Tarkastellaan kolmen atomilauseen, P,Q ja R muodostamaa f (P, Q, R). Sen totuustaulu on: P Q R f (P, Q, R) T T T T T T E E T E T T T E E E E T T E E T E E E E T T E E E E Alkeiskonjunktiot ovat: P ∧ Q ∧ R, P ∧ ¬Q ∧ R, ¬P ∧ ¬Q ∧ R disjunktiivinen normaalimuoto (P ∧ Q ∧ R) ∨ (P ∧ ¬Q ∧ R) ∨ (¬P ∧ ¬Q ∧ R) ja kanoninen 4 Karnaugh'n kartat Siirrytään nyt käyttämään 0,1 notaatiota totuusarvoille, eli Lauseiden muuttujia merkitään seuraavassa 0 := E ja 1 := T . A, B, C, D, .... Normaalimuotojen sieventämiseen voidaan käyttää tehokasta taulukointimenetelmää, Karnaugh'n karttaa. Erityisesti kun muodostamme lauseen KDNM:n totuustaulukosta, niin kaavasta voi tulla hyvin pitkä. Karnaugh'n kartan avulla saamme mahdollisimman sievennetyn DNM:n. Katsomme kartan käyttöä esimerkkien avulla kahdelle, kolmelle ja neljälle termille. Sama tekniikka toimii mielivaltaisen kokoisille taulukoille. Kartan rakentamisesta. Kartta esittää lauseen totuustaulun hieman eri muodossa kuin mitä tähän asti on käytetty. Kukin kartan/taulukon solu vastaa lauseen evaluaatiota tietyillä atomilauseiden totuusarvoilla. Kartta rakennetaan taulukoksi siten, että vierekkäiset solut vastaavat aina kahta sellaista evaluaatiota jotka eroavat toisistaan vain yhden atomilauseen evaluaation kohdalla. Kahdelle atomilauseelle evaluaatiot ovat esim. järjestyksessä: kolmelle esim. 000, 001, 011, 010, 110, 111, 101, 100. 00, 01, 11, 10, Esimerkiksi kahden termin Karnaugh'n kartat AND (∧) ja OR (∨) operaatioille ovat: A A B A ¬A B 1 0 ¬B 0 0 A∧B B A ¬A B 1 1 ¬B 1 0 A∨B Vastaavasti kolmen ja neljän termin Karnaugh'n karttapohjat ovat seuraavia taulukoita: AB AB 11 C 1 0 10 00 11 11 01 CD 10 00 01 10 00 01 Karnaugh'n kartan muodostaminen. • • Muodostetaan totuustaulu lausekkeesta (tai muuten). Katetaan kartan kaikki ykköset suorakulmaisilla alueilla: kukin kartan ykkönen kuuluu johonkin alueeseen alueella ei saa olla nollia alueet mahdollisimman suuria suorakulmioita kooltaan 2k , (eli 1, 2, 4, 8, 16, jne) alue voi kiertää taulukon reunan ympäri (oikeasta reunasta vasemmalle, alhaalta ylös) alueet voivat olla osin päällekkäin pyritään mahdollisimman vähiin alueisiin Kartan käyttö. Karnaugh'n kartasta muodostetaan sievennetty DNM-muotoi lause seuraavasti: • Disjunktiolausekkeeseen termi kutakin aluetta kohti. • Jokaista alueen muodostamaa termiä kohti on alkeiskonjunktio jossa ovat ne muuttujat joiden arvot ovat samat koko alueella. • Konjunktion termit tulevat sellaisenaan kun totuusarvo on 1, ja negaation kanssa jos totuusarvo on 0. Esim: A a) B A ¬A B 1 1 ¬B 0 0 f (A, B) = (A ∧ B) ∨ (¬A ∧ B) Karnaugh'n kartasta tämä saadaan yhdistämällä ylärivin vierekkäiset ykköset. Ko. alueessa B on aina 1, joten kaavaan tulee B. Koko sievennys on siis f (A, B) = B . Tämä toki olisi ollut helppo muutenkin. Huomaamme, että lause on tosi, kun B on tosi riippumatta epätosi. A:n totuusarvosta. Samoin se on epätosi, kun B on A b) B B ¬B A ¬A 1 0 1 1 f (A, B) = (A ∧ B) ∨ (A ∧ ¬B) ∨ (¬A¬B) A ¬B . Saamme siis sievennetyn muodon f (A, B) = A∨¬B . Muodostetaan kaksi 2:n kokoista aluetta. Vasenta saraketta vastaa lauseke ja alareunaa lauseke A c) B A ¬A B 1 0 ¬B 0 1 Lauseketta ei voi sieventää, sillä siinä ei ole vierekkäisiä ykkösiä. Lauseke on DNF muodossa f (A, B) = (A ∧ B) ∨ (¬A ∧ ¬B) Kolmen termin Karnaugh'n karttoja voidaan sieventää vastaavasti seuraavan esimerkin mukaan. Esim. a) f (A, B, C) = (A ∧ B ∧ C) ∨ (A ∧ ¬B ∧ C) ∨ (A ∧ ¬B ∧ ¬C) ∨ (¬A ∧ B ∧ ¬C) 11 1 C 0 1 AB 10 00 01 1 1 1 Tästä saadaan sieventämällä f (A, B, C) = (A∧C)∨(A∧¬B))∨(¬A∧B∧¬C) f (A, B, C) = (A ∧ B ∧ C) ∨ (A ∧ ¬B ∧ C) ∨ (A ∧ B ∧ ¬C) ∨ (¬A ∧ B ∧ C) ∨ (¬A ∧ B ∧ ¬C) b) 1 C 0 −A−B AB 11 10 00 01 1 1 1 −AB A−B C 1 1 −C AB Sievennettäessä löydetään kaksi aluetta, punainen/katkoviiva-alue vasemmassa yläkulmassa jossa C=1 ja A = 1 (B vaihtelee), eli A∧C ja kun tauluk- ko kierretään päistään renkaaksi sarakkeet 11 ja 01 ovat samaa 4:n kokoista B = 1 (A f (A, B, C) = (A ∧ C) ∨ B . aluetta, saadaan vihreä/yhtenäisen viivan alue jossa vat). Sievennetty muoto on siis ja C vaihtele- f (A, B, C) = (A ∧ B ∧ C) ∨ (¬A ∧ ¬B ∧ ¬C) ∨ (¬A ∧ B ∧ C) ∨ (A ∧ B ∧ ¬C) ∨ (¬A ∧ B ∧ ¬C) c) Sievennetään lause AB 11 C 1 0 10 00 01 Neljän termin Karnaugh'n karttaa käytetään vastaavalla tavalla. d) f (A, B, C, D) = (A ∧ B ∧ C ∧ D)∨ (A ∧ ¬B ∧ C ∧ D)∨ (A ∧ B ∧ C ∧ ¬D)∨ (A ∧ ¬B ∧ C ∧ ¬D)∨ (¬A¬B ∧ C ∧ ¬D)∨ (¬A ∧ B ∧ C ∧ ¬D)∨ (¬A ∧ ¬B ∧ ¬C ∧ ¬D)∨ (¬A ∧ B ∧ ¬C ∧ ¬D)∨ (A ∧ ¬B ∧ C ∧ D) AB 1 1 1 1 11 1 1 10 1 1 00 CD 1 11 10 01 00 01 f (A, B, C, D) = (A ∧ C) ∨ (¬A ∧ ¬D) ∨ (A ∧ ¬B ∧ D) Konnektiiveja vastaavia logiikkaportteja. Tarkastellaan seuraavaksi kuin- ka loogisia operaatioita voidaan toteuttaa elektronisilla logiikkapiireillä. Digitaalitekniikassa logiikan porttipiirejä kutsutaan nimillä AND, OR, NOT, XOR, NOR, ja NAND. • AND (konjunktio) • OR (disjunktio) • NOT (negaatio) • XOR on eksklusiivinen OR. • NAND (AND-NOT) on "negaatio AND" • NOR (OR-NOT) on "negaatio OR" Totuusarvo toteutetaan piiriin tulevan jännitteen avulla. Johtimen jännitearvo +5V vastaa lukua 1 (TOSI) ja 0V vastaa lukua 0 (EPÄTOSI). Loogisten porttien totuustaulut ja symbolit (US standardi) ovat seuraavat. A B A AND B 0 0 0 0 1 0 1 0 0 1 1 1 A B A OR B 0 0 0 0 1 1 1 0 1 1 1 1 A A AND B B A A OR B B A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0 A NOT A 0 1 1 0 A A XOR B B A NOT A Eräillä piireillä voi olla useampia syötteitä. (AND, OR) A B C AND(A,B,C) 1 1 1 1 0 X X 0 X 0 X 0 X X 0 0 A B C A AND B AND C Tällöin AND-piiriä voidaan käyttää tunnistamaan tietty binääriluku. 1 1 1 1 0 1 10 0 1 0 11 1 15 11 4 Tarkastellaan loogista piiriä: A B c s A B s c 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Kyseessä on kahden bitin yhteenlasku, missä c voidaan tulkita carry-bitiksi. RS-kiikku (Flip-op). Loogisilla piireillä (NAND tai NOR) voidaan to- teuttaa myös muistipiiri, ns. RS-kiikku. Tämä on sekvenssilogiikan peruspiiri, joka säilyttää tilan 0 tai 1. Piirissä on takaisinkytkentä, jolloin ulostulon arvo (hetkellä S R t + 1) NOR NOR riippuu edellisestä ulostulon arvosta (hetkellä Q −Q t). Q RS-kiikun ulostulon Q ohjaus suoritetaan linjoilla Tila(R,S) = (0,0) : Q säilyttää tilan Tila(R,S) = (0,1) : Q siirtyy tilaan 0 Tila(R,S) = (1,0) : Q siirtyy tilaan 1 Tila(R,S) = (1,1) : ei sallittu. Q(t) S R ¬Q(t + 1) Q(t + 1) 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 R (Reset) ja S (Set): Muodostamalla kiikun ulostulolle signaalikaavio ajan suhteen, voidaan tulkita piirin toiminta niin että +5V ja S :n R:n (Reset) "aktivointi"nostaa (Set) "aktivointi"vastaavasti pudottaa solle. Signaalikaavio on seuraavanlainen... Q:n Q:n signaalitason signaalitason 0V ta- Karnaugh'n kartat ja digitaalilogiikka Karnaugh'n karttojen avulla muodostetulla DNM-muotoisella kaavalla voidaan muodostaa halutun tuloksen antava minimaalinen digitaalipiiri. Esim: Aiempien (s. 71 - 74) kolmen Karnaugh -esimerkin lausekkeet voi- daan toteuttaa seuraavilla digitaalipiireillä: a) (s. 71) A B C f (A, B, C) = (A ∧ C) ∨ (A ∧ ¬B)) ∨ (¬A ∧ B ∧ ¬C) f(A,B,C ) b) (s. 72) f (A, B, C) = (A ∧ C) ∨ B : A f(A,B,C ) B C d) (s. 74) f (A, B, C, D) = (A ∧ C) ∨ (¬A ∧ ¬D) ∨ (A ∧ ¬B ∧ D) A B f(A,B,C ) C D 5 Joukko-oppia Joukko-opissa tarkastelemme objektien muodostamia kokoelmia (joukkoja) ja niiden yhdistelmiä ja eroja. Kokoelmaan kuuluvat objektit ovat joukon alkioita. Esim. Joukkoja ovat : • luonnollisten lukujen joukko • punaisten omenien joukko • totuusarvoltaan TOSI olevien lauseiden joukko • UEF opiskelijoiden joukko Notaatiosta. Joukkoja merkitään isoilla kirjamilla ja niiden alkiot luetel- laan tai määritellään aaltosulkeissa. Esimerkiksi lukujen 3,4,5 ja 6 muodostamaa joukkoa • Alkion kuuluminen joukkoon ilmaistaan • Joukon • Tyhjää joukkoa merkitään • Joukkoon kuulumattomien alkioiden joukkoa, 7∈A. A merkitään joukko E, A merkitään A = {3, 4, 5, 6} 3 ∈ A ja kuulumattomuus alkioiden määrää (kardinaliteettia) merkitään ∼A (tai A). |A|. ∅. joukon A komplementtia, Tällöin oletetaan olevan olemassa jokin perus- johon kaikki alkiot kuuluvat. Esim: Ajatellaan, että maailmassa on vain punaisia, vihreitä ja kirjavia omenoita. Tällöin tarkasteltaessa omenoiden joukko-oppia perusjoukko on E = {kaikki Jos joukko omenat} A = {punaiset omenat}, niin ∼A = {vihreät Tämä voidaan esittää Venn-diagrammilla. E A ja kirjavat omenat}. 111111111111 000000000000 E 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 A 000000000000 111111111111 000000000000 111111111111 −A 000000000000 111111111111 000000000000 111111111111 Joukon esittämisestä. Joukko voidaan esittää myös formaalisti kuvaile- malla (ehtomuodossa) joukkoon kuuluvien alkioiden ominaisuudet, ei luettelemalla alkioita. Tarkastellaan omenoiden joukkoa. Silloin punaisten omenoiden joukko voidaan esittää muodossa A = {x | x on punainen } Tässä "x on punainen"on lause, jonka totuusarvo riippuu "muuttujasta"x E. Jos x =punainen Jos esim. omena, otetaan x joukkoon mukaan. x =vihreä omena, ei sitä oteta joukkoon mukaan. ∈ Joukon ehtomuoto. Yleisesti voidaan määritellä joukko A muodossa A = {x | P (x)}, missä P (x) määrittelee ehdon joukkoon A Lausetta P (x) voidaan kutsua predikaatiksi. A on siis P (x) saa arvon TOSI. kuulumiselle. Joukko niiden perusjoukon alkioiden joukko, joille kaikille lause Lukujoukot Tulevassa merkitsemme: • Luonnollisten lukujen joukko • Kokonaislukujen joukko • Rationaalilukujen joukko • Reaalilukujen joukko R N = {1, 2, 3, . . .} Z = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} Q = {m |m ∈ Z, n ∈ N} n Esim. Reaalilukujen R joukossa positiivisten kokonaislukujen joukko on A = {n | n ∈ Z, n > 0} Jos perusjoukko on kokonaislukujen joukko Z, A = {n | n > 0}. riittää Kaksi joukkoa A ja B ovat samat silloin ja vain silloin, kun näillä on täsmäl- leen samat alkiot. Merkitään Joukko A ⊆ B. A ⊂ B. A A = B. B osajoukko, jos x ∈ A → x ∈ B . Tätä A= ̸ B on A joukon B aito osajoukko ja sitä on joukon Jos lisäksi A = B ↔ (A ⊆ B) ∧ (B ⊆ A) merkitään merkitään Kahden joukon A ja B leikkaus on joukko, jonka alkiot kuuluvat joukkoon A ja joukkoon B. Leikkausjoukkoa merkitään A ∩ B. x ∈ (A ∩ B) ≡ (x ∈ A) ∧ (x ∈ B) Looginen konjunktio! 11 00 00 00 11 A11 00 11 00 11 E B Joukkojen A ja B yhdiste eli unioni on niiden alkioiden joukko, jotka kuuluvat joukkoon A tai joukkoon B. Yhdistettä merkitään A ∪ B. x ∈ (A ∪ B) ≡ (x ∈ A) ∨ (x ∈ B) Looginen disjunktio! 11111 00000 00000 E 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 A B 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 AUB Joukon komplementti vastaa esitystä. x ∈ ∼A ≡ ¬(x ∈ A) ∼A = {x | x∈A} E A ~A Joukkojen erotus ( dierence), merkitään A \ B (tai A − B ), vastaa käänteistä implikaatiota. x ∈ (A \ B) ≡ (x ∈ A) ∧ (x∈B) E A A\B B Määritellään nyt edellisiä operaatioita vastaavat joukot predikaattien avulla. Olkoon siis Joukkojen A, B ⊆ E . A ja B leikkaus: A ∩ B := {x ∈ E | (x ∈ A) ∧ (x ∈ B)} tai A ∩ B := {x | (x ∈ A) ∧ (x ∈ B)} Joukkojen A ja B yhdiste: A ∪ B := {x ∈ E | (x ∈ A) ∨ (x ∈ B)} tai A ∪ B := {x | (x ∈ A) ∨ (x ∈ B)} Joukon A komplementti: ∼A := {x ∈ E | x∈A} tai ∼A := {x | x∈A} Erotus A \ B: A \ B := {x ∈ E | (x ∈ A) ∧ (x∈B)} tai A \ B := {x | (x ∈ A) ∧ (x∈B)} Esim. Olkoon perusjoukko E = {1, 2, 3, 4, 5} ja joukot A = {1, 3}, B = {3, 4, 5} Tällöin A ∩ B = {3} A ∪ B = {1, 3, 4, 5} A \ B = {1} ∼A = {2, 4, 5} ∼B = {1, 2} Joukkojen erotus voidaan esittää komplementin ja leikkauksen avulla A \ B = A ∩ ∼B Olkoon A, B, C ⊆ E . Erotuksella on ominaisuudet 1. A\A=∅ 2. A\∅=A 3. ∅\A=∅ 4. (A \ B) \ C = A \ (B ∪ C) = (A \ C) \ B Määritellään vielä symmetrinen erotus A△B A△B := (A \ B) ∪ (B \ A) Tämä voidaan esittää komplementin, leikkauksen ja yhdisteen avulla A△B = (A ∩ ∼B) ∪ (∼A ∩ B) Huom! Joukkojen erotus ja symmetrinen erotus voidaan siis esittää komplementin, leikkauksen ja yhdisteen avulla. Komplementti, leikkaus ja yhdiste voidaan tulkita joukko-opin perusoperaatioiksi. 5.1 Joukko-opin perussäännöt Olkoon (1) (2) (3) E perusjoukko ja A ∪ ∼A = E A ∩ ∼A = ∅ A, B, C ⊆ E . (komplementtilait) A∩E =A A∪∅=A A∪E =E A∩∅=∅ (4) A∪A=A∩A=A (5) ∼(∼A) = A (6) (7) Tällöin on voimassa A∪B =B∪A A∩B =B∩A (vaihdantalait) (A ∪ B) ∪ C = A ∪ (B ∪ C) (A ∩ B) ∩ C = A ∩ (B ∩ C) (assosiatiivisuuslait) (8) (9) (10) A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C) A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C) A ∩ (A ∪ B) = A ∪ (A ∩ B) = A ∼ (A ∩ B) = ∼A ∪ ∼B ∼ (A ∪ B) = ∼A ∩ ∼B (absorptiolait) (De Morganin lait) (11) A⊆A∪B (12) A∩B =A↔A∪B =B ↔A⊆B (13) A ⊆ B ↔ ∼B ⊆ ∼A (14) A = B ↔ ∼A = ∼B ja (osittelulait) A∩B ⊆A Perussäännöt voidaan osoittaa oikeiksi käyttäen lauseiden tunnettuja loogisia ekvivalensseja. Esim. Todistetaan vaihdantalaki A ∩ B = {x | x ∈ A ∧ x ∈ B} = {x | P ∧ Q} = {x | Q ∧ P } = {x | x ∈ B ∧ x ∈ A} =B∩A | P := x ∈ A, Q := x ∈ B Käytimme siis propositiologiikan vaihdantalakia todistuksessa. Esim. Todistetaan De Morganin laki ∼(A ∩ B) = ∼A ∪ ∼B . ∼(A ∩ B) = {x | x∈(A ∩ B)} = {x | ¬(x ∈ (A ∩ B))} = {x | ¬((x ∈ A) ∧ (x ∈ B))} = {x | ¬(P ∧ Q)} = {x | ¬P ∨ ¬Q} = {x | ¬(x ∈ A) ∨ ¬(x ∈ B)} = {x | x∈A ∨ x∈B} = ∼A ∪ ∼B | P := x ∈ A, Q := x ∈ B Käytimme propositiologiikan De Morganin lakia todistuksessa. Osittelulaeille (8) on voimassa yleistykset A ∪ (B1 ∩ B2 ∩ . . . ∩ Bn ) = (A ∪ B1 ) ∩ (A ∪ B2 ) ∩ . . . ∩ (A ∪ Bn ). A ∩ (B1 ∪ B2 ∪ . . . ∪ Bn ) = (A ∩ B1 ) ∪ (A ∩ B2 ) ∪ . . . ∪ (A ∩ Bn ). De Morganin laeille (10) on voimassa yleistykset ∼(A1 ∩ A2 ∩ . . . ∩ An ) = ∼A1 ∪ ∼A2 ∪ . . . ∪ ∼An ∼(A1 ∪ A2 ∪ . . . ∪ An ) = ∼A1 ∩ ∼A2 ∩ . . . ∩ ∼An Joukkojen koosta. Määritellään tulevassa, että joukko on äärellinen, jos se on tyhjä tai sen alkiot voidaan numeroida luonnollisten lukujen avulla, eli luvuilla 1,2,3, . . . , ääretön. n, jollakin n ∈ N. Jos joukko ei ole äärellinen, se on 5.2 Kun Joukkojen karteesinen tulo A ja B ovat epätyhjiä joukkoja, niin järjestetty pari (pair, tuple ) on olio (a, b), missä a ∈ A ja b ∈ B . muotoa Joukkojen A ja B karteesiseksi tuloksi (tulojoukoksi) kaikkien järjestettyjen parien joukko A × B := {(a, b) | a ∈ A, b ∈ B}. Tulojoukon koko on |A × B| = |A| · |B|. A × B, määritellään Esim. Olkoot äärelliset joukot A ja B muotoa A = {x, y} ja Tällöin A × B = {(x, 1), (x, 2), (x, 3), (y, 1), (y, 2), (y, 3)}. B × A = {(1, x), (1, y), (2, x), (2, y), (3, x), (3, y)}. A × A = {(x, x), (x, y), (y, x), (y, y)}. Voimme havainnollistaa karteesista tuloa A x y x (y,1) x (y,2) x (y,3) 1 2 3 ( ,1) ( ,2) B ( ,3) A×B seuraavasti: B = {1, 2, 3}. n-ulotteinen karteesinen tulo. tyhjien joukkojen A1 , A2 , . . . , An Olkoon n jokin luonnollinen luku. Epä- n-ulotteinen karteesinen tulo on muotoa A1 × A2 × . . . × An = {(a1 , a2 , . . . , an ) | ai ∈ Ai , i = 1, 2, . . . , n}, missä joukon alkioita si tai n-jonoiksi. (a1 , a2 , . . . , an ) kutsutaan vektoreiksi, äärellisiksi listoik- Jos n-ulotteisen karteesisen tulon kaikki joukot ovat sama joukko, eli kaikilla i = 1, . . . , n, Ai = A merkitään An := A1 × A2 × . . . × An Esim. Olkoon joukko B = {1, 0}. mittaisten bittijonojen joukoksi. Tällöin Bn voidaan tulkita kaikkien n:n Euklidinen avaruus. joukkoa R2 kutsutaan Olkoon vektorit Tarkastellaan karteesista tulojoukkoa karteesiseksi tasoksi. (a1 , a2 , . . . , an ) ∈ Rn ja vektoreiden yhteenlasku ja reaalivakiolla Rn . Jos n = 2, (b1 , b2 , . . . , bn ) ∈ Rn . (c ∈ R) kertominen Määritellään (a1 , a2 , . . . , an ) + (b1 , b2 , . . . , bn ) = (a1 + b1 , a2 + b2 , . . . , an + bn ) c(a1 , a2 , . . . , an ) = (ca1 , ca2 , . . . , can ). Joukkoa Rn varustettuna vektoreiden yhteenlaskulla ja reaalivakiolla kerto- misella kutsutaan n-ulotteiseksi euklidiseksi avaruudeksi. Vektoreiden pituus ja pistetulo. vektorin pituus n-ulotteisessa euklidisessa avaruudessa (normi) on ∥(a1 , a2 , . . . , an )∥ = (a21 + a22 + . . . + a2n )1/2 ja vektoreiden välinen pistetulo (skalaaritulo, sisätulo) on (a1 , a2 , . . . , an ) · (b1 , b2 , . . . , bn ) = n ∑ ai bi = a1 b1 + a2 b2 + . . . + an bn . i=1 Esim. Olkoon vektorit pituudet ovat (1, 2, 3) ∈ R3 ja (1, 1, 1) ∈ R3 . Tällöin vektoreiden √ √ 12 + 22 + 32 = 14 √ √ ∥(1, 1, 1)∥ = 12 + 12 + 12 = 3 ∥(1, 2, 3)∥ = ja niiden välinen pistetulo (1, 2, 3) · (1, 1, 1) = 1 · 1 + 2 · 1 + 3 · 1 = 6 Matriisi. Matriisi R n (matrix) voidaan tulkita järjestyksi joukoksi avaruuden n vektoreita. Esim. m × n-matriisi, missä avaruuden R vektorit muodosta- vat matriisin rivit (m kpl) a11 a12 . . . a1n a21 a22 . . . a2n A = .. . . .. . . . . . . am1 am2 . . . amn Matriisi on yksi tärkeimmistä tietorakenteista. Esimerkki: digitaalinen harmaasävykuva. Vektoreiden ja matriisien välille voidaan muodostaa operaatioita (kuten vektoreiden sisätulo edellä). Laskentaa tarkastellaan erityisesti lineaarialgebraa käsittelevillä kursseilla. Matriisit ja tietyt operaatiot kohtaamme seuraavan kerran graaen yhteydessä. 6 Predikaattilogiikkaa Tarkastellaan tarkemmin predikaatteja. Predikaatti P (x) perusjoukossa E muuttujan x siten, että aina kun alkiolla, predikaatin P (x) on lausefunktio (avoin lause) joka sisältää x korvataan millä tahansa perusjoukon E tulos on tosi (T) tai epätosi (E). Predikaattia sanotaan n:n muuttujan predikaatiksi, jos siihen liittyy n muuttujaa (argumenttia). Esim. K(x) x on kissa yksi muuttuja äiti(U, H) U on H:n äiti kaksi muuttujaa S(x1 , x2 , y) x1 S(x1 , x2 , x3 , y) x1 + x2 = y kolme muuttujaa + x2 + x3 = y neljä muuttujaa Kvanttorit. Predikaattien kanssa käytetään usein kvanttoreita (quantier) muodostamaan loogisia lauseita. Kvanttorit ovat 1. universaalikvanttori, ∀ 2. olemassaolokvanttori, ∃ (kaikille) (on olemassa) Yhdistämällä kvanttorit ja predikaatit saadaan muodostettua (suljettuja) lauseita, eli propositioita. Esimerkiksi yhden muuttujan predikaatin tapauksessa 1. ∀x : P (x) (kaikille x ∈ E : P (x)). 2. ∃x : P (x) (on olemassa x ∈ E : P (x)). Ei ole olemassa merkitään tulevassa negaatiota käyttäen ¬∃ . . . . Esim. Olkoon E = R. Määritellään predikaatti P (x) =x on kokonaisluku ja x2 = 16. Tarkastellaan lausetta Q := ∀x : P (x) Q = Kaikki reaaliluvut ovat kokonaislukuja ja toteuttavat yhtälön x2 = 16. Lause on epätosi. Tarkastellaan lausetta R := ∃x : P (x) R = On olemassa reaaliluku, joka on kokonaisluku ja toteuttaa yhtälön 16. Lause on tosi (esim. x=4 tai x = −4). x2 = Esim. Olkoon perusjoukko E kaikkia eläimet. Esitetään (epätosi) lause R=mitkään linnut eivät ole saalistajia predikaattien ja kvanttorien avulla. Olkoon predikaatit P (x) = x on lintu ja Q(x) = x on saalistaja R := ∀x(P (x) → ¬Q(x)) Vastaavasti ∃x(P (x) → ¬Q(x)) eli jotkin linnut eivät ole saalistajia. Tosi. Kvanttoreista. • Kvanttoreita käytettäessä on kiinnitettävä huomiota siihen mikä on perusjoukko • E! Kvanttori kohdistuu lauseissa tiettyyn muuttujaan. Tällainen muuttuja on sidottu muuttuja. Usean muuttujan predikaattien tapauksessa suljet- tu lause (propositio) muodostetaan sitomalla kaikki muuttujat kvanttoreilla. Esim. ∀x∃y : ((P (x) ∧ Q(y)) ∨ Q(z)) Lause ei ole suljettu, koska x ja y ovat sidottuja, mutta z on muuttuja. • vapaa Useita kvanttoreita käytettäessä on huomioitava, että niiden järjestyksellä on väliä. Esim. Olkoon perusjoukkona kokonaisluvut. Tarkastellaan kahden muuttu- jan predikaattia P (x, y) := x < y . Tarkastellaan lausetta Q := ∀x∃y : P (x, y) Jokaiselle kokonaisluvuille x on olemassa kokonaisluku y, joka on suurempi kuin x. Tosi. R := ∃y∀x : P (x, y) On olemassa kokonaisluku y, joka on suurempi kuin jokainen kokonaisluku. Epätosi. Järjestystä ei siis saa vaihtaa. Esim. Olkoon perusjoukkona kaikki maailman ihmiset. Tarkastellaan kah- den muuttujan predikaattia P (x, y) : x tuntee y:n. Tarkastellaan lausetta Q := ∃x∀y : P (x, y) On olemassa ihminen, joka tuntee kaikki ihmiset. Vaihtamalla kvanttoreiden järjestys saadaan R := ∀x∃y : P (x, y) Kaikki ihmiset tuntevat jonkun ihmisen. Esim. Olkoon P (x, y) ja E kuten aiemmassa esimerkissä. Voimme myös muodostaa lauseet: ∃y∀x : P (x, y) On olemassa ihminen, jonka kaikki tuntevat. ∀y∃x : P (x, y) Kaikille ihmisille on olemassa joku ihminen (x) joka tuntee kyseisen ihmisen. ...ja ∃x∃y : P (x, y) On olemassa ihminen x, joka tuntee ihmisen y. ∃y∃x : P (x, y) On olemassa ihminen y, jonka ihminen x tuntee. ∀x∀y : P (x, y) Kaikki ihmiset tuntevat kaikki ihmiset. ∀y∀x : P (x, y) Kaikki ihmiset tuntevat kaikki ihmiset. Loogisia ekvivalensseja I. Loogisesti ekvivalentteja lauseita ovat ∃x∃y : P (x, y) ≡ ∃y∃x : P (x, y) ja ∀x∀y : P (x, y) ≡ ∀y∀x : P (x, y) Voimme siis vaihtaa järjestystä, jos kvanttorit ovat samat. Esim. Tarkastellaan lausetta P (x) : x on hyvä. ∀x : P (x) Kaikki perusjoukon otukset ovat hyviä. ¬∃x : ¬P (x) Ei ole olemassa pahaa perusjoukon otusta. Lauseet ovat loogisesti ekvivalentteja. Loogisia ekvivalensseja II. Yleisesti on voimassa ∀x : P (x) ≡ ¬∃x : ¬P (x) ja ¬∀x : P (x) ≡ ∃x : ¬P (x) Loogisia ekvivalensseja III. otusta, eli esim. Olkoon perusjoukko äärellinen ja siinä n E = {x1 , x2 , . . . , xn }. Kvanttoreiden avulla muodostetut lauseet ∀x : P (x) ja ∃x : P (x) voidaan nyt kirjoittaa muodossa ∀x : P (x) ≡ P (x1 ) ∧ P (x2 ) ∧ . . . ∧ P (xn ) ja ∃x : P (x) ≡ P (x1 ) ∨ P (x2 ) ∨ . . . ∨ P (xn ). Edellisten nojalla saadaan ¬∀x : P (x) ≡ ¬(P (x1 ) ∧ P (x2 ) ∧ . . . ∧ P (xn )) ≡ ¬P (x1 ) ∨ ¬P (x2 ) ∨ . . . ∨ ¬P (xn )) ≡ ∃x : ¬P (x) ja ¬∃x : P (x) ≡ ¬(P (x1 ) ∨ P (x2 ) ∨ . . . ∨ P (xn )) ≡ ¬P (x1 ) ∧ ¬P (x2 ) ∧ . . . ∧ ¬P (xn )) ≡ ∀x : ¬P (x) Loogisesta päättelystä. Todistetaan predikaattilogiikan avulla, että So- krates on kuolevainen käyttäen premissejä Kaikki ihmiset ovat kuolevaisia ja Sokrates on ihminen. Huom. Propositiologiikan avulla emme voi esittää todistusta. Tarvitsemme seuraavassa universaalikvanttorin eliminointisääntöä (UE): ∀xP (x) vakio). lauseesta seuraa P (t), missä t on mikä tahansa termi (muuttuja tai Olkoon predikaatit K(x) : x on kuolevainen, Todistetaan siis I(x) : x on ihminen ∀x(I(x) → K(x)), I(Sokrates) K(Sokrates). 1. ∀x(I(x) → K(x)) 2. I(Sokrates) 3. I(Sokrates) → K(Sokrates) Premissi 1. Premissi 2. (1. ja UE:n nojalla) Jos Sokrates on ihmi- nen, hän on kuolevainen 4. K(Sokrates) (modus ponens, 2. ja 3.) Siis Sokrates on kuolevainen. Kvanttoreihin liittyviä päättelysääntöjä. Universaalikvanttorin eliminointisääntöä (UE): ∀xP (x) lauseesta seuraa P (t), missä t on mikä tahansa termi (muuttuja tai vakio). Olemassaolokvanttorin yleistyssääntö (OY): Jos P (t) on tosi jollakin t, voidaan kirjoittaa ∃xP (x). Olemassaolokvanttorin eliminointisääntö (OE): ∃xP (x) lauseesta seuraa P (t), jollekin t. 7 Matemaattinen todistaminen Notaatiosta. dossa Propositiologiikassa määrittelimme yhdistetyt lauseet muo- f (P ), g(P, Q),..., missä P, Q olivat atomilauseita. P (x), P (x, y),..., missä lauseen totuusarvo siis riippuu (perusjoukon) alkioista jotka sijoitetaan muuttujien x ja y paiPredikaatit määrittelimme muodossa kalle. Todistaminen. Usein haluamme todistaa matemaattisia lauseita, jotka ovat muotoa P → Q tai määrittelevät luonnollisia lukuja koskevan väitteen. Lauseet P ovat yleensä predikaatteja, eli sisältävät jotkin muuttujat. ja Q Todistuksissa implikaation lausetta Q P →Q lausetta P väitteeksi, joka halutaan todistaa. voidaan kutsua oletukseksi ja Todistusmenetelmät. Implikaation P → Q tapauksessa tarkastelemme kolmea todistusmenetelmää 1. Suora päättely 2. Epäsuora päättely 3. Yleinen epäsuora päättely Luonnollisia lukuja koskevien väitteiden osalta käsittelemme induktiotodistusta. 7.1 Suora päättely Suora päättely (todistus) perustuu modus ponens päättelyyn P, P → Q Q eli tautologiaan P ∧ (P → Q) → Q. oletus ) P Todistuksissa oletetaan, että lause ( seuraa, että lause ( P väite ) Q on tosi, niin väite implikaatio (P Q → Q) on tosi ja osoitetaan, että tästä on tosi. Tämä siis samalla tarkoittaa, että kun ei voi olla epätosi. Ts. oletuksen ja väitteen välillä on voimassa. Esim. 1 Jos x ja x ja y kokonaislukuja. Todistetaan suoran päättelyn avulla: parittomia lukuja, niin xy on pariton. Olkoon y ovat Todistus. Olkoon P = x ja y ovat parittomia lukuja ja Tehdään oletus: x ja Oletuksen nojalla m. y Q = xy on pariton. ovat parittomia lukuja on tosi. (P on tosi) x = 2m + 1 ja y = 2n + 1, joillekin kokonaisluvuille n Tästä seuraa, että xy = (2m + 1)(2n + 1) = 4mn + 2m + 2n + 1 = 2(2mn + m + n) + 1, eli xy on pariton luku. Siis väite on tosi. ja Esim. 2 n Olkoon on pariton, niin n kokonaisluku. n2 on pariton. Todistetaan suoran päättelyn avulla: Jos Todistus. Olkoon P = n on pariton ja Q = n2 on pariton. Tehdään oletus: n on pariton on tosi. (P on tosi) Oletuksen nojalla n = 2m + 1, joillekin kokonaisluvulle m. Tästä seuraa, että n2 = (2m + 1)(2m + 1) = 4m2 + 2m + 2m + 1 = 2(2m2 + 2m) + 1, eli n2 on pariton luku. Siis väite on tosi. 7.2 Epäsuora päättely Epäsuora päättely (todistus) perustuu päättelyyn P, ¬Q → ¬P Q, eli tautologiaan P ∧ (¬Q → ¬P ) → Q. Aiemmin osoitimme loogisen ekvivalenssin implikaatiolle (kontraposition laki) ¬Q → ¬P ≡ P → Q. Eli, jos voimme todistaa, että ¬Q → ¬P on voimassa, P → Q voimassa tiedämme että oletuksen ja väitteen välillä on implikaatio (kuten suorassa päättelyssä edellä). Todistamisesta. tosi ja tehdään oletus 2. (ns. ¬P on tosi, eli että voimassa. Tästä seuraa ristiriita, sillä oletuksen 1. nojalla P Q ¬Q → ¬P on P on tosi. olisi tosi ja epätosi, mikä on ristiriita!) Ristiriidasta voidaan päätellä, että antiteesin teen on antiteesi ) että ¬Q on tosi. Todistuksessa osoi- tetaan, että oletuksesta 2. seuraa, että (Siis lause P Epäsuorasta päättelyssä oletetaan, että (oletus 1.) täytyy olla tosi. ¬Q täytyy olla epätosi, eli väit- Esim. 1 Jos 2 n Olkoon n kokonaisluku. Todistetaan epäsuoran päättelyn avulla: on pariton, niin n on pariton. Todistus. Olkoon P = n2 on pariton ja Q = n on pariton. 2 Tehdään oletus 1.: n on pariton on tosi. (P on tosi) Tehdään oletus 2. (antiteesi): n on parillinen on tosi. (¬Q on tosi) Todistetaan suoran todistuksen avulla (¬Q → ¬P ): Jos n on parillinen, niin n2 on parillinen. Oletuksen 2. nojalla n = 2m, jollekin kokonaisluvulle. Tästä 2 2 2 seuraa, että n = 4m = 2(2m ), joka on parillinen kokonaisluku. Siis oletuksesta 2. seuraa, että Kun ¬P ¬P on tosi. on tosi, saadaan ristiriita oletuksen 1. kanssa (P on tosi), joten antiteesin täytyy olla epätosi. Siis: ¬Q on epätosi ja Q on tosi. Esim. 2 Jos 2 n Olkoon n kokonaisluku. Todistetaan epäsuoran päättelyn avulla: on parillinen, niin n on parillinen. Todistus. Olkoon P = n2 on parillinen ja Q = n on parillinen. 2 Tehdään oletus 1.: n on parillinen on tosi. (P on tosi) Tehdään oletus 2. (antiteesi): n on pariton on tosi. (¬Q on tosi) Todistetaan suoran todistuksen avulla (¬Q n2 on pariton. → ¬P ): Jos n on pariton, niin Oletuksen 2. nojalla n = 2m + 1, jollekin kokonaisluvulle. Tästä seuraa, että n2 = (2m + 1)2 = (2m + 1)(2m + 1) = 4m2 + 4m + 1 = 2(2m2 + 2m) + 1, joka on pariton kokonaisluku. Siis oletuksesta 2. seuraa, että ¬P on tosi. Tämä on ristiriita oletuksen 1. kanssa (P on tosi), joten antiteesin täytyy olla epätosi. Siis: ¬Q on epätosi ja Q on tosi. 7.3 Yleinen epäsuora päättely Yleinen epäsuora päättely (todistus) perustuu päättelyyn (P, ((P ∧ ¬Q) → E)) Q, eli tautologiaan P ∧ (P ∧ ¬Q) → E) → Q. Todistuksissa oletetaan, että ja johdetaan jokin epätosi ja väite Q P P ∧ ¬Q on tosi (antiteesi ¬Q on tosi), ristiriidasta seuraa että antiteesi ¬Q on on tosi, ristiriita. Tällöin on tosi. Todistuksessa siis ristiriidan ei välttämättä tarvitse olla lauseeseen Ristiriita voi olla esimerkiksi muotoa −1 > 0. P liittyvä. 7.4 Induktiotodistus Olkoon predikaatti P (n), joka määrittelee luonnollisia lukuja (N) koskevan väitteen. Olkoon tehtävänä todistaa, että lause P (n) on tosi kaikilla n ∈ N. Tarkastellaan todistamista induktioperiaatteen mukaan. Induktioperiaate: Olkoon P (n) predikaatti joka on määritelty kaikille luon- nollisille luvuille. Jos 1. P (1) 2. P (k):n on tosi, ja totuudesta jollakin arvolla k (k ≥ 1) totuus, niin P (n) on tosi kaikille luonnollisille luvuille n. seuraa aina P (k + 1):n Muotoillaan induktioperiaate kvanttoreiden avulla. Induktioperiaate: Olkoon P (n) predikaatti joka on määritelty kaikille luon- nollisille luvuille. Jos 1. P (1) 2. ∀k ≥ 1 : (P (k) → P (k + 1)) niin on tosi, ja ∀n : P (n) on tosi. on tosi, Induktiotodistus. Menetellään seuraavasti 1. (Perusaskel) Osoitetaan, että P (1) on tosi. 2. (Induktio-oletus) Tehdään induktio-oletus niin, että oletetaan van tosi arvolla P (n) ole- n = k. 3. (Induktioaskel) Osoitetaan, että induktio-oletuksesta seuraa, että 1) P (k+ on tosi. 4. (Johtopäätös) Todistettava väite seuraa induktioperiaatteesta. Vrt. dominopalikat: 1. (Perusaskel) Palikka 1. kaatuu. 2. (Induktio-oletus ja Induktioaskel) Palikka tietyssä paikassa kaatuu ja kaataa vierekkäisen palikan. 3. (Johtopäätös) Kaikki palikat kaatuvat. Esim. 1 on tosi Todista induktiolla, että predikaatti P (n) := n2 + n on parillinen ∀n ∈ N. Todistus. Perusaskel: P (1) = 2 on parillinen. Tosi. Induktio-oletus (IO): P (k) on tosi, eli k 2 + k = 2p, jollakin p ∈ N. Induktioaskel: P (k + 1) = (k + 1)2 + (k + 1) = k 2 + 2k + 1 + k + 1 2 =k + k} +2(k + 1) | {z 2p = 2p + 2(k + 1) |{z} IO = 2(p + k + 1). Siis P (k + 1) on tosi. Johtopäätös: induktioperiaatteen nojalla n2 +n on parillinen kaikilla n ∈ N. Esim. 2 Todista induktiolla, että predikaatti kolmella on tosi ∀n ∈ N. P (n) := n3 − n on jaollinen Todistus. Perusaskel: P (1) = 0 on jaollinen kolmella. Tosi. (P (2) = 23 − 2 = 8 − 2 = 6 = 3 × 2 on jaollinen kolmella.) 3 Induktio-oletus (IO): Oletetaan että P (k) on tosi, eli k − k = 3p, jollakin p ∈ N. Induktioaskel: Silloin myös k + 1:n pitää olla jaollinen kolmella: P (k + 1) = (k + 1)3 − (k + 1) = k 3 + 3k 2 + 3k + 1 − k − 1 3 =k − k} +3(k 2 + k) | {z 3p = 3p + 3(k 2 + k) = 3(p + k 2 + k). |{z} IO Siis P (k + 1) on tosi. Johtopäätös: Induktioperiaatteen nojalla jaollinen kolmella ∀n ∈ N. n3 − n on Esim. 3 Todista induktiolla, että predikaatti kuudella on tosi ∀n ∈ N. P (n) := 7n − 1 on jaollinen Todistus. Perusaskel: P (1) = 71 − 1 = 6 on jaollinen kuudella. Tosi. Induktio-oletus (IO): Oletetaan että P (k) on tosi, eli p ∈ N. Induktioaskel: Silloin myös k + 1:n 7k − 1 = 6p, jollakin pitää olla jaollinen kuudella: P (k + 1) = 7(k+1) − 1 = 7(7k ) − 1 = 7(7k ) − 7 + 7 − 1 = 7(7k − 1) + 6. = 7(6p) + 6. |{z} IO = 6(7p + 1). Siis P (k + 1) on tosi. Johtopäätös: Induktioperiaatteen nojalla jaollinen kuudella ∀n ∈ N. 7n − 1 on Sarjoista. Tarkastellaan sarjojen osasummia, joissa n (ensimmäistä) ter- miä: n(n+1) 2 1. 1 + 2 + 3 + ... + n = 2. 12 + 22 + 32 + . . . + n2 = n(n+1)(2n+1) (neliösarja) 6 3. 13 + 23 + 33 + . . . + n3 = n2 (n+1)2 (kuutiosarja) 4 4. a + (a + d) + (a + 2d) + . . . + (a + (n − 1)d) = n a+(a+(n−1)d) 2 (aritmeettinen sarja) 5. a + aq + aq 2 + . . . + aq n−1 = a(1−q n ) , 1−q q ̸= 1 (geometrinen sarja) Esim. 4 P (n) := 1 Todista induktiolla, että predikaatti + 2 + 3 + . . . + n = n(n+1) on tosi ∀n 2 Todistus. Perusaskel: P (1) : 1 = ∈ N. 1(1+1) 2 = 1. Tosi. Induktio-oletus (IO): Oletetaan että P (k) on tosi, eli 1+2+3+. . .+k = Induktioaskel: Osasummalle ((k + 1) termiä) on voimassa 1 + 2 + 3 + . . . + k + (k + 1) |{z} = IO k(k+1) . 2 k(k + 1) k 2 + k + 2k + 2 + (k + 1) = 2 2 k 2 + 3k + 2 2 (k + 1)(k + 2) = 2 (k + 1)((k + 1) + 1) = 2 = P (k + 1) on tosi. Johtopäätös: , ∀n ∈ N. . . . + n = n(n+1) 2 Siis Induktioperiaatteen nojalla 1+2+3+ Esim. 5 Todista induktiolla, että predikaatti P (n) := a + (a + d) + (a + 2d) + . . . + (a + (n − 1)d) = n a+(a+(n−1)d) 2 ∀n ∈ N. Todistus. Perusaskel: P (1) : a = a+a 2 Induktio-oletus (IO): Oletetaan että . . . + (a + (k − 1)d) = k a+(a+(k−1)d) . 2 = a. Tosi. P (k) on tosi, eli on tosi a + (a + d) + (a + 2d) + Induktioaskel: Osasummalle ((k + 1) termiä) on voimassa a + (a + d) + (a + 2d) + . . . + (a + (k − 1)d) + (a + kd) a + (a + (k − 1)d) + (a + kd) = k |{z} 2 IO k(a + (a + (k − 1)d)) + 2(a + kd) 2 2ka + k(k − 1)d + 2a + 2kd = 2 (k + 1)2a + (k + 1)kd = 2 a + (a + kd) = (k + 1) 2 = P (k + 1) on tosi. Johtopäätös: Induktioperiaatteen nojalla a + (a + d) + , ∀n ∈ N. (a + 2d) + . . . + (a + (n − 1)d) = n a+(a+(n−1)d) 2 Siis Esim. 6 on tosi Todista induktiolla, että Bernoullin epäyhtälö ∀n ∈ N, kun x∈R ja x > −1. (1 + x)n ≥ 1 + nx Todistus. Oletetaan x ∈ R ja x > −1. Perusaskel: Kun (1 + x)1 = 1 + x. Tosi. k Oletetaan että (1 + x) ≥ 1 + kx n = 1, Induktio-oletus (IO): niin on tosi. Induktioaskel: Silloin: (1 + x)(k+1) = (1 + x)(1 + x)k ≥ (1 + x)(1 + kx) |{z} IO = 1 + kx + x + |{z} kx2 ≥0 ≥ 1 + kx + x = 1 + (k + 1)x. P (k + 1) := (1 + x)(k+1) ≥ 1 + (k + 1)x on tosi. Johtopäätös: Induktioperiaatteen nojalla epäyhtälö on voimassa ∀n ∈ N, kun x ∈ R ja x > −1. Siis 8 Relaatiot Määritelmä. ja B Olkoon A ja B epätyhjiä joukkoja. Relaatio R joukkojen välillä määritellään R ⊆ A × B, missä A×B on joukkojen A ja B karteesinen tulo A × B = {(a, b) | a ∈ A ∧ b ∈ B}. relaatio joukossa A. Jos (a, b) ∈ R, sanotaan, että alkiot a ja b ovat relaatiossa R. Jos A=B Jos (a, b) ∈ R, sanotaan, että R on voidaan merkitä aRb. Relaatio voidaan mahdollisesti esittää muodossa R = {(a, b) ∈ A × B | aRb}, missä aRb on jonkin tunnetun predikaatin P (a, b) määrittelemä. A Esim. 1 Olkoon A=R ja R relaatio joukossa R R = {(x, y) | x ∈ R, y ∈ R, x2 + y 2 = 1}. Relaatio siis määrittelee karteesisen tason osajoukon, eli R ⊆ R × R. Esimerkin relaatiolla R on esitys R = {v | v ∈ R2 , ∥v∥2 = 1}, missä v = (x, y) siis on tason R2 vektori. Esim. 2 A = {Ulla, Saara, Ville, Kaisa} B = {Jenni, Heikki, Tuuli, Minna} Olkoon joukot Olettaen tietyn predikaatin, joukkojen A ja B ja välinen relaatio voisi olla R = {(Ulla,Jenni), (Ulla,Heikki), (Saara,Tuuli), (Saara,Minna)} Relaation esitystavat. Olkoon A ja B äärellisiä joukkoja. Relaatio voidaa esittää seuraavasti 1. Joukkona predikaatin avulla 2. Järjestettyjen parien joukkona (ts. alkiot voidaan luetella.) 3. Suunnatun graan avulla 4. Matriisin avulla Relaation esitys suunnatun graan ja nuolikaavion avulla. Olkoon joukot A = {a1 , a2 , . . . , am } ja B = {b1 , b2 , . . . , bn }. R ⊆ A×B ns. nuolikaavion avulla, voimme määritellä, a −→ b tarkoittaa, että (a, b) ∈ R. Jos esitämme relaation että nuoli A = B , voimme esittää relaation R ⊆ A × A suunnatun graan G avulla, A alkiot vastaavat graan solmupisteitä. Graan tapauksessa solmujen a ja b välillä on kaari, jos (a, b) ∈ R. Jos siten että joukon Relaation matriisiesitys. A = {a1 , a2 , . . . , am } ja Olkoon joukot B = {b1 , b2 , . . . , bn }. R ⊆ A × B matriisin avulla, voimme määritellä matM rivit (m kpl) vastaavat joukon A alkioita ja kpl) vastaavat joukon B alkioita. Jos esitämme relaation riisin M, siten että matriisin matriisin sarakkeet (n Relaatiota R jossa alkiot × n) matriisi M M11 M12 . . . M1n M21 M22 . . . M2n M = .. . . .. . . . . . . Mm1 Mm2 . . . Mmn vastaava (m Mij , i = 1, . . . , m ja j = 1, . . . , n. Alkiot saavat arvon tosi (T) tai epätosi (E), siten, että Mij = T, jos (ai , bj ) ∈ R Mij = E, jos (ai , bj ) ∈ R Eli matriisin alkiolla E jos pari (ai , bj ) Mij on arvo T, jos pari (ai , bj ) kuuluu relaatioon ja arvo ei kuulu relaatioon. Olettaen, että arvoa T vastaa luku 1 ja arvoa E vastaa luku 0, saamme (Boom×n len) matriisin M ∈ B alkiot Mij = 1, jos (ai , bj ) ∈ R Mij = 0, jos (ai , bj ) ∈ R Esim. 3 Olkoon A = {1, 2, 3, 4, 5, 6} ja relaatio joukossa R = {(x, y) | x ∈ A, y ∈ A, y Relaatioon R A jaollinen luvulla x}. kuuluvat alkiot voidaan luetella: R = {(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 2), (2, 4), (2, 6), (3, 3), (3, 6), (4, 4), (5, 5), (6, 6)}. Esitetään relaatio nyt 6 × 6 matriisin T T E T E E M = E E E E E E avulla T E T E E E Piirretään vastaava suunnattu graa... T T E T E E T E E E T E T T T E E T Esim. 4 A = {Ulla, Saara, Ville, Kaisa} B = {Jenni, Heikki, Tuuli, Minna} Olkoon joukot Olkoon relaatio R ⊆ A × B, ja s.e. R = {(x, y) | x ∈ A, y ∈ B, P (x, y)}, P (x, y) :=x jossa predikaatti on y:n äiti. Relaation matriisi/taulukkoesitys voisi olla muotoa P(x, y) x\ y Jenni Heikki Tuuli Miina Ulla T T E E Saara E E T T Ville E E E E Kaisa E E E E Taulukosta voidaan lukea relaation R alkiot (T arvojen mukaan) R = {(Ulla,Jenni), (Ulla,Heikki), (Saara,Tuuli), (Saara,Minna)} Määritelmiä. Olkoon R relaatio joukossa A. Relaation sanotaan olevan • Reeksiivinen : xRx kaikilla x ∈ A. • Symmetrinen : xRy → yRx kaikilla x, y ∈ A. • Transitiivinen : (xRy • Ekvivalenssirelaatio, jos se on reeksiivinen, symmetrinen ja transitiivi- ja yRz ) → xRz kaikilla x, y, z ∈ A nen. (x, x) ∈ R kaikilla (x, y) ∈ R, niin (y, x) ∈ R. (y, z) ∈ R, niin (x, z) ∈ R. Järjestettyjen parien osalta reeksiivisyys tarkoittaa, että alkioilla x ∈ A. Symmetria tarkoittaa, että jos Transitiivisyys: Jos (x, y) ∈ R ja Esim. 1 Reaalilukujen joukossa, yhtäsuuruuden (=) määrittelemä relaatio on ekvivalenssirelaatio. Esim. 2 A on kaikkien ihmisten joukko. MääritelP (x, y) :=x on samanikäinen kuin y joukossa A. Vastaava R = {(x, y) | x, y ∈ A, P (x, y)} voidaan osoittaa olevan ekvivalenssiOletetaan, että joukko lään predikaatti relaatio relaatio. Relaatio on reeksiivinen: Kaikki ihmiset ovat relaatiossa itsensä kanssa. Relaatio on symmetrinen: Jos ihminen on samanikäinen x:n x on samanikäinen y :n kanssa, niin y kanssa. Relaatio on transitiivinen, koska jos samanikäisiä, niin varmasti z x ja y ovat samanikäisiä ja on samanikäinen heidän kanssaan. Eli, relaatio on ekvivalenssirelaatio. y ja z ovat On mahdollista, että relaatio R joukossa A ei sisällä tiettyä ominaisuutta (esim. reeksiivisyys, symmetria, transitiivisyys,...). Voidaan kuitenkin muo∗ ∗ dostaa toinen relaatio R , siten että R ⊆ R ja jossa haluttu ominaisuus on voimassa. Määritelmä. Relaatio R∗ on relaation R sulkeuma ominaisuuden p suhteen jos 1. Relaatiolla 2. R∗ on ominaisuus p R ⊆ R∗ 3. Relaatio R∗ on osajoukko kaikille relaatioille S, joille R ⊆ S ja joilla ominaisuus p on voimassa. Huom. Relaatio xSy . R∗ on relaation S osajoukko (R∗ ⊆ S ), jos ja vain jos xR∗ y → Määritelmän kolmas ehto takaa, että sulkeuma on pienin mahdollinen joukko, jolle ominaisuus p on voimassa. Esim. Olkoon A = {1, 2, 3} ja relaatio joukossa A muotoa R = {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3)}. Relaatio ei ole reeksiivinen, symmetrinen tai transitiivinen. Voimme kuitenkin muodostaa sulkeumat ominaisuuksien suhteen. Relaation R sulkeuma reeksiivisyyden suhteen on relaatio R∗ = {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3), (2, 2), (3, 3)}. Relaation R sulkeuma symmetrian suhteen on relaatio R∗ = {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3), (2, 1), (3, 2)}. Relaation R sulkeuma transitiivisyyden suhteen tehdään useassa vaiheessa. (3, 1) ja (1, 2) takia lisätään (3, 2), alkioiden (2, 3) ja (3, 1) (2, 1), alkioiden (3, 1) ja (1, 3) takia lisätään (3, 3), eli saadaan Aluksi, alkioiden takia lisätään R∗ = {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3), (3, 2), (2, 1), (3, 3)}. Nyt tarvitaan toinen kierros alkioiden (uusi) alkio (2, 1) ja (1, 2) takia, eli lisätään (2, 2), ja saadaan lopulta relaation R sulkeuma transitiivisyyden suhteen R∗ = {(1, 1), (1, 2), (1, 3), (3, 1), (2, 3), (3, 2), (2, 1), (3, 3), (2, 2)}. Määritelmä. A määrittelemä R ekvivalenssirelaatio joukossa A. Alkion x ∈ ekvivalenssiluokka Ex on joukko Olkoon relaatio Ex := {z ∈ A | zRx}. Esim. Olkoon relaatio R joukossa naisluku. Voidaan osoittaa, että R R, siten että xRy ↔ x − y on ekvivalenssirelaatio (HT). Alkion määrittelemä ekvivalenssiluokka on muotoa E√5 = {z ∈ R | z − eli E√5 = {. . . , −2 + on koko- √ 5 on kokonaisluku}, √ √ √ √ √ 5, −1 + 5, 5, 1 + 5, 2 + 5, . . .}. √ 5 Määritelmä. Joukon A ositus 1. Ai 2. A = A 1 ∪ A 2 ∪ . . ., 3. Ai ∩ Aj = ∅, Lause. on epätyhjä, kaikilla Olkoon kun i ̸= j . on kokoelma joukkoja A1 , A2 . . . , siten, että i = 1, 2, . . . , (Joukot ovat erillisiä ) R ekvivalenssirelaatio joukossa A. Tällöin ekvivalenssiluokat A osituksen. määrittelevät joukon Olettaen, että joukon A (äärellinen) ositus koostuu joukoista A1 , A 2 . . . , An voimme kirjoittaa 1. Ai 2. A = A1 ∪ A2 ∪ . . . ∪ An , 3. Ai ∩ Aj = ∅, Esim. 1 on epätyhjä, kaikilla kun i ̸= j . i = 1, 2, . . . , n (Joukot ovat Kaikkien ihmisten joukon ositus voidaan suorittaa ekvivalenssire- laation avulla, jossa predikaatti Esim. 2 erillisiä ) P (x, y) :=x on samanikäinen kuin y. UEF:n opiskelijoiden joukon ositus pääaineen mukaan. Määritelmiä. Olkoon R relaatio joukossa A. Relaation sanotaan olevan • Antisymmetrinen : (xRy • Osittainen järjestys, jos se on reeksiivinen, antisymmetrinen ja transi- ja yRx) → x = y kaikilla x, y ∈ A. tiivinen. • Täydellinen järjestys, jos se on osittainen järjestys ja kaikilla x, y ∈ A on voimassa xRy tai yRx. Järjestettyjen parien osalta antisymmetrisyys tarkoittaa, että jos ja x ̸= y , Esim. 1 niin (y, x) ∈ R. (x, y) ∈ R Luonnollisten lukujen joukossa predikaatin y jaollinen luvulla x määrittelemä relaatio on osittainen järjestys. Esim. 2 Reaalilukujen joukossa, vertailun ≤ määrittelemä relaatio on täy- dellinen järjestys. Olkoon ≤:= {(x, y) | x, y ∈ R, luku x on pienempi tai yhtäsuuri kuin luku y} Määritelmä. kojen välillä B ja C R relaatio joukkojen A ja B välillä ja S relaatio joukYhdistetty relaatio S ◦ R on relaatio joukkojen A ja C Olkoon välillä. ja määritellään S ◦ R ⊆ A × C, missä S ◦ R = {(a, c) | a ∈ A, c ∈ C ja (a, b) ∈ R, (b, c) ∈ S, Yhdistetyn relaation tapauksessa joukon B jollakin b alkiot siis toimivat relaation vä- littävinä alkioina a(S ◦ R)c ↔ ∃b ∈ B : (aRb ∧ bSc) Huom. S ◦ R ̸= R ◦ S , ∈ B}. eli vaihdannaisuus ei ole voimassa. Esim. 1 Olkoon joukot A = {a, b}, B = {1, 2, 3}, C = {x, y}. Olkoon relaatiot • R⊆A×B • S ⊆B×C missä • R = {(a, 1), (a, 2), (a, 3), (b, 2)} • S = {(1, y), (2, x), (3, x)}. Yhdistetty relaatio S ◦ R = {(a, y), (a, x), (b, x)}. Yhdistetyn relaation matriisi. A = {a1 , a2 , . . . , am }, B = {b1 , b2 , . . . , bp }, C = {c1 , c2 , . . . , cn } Olkoon joukot ja • relaatiota R⊆A×B vastaava matriisi M R (m × p-matriisi) • relaatiota S ⊆B×C vastaava matriisi M S (p × n-matriisi) • relaatiota S◦R⊆A×C Matriisin MR ja matriisin vastaava matriisi alkiot (indekseillä M S M S◦R (m × n-matriisi) i = 1, . . . , m, j = 1, . . . , p): MijR = T, jos (ai , bj ) ∈ R MijR = E, jos (ai , bj ) ∈ R, alkiot (indekseillä i = 1, . . . , p, j = 1, . . . , n): MijS = T, jos (bi , cj ) ∈ S MijS = E, jos (bi , cj ) ∈ S. ... Matriisi M S◦R voidaan laskea matriisien MR ja MS "loogisena tulona": M S◦R = M R ⊙ M S , missä alkiot (indekseillä i = 1, . . . , m, j = 1, . . . , n): MijS◦R = p ∨ R S Mik ∧ Mkj k=1 Edellä notaatio p ∨ R S S S S Mik ∧ Mkj := (Mi1R ∧ M1j ) ∨ (Mi2R ∧ M2j ) ∨ . . . ∨ (MipR ∧ Mpj ). k=1 vastaa "loogista pistetuloa"matriisin sarakkeen välillä. M R i:nen rivin ja matriisin M S j :nen ... S R Kaikilla indekseillä k , termit Mik ∧ Mkj saavat arvon T , jos ja vain jos R Mkj = T ja arvon E muulloin. Tästä seuraa, että lause p ∨ S Mik = R S S S S Mik ∧ Mkj = (Mi1R ∧ M1j ) ∨ (Mi2R ∧ M2j ) ∨ . . . ∨ (MipR ∧ Mpj ). k=1 saa arvon T, jos on olemassa termi S R Mik ∧ Mkj = T, jollakin indeksillä k. Esim. 2 Olkoon joukot A = {a, b}, B = {1, 2, 3}, C = {x, y}. Olkoon relaatiot • R⊆A×B • S ⊆B×C missä • R = {(a, 1), (a, 2), (a, 3), (b, 2)} • S = {(1, y), (2, x), (3, x)}. ... ... Saamme relaatioille R ja S matriisit ( R M = ja T T T E T E E T MS = T E . T E Lasketaan yhdistettyä relaatiota S◦R⊆A×C ( M S◦R = M R ⊙ M S = ... ) T T T E T E vastaava matriisi ) E T T E . T E ... Matriisi M S◦R S◦R M11 on nyt = 3 ∨ 2×2 matriisi, jolla alkiot S R M1k ∧ Mk1 = (T ∧ E) ∨ (T ∧ T ) ∨ (T ∧ T ) = T k=1 S◦R M12 = 3 ∨ R S M1k ∧ Mk2 = (T ∧ T ) ∨ (T ∧ E) ∨ (T ∧ E) = T k=1 S◦R M21 = 3 ∨ R S M2k ∧ Mk1 = (E ∧ E) ∨ (T ∧ T ) ∨ (E ∧ T ) = T k=1 S◦R M22 = 3 ∨ R S M2k ∧ Mk2 = (E ∧ T ) ∨ (T ∧ E) ∨ (E ∧ E) = E k=1 ( eli M S◦R = T T T E ) . ... Selvennetään laskentaa vielä. Alkio S◦R M11 vastaa 1. rivin ja 1. sarakkeen "loogista pistetuloa": ( Alkio S◦R M12 S◦R M21 E T T E . T E vastaa 1. rivin ja 2. sarakkeen "loogista pistetuloa": ( Alkio T T T E T E ) T T T E T E ) E T T E . T E vastaa 2. rivin ja 1. sarakkeen "loogista pistetuloa": ( T T T E T E ) E T T E . T E ja Alkio S◦R M22 vastaa 2. rivin ja 2. sarakkeen "loogista pistetuloa": ( T T T E T E ) E T T E . T E Esim. 3 Lentoreitit "pallon"pinnalla. Olkoon A kaupunkien joukko. R joukossa A, siten, että aRb jos ja vain jos on olemassa kaupungista a kaupunkiin b. Määritellään relaatio suora lento Lasketaan yhdistettyä relaatiota R ◦ R vastaavan matriisi MATLAB:n avulla. Matriisista voimme esim. laskea kaikille kaupungeille niiden kaupunkien määrän joihin pääsemme yhden välilaskun kautta. Lasketaan MATLAB:n avulla: M = randn(10) > 0.6; MM = (double(M)*double(M)) > 0; sum(MM,2) R ⊆ A × B on relaatio R joukkojen A ja B välillä. että relaatio R on joukosta A joukkoon B ja käyttää Aiemmin sanoimme, että Voimme myös sanoa, seuraavia nimityksiä: Määritelmiä. Olkoon R ⊆ A × B. R lähtöjoukko R maalijoukko lähtöjoukon alkion x ∈ A kuvajoukko on R(x) := {y ∈ B | (x, y) ∈ R}. • maalijoukon alkion y ∈ B alkukuvajoukko R−1 (y) := {x ∈ A | (x, y) ∈ R}. • Relaation R arvojoukko R(A) on se B :n • • • Joukko Joukko A B on relaation on relaation on osajoukko joihin relaatio on määritelty R(A) := {y ∈ B | ∃x (x, y) ∈ R}. • Relaation R määrittelyjoukko R−1 (B) on se A:n osajoukko jolle relaatio on määritelty −1 R (B) := {x ∈ A | ∃y (x, y) ∈ R}. Määritelmä. teisrelaatio R −1 R relaatio joukkojen A ja B välillä. Relaation R joukkojen B ja A välillä määritellään Olkoon kän- R−1 ⊆ B × A, missä R−1 = {(b, a) | (a, b) ∈ R}. Relaation R känteisrelaatio R−1 sisältää siis kaikki relaation R parit, mutta niin että parien alkioiden järjestys on vaihtunut. Känteisrelaation matriisi. me muodostaa relaation sina, eli R −1 M R relaation R matriisiesitys. VoimR−1 R matriisin M suoraan matriisin M transpooOlkoon MR −1 = (M R )T . × n) matriisi M , Mij , i = 1, . . . , m, j = 1, . . . , n. Matriisin transpoosi on (n × m) M T , jolla alkiot MjiT = Mij , i = 1, . . . , m, j = 1, . . . , n. Matriisin transpoosi määritellään seuraavasti. Olkoon (m jolla alkiot matriisi Esim. Olkoon relaation R matriisi 1 1 MR = 0 0 . 0 1 Relaation R−1 matriisi saadaan edellisestä transpoosina M R−1 ( R T = (M ) = 1 0 0 1 0 1 ) 9 Funktiot Määritelmä. Olkoon A ja funktio (kuvaus ), jos kaikille että B epätyhjiä joukkoja. Relaatio f ⊆ A × B on x ∈ A on olemassa yksikäsitteinen y ∈ B , siten, xf y . Määritelmän mukaan voimme siis kirjoittaa kaksi ehtoa funktiolle: 1. ∀x ∈ A ∃y ∈ B : (x, y) ∈ f 2. ((x, y) ∈f ja (funktion arvojen olemassaolo) (x, z) ∈ f ) → y = z . (funktion arvojen yksikäsitteisyys) Notaatiosta ja nimityksistä. Funktiot ovat siis relaatioiden erikoistapaus. Yleensä funktioiden tapauksessa käytetään seuraavanlaista notaatiota. • f ⊆A×B • (x, y) ∈ f • y esitetään muodossa esitetään muodossa on funktion f arvo f : A → B. f (x) = y . (kuvapiste) pisteessä x. määrittelyjoukko (domain ). • Joukko A on funktion lähtöjoukko ja • Joukko B on funktion • Joukko f (A) := {f (x) | x ∈ A}, f (A) ⊆ B ( range ). maalijoukko (codomain ). Joukko f (X) := {f (x) | x ∈ X} • Joukko f −1 (Y ) := {x ∈ A | f (x) ∈ Y } ko. arvojoukko joukon X ⊆ A kuvajoukko. • on on funktion on joukon Y ⊆ B alkukuvajouk- Esim. 1 Olkoon joukot {(a, 1), (b, 1), (b, 2), (c, 3)}. A = {a, b, c} ja B = {1, 2, 3, 4} Funktion määrittelyn ehto 1. on voimassa relaatiolle R, ja relaatio R = koska kaikilla mää- rittelyjoukon alkioilla (x) on olemassa jokin maalijoukon alkio (y ), siten että (x, y) ∈ R. Relaatio R ei ole kuitenkaan funktio, koska arvojen yksikäsitteisyys (ehto 2.) ei ole voimassa. Piirretään nuolikaavio. Esim. 2 R2 -pallon relaatio joukossa (ympyrän) pinta. Olkoon R A=R ja R aiemmin esitelty R = {(x, y) | x ∈ R, y ∈ R, x2 + y 2 = 1}. Relaatio R ei ole funktio R : R → R, sillä arvojen yksikäsitteisyys ei ole voimassa. Emme myöskään voi määritellä funktion arvoa välin [−1, 1] ulko- puolella. Rajoittumalla joukkoon X = [−1, 1], 1. f1 : [−1, 1] → R, missä 2. f2 : [−1, 1] → R, missä Funktiot voimme muodostaa kaksi funktiota √ 1 − x2 √ y = f2 (x) = − 1 − x2 . y = f1 (x) = f1 ja f2 vastaavat nyt puoliympyröitä karteesisessa tasossa. Ts. saamR) kahden funktion avulla. me esitettyä ympyrän pinnan (relaation Injektio, surjektio ja bijektio. • Funktio f :A→B on injektio jos jokaiselle maalijoukon alkiolle ku- vautuu vain yksi määrittelyjoukon alkio, eli f (x1 ) = f (x2 ) → x1 = x2 , • Funktio f : A → B on eli x1 ̸= x2 → f (x1 ) ̸= f (x2 ). surjektio jos jokaiselle maalijoukon alkiolle kuvautuu vähintään yksi määrittelyjoukon alkio, eli ∀y ∈ B ∃x ∈ A : y = f (x). • Funktio f :A→B on Funktio on siis surjektio jos bijektio f (A) = B . jos se on injektio ja surjektio. Esim. Olkoon joukot Relaatio f A = {a, b, c} ja B = {1, 2, 3, 4} ja relaatio f ⊆ A × B , f = {(a, 1), (b, 1), (c, 3)}. on funktio f : A → B. Funktio f ei ole injektio. Funktio f ei ole surjektio. Funktion kuvaaja. Jos funktion määrittely- ja kuvajoukko ovat äärettö- miä voimme mahdollisesti hahmotella funktion kuvaajan (graan), eli joukon {(x, f (x)) | x ∈ A}. Esim. f : Z → Z, f (x) = 2x + 1. f : R → R, f (x) = 2x + 1. f : Z → Z, f (x) = x2 . f : R → R, f (x) = x2 . Käänteisfunktio. Funktion f käänteisrelaatio on käänteisfunktio, jos se on funktio. Olkoon f funktio, jolla on käänteisfunktio f −1 . f −1 . Käänteisrelaatio on Tällöin f (x) = y ja f −1 (y) = x. Lause. Funktiolla f : A → B funktio f on bijektio. on käänteisfunktio f −1 : B → A, jos ja vain jos Esim. Olkoon f : R → R, f (x) = ax + b, missä kertoimet a, b ∈ R. Tarkastellaan funktiota Olkoon kaikille f. f (x1 ) = f (x2 ), eli ax1 + b = ax2 + b. x1 , x2 ∈ R. Funktio on siis injektio. y ∈ R. Koska kaikille y ∈ R niin funktio f on surjektio. Erityisesti kaikille y ∈ R. Olkoon Funktion f käänteisfunktio on Tästä seuraa, että x ∈ R, s.e. ax + b = y , x = (y − b)/a, jolloin f (x) = y on olemassa olkoon x1 = x2 f −1 : R → R, f −1 (x) = (x − b)/a. Yhdistetty funktio. f : A → B ja g : B → C . Voidaan g ◦ f on funktio g ◦ f : A → C , missä Olkoon funktiot osoittaa, että yhdistetty relaatio (g ◦ f )(x) = g(f (x)). Identiteettifunktio. Identiteettifunktio Id(x) Id :A→A määritellään := x. −1 bijektio, jolloin sillä on käänteisfunktio g := f . Voimme −1 kirjoittaa yhdistetyn funktion f ◦ f arvon pisteessä x muodossa Olkoon funktio f (f −1 ◦ f )(x) = (f −1 (f (x)) = x = Id(x). Esim. Olkoon a, b ∈ R. g : R → R, g(x) = x2 ja f : R → R, f (x) = ax + b, Voimme muodostaa yhdistetyt funktiot: (g ◦ f )(x) = g(f (x)) = (ax + b)2 . ja (f ◦ g)(x) = f (g(x)) = ax2 + b. missä Boolen algebra ja funktio. Boolen algebra on joukko B, joka sisältää alkiot 0 ja 1, jossa kaikille alkioille on määritelty komplementti (¬f ), ja jossa on määritelty laskutoimitukset ja ∨, siten että seuraavat ehdot ovat voimassa: 1. Operaatiolle ∨ on olemassa neutraalialkio (0): f ∨0=f 2. Operaatiolle ∧ on olemassa neutraalialkio (1): f ∧1=f 3. f ∨g =g∨f 4. f ∧g =g∧f 5. (f ∨ g) ∨ h = f ∨ (g ∨ h) 6. (f ∧ g) ∧ h = f ∧ (g ∧ h) 7. f ∨ (g ∧ h) = (f ∨ g) ∧ (f ∨ h) 8. f ∧ (g ∨ h) = (f ∧ g) ∨ (f ∧ g) ∧ 9. kaikille alkioille f, on olemassa ¬f s.e. : f ∨ ¬f = 1 10. kaikille alkioille f, on olemassa ¬f s.e. : f ∧ ¬f = 0 Boolen algebra on kokoelma (B, ∧, ∨, ¬, 0, 1). Boolen algebra voidaan tulkita struktuuriksi, joka vastaa aiemmin käsiteltyä propositiologiikkaa (lausekalkyyli). f yhdistetty f (P, Q) = P ∧ Q. Erityisesti, olkoon Esim. lause, joka koostuu atomilauseista (n kpl). Voimme tulkita yhdistetyt lauseet Boolen funktioiksi f : Bn → B. Funktion sovittaminen pistejoukkoon (lyhyesti, idean tasolla). Funktiolla voi olla useita muuttujia. Tarkastellaan esimerkkinä kahden muuttujan polynomia, joka on reaaliarvoinen funktio. Olkoon erityisesti funktio f : [0, 1] × [0, 1] → R, missä f on kahden muuttujan polynomi f (x, y) := c1 x + c2 x2 + c3 x3 + c4 y + c5 y 2 + c6 y 3 + c7 xy, jolla kertoimet c1 , c2 , . . . , c7 ∈ R. Esitetään funktio siten, että kertoimet c1 , c2 , . . . , c7 vastaavat polynomin pie- Least Squares Fitting ) nimmän neliösumman sovitusta ( S = {(v1 , z1 ), . . . , (vm , zm )} ⊆ [0, 1] × R, (xi , yi ), i = 1, . . . , m. koon Sovituksen avulla saamme siis kertoimet 2 tiettyyn datajouk- missä tason vektorit vi = c1 , c2 , . . . , c7 . Havainnollistetaan muodostetun funktion graaa [0, 1]2 } MATLAB:n avulla. {((x, y), f (x, y)) | (x, y) ∈ 10 Rekursio Lukujono. Reaalilukujono (a1 , a2 , . . .) on funktio f : N → R, missä f (n) = an , ja n ∈ N, an ∈ R. Indeksi n ilmaisee luvun paikan jonossa ja Esim. a) 1,3,5,7, . . . b) 2,4,8,16,32,. . . c) 1,2,6,24,120, . . . an on jonon alkio paikassa n. Jonon esittäminen. Usein tehtävä on löytää menetelmä jonon arvojen an laskemiseksi. Lukujono voidaan mahdollisesti esittää rekursiokaavan avulla, jossa jonon luvun arvo riippuu jonkin säännön mukaan edeltävistä luvuista. Rekursiokaavassa jokainen jonon alkio esitetään edellisten alkioiden avulla. Jotta rekursiokaavaa voidaan käyttää, on jonon kuvaukseen liityttävä riittävästi tietoa miten ensimmäiset luvut muodostuvat. Rekursiokaava. Olkoon (a1 , a2 , . . .) reaalilukujono. Jono on määritelty re- kursiivisesti, jos an = f (n, an−1 , an−2 , . . . , an−k ) missä f on funktio f : N × Rk → R. taluvun rekursiokaavan, arvoista. Edellä yhtälö määrittelee eli jonon alkion arvo riippuu k :n k:nnen ker- aiemman alkion Esim. 1 Tarkastellaan lukujonoa 1,3,5,7,. . . . Näyttää siis, että lukujono koostuu positiivisista parittomista kokonaisluvuista, alkaen ykkösestä. Lukujonon alkiot voidaan siis esittää funktion f : N → N, f (n) = 2n − 1 avulla. Voimme johtaa myös lukujonon rekursiokaavan: { a1 = 1; ai = ai−1 + 2, ∀i > 1. Jälkimmäinen yhtälö määrittelee 1. kertaluvun rekursiokaava. Esim. 2 Fibonaccin lukujono on jono (0, 1, 1, 2, 3, 5, 8, 13, 21, . . .). Lukujono (ilman ensimmäistä alkiota) on funktio f : N → N, voidaan määritellä 2. kertaluvun rekursiokaavan avulla: a1 = 1; a2 = 1; ai+1 = ai + ai−1 , ∀i > 1 Siis: a3 = a2 + a1 = 1 + 1 = 2; a4 = a3 + a2 = 2 + 1 = 3; a5 = a4 + a3 = 3 + 2 = 5; . . . Lukujonolla on kuvattu useita luonnossa esiintyviä ilmiöitä. ja jonka alkiot Esim. 3 On mahdollista, että rekursiivisesti määritelty lukujono voidaan esittää myös ilman rekursiota. Olkoon lukujono (x1 , x2 , . . .) määritelty rekursiivisesti: { x1 = 1; xk+1 = xk + 8k, ∀k ≥ 1 Siis: x2 = 1 + 8 = 9; x3 = 9 + 16 = 25; x4 = 25 + 24 = 49; . . . Näyttää siltä, että alkiot ovat muotoa tämä induktion avulla. xn = (2n − 1)2 , ∀n ≥ 1. Todistetaan Todistetaan induktiolla, että predikaatti ∀n ∈ N. P (n) := xn = (2n − 1)2 Todistus. Perusaskel: x1 = 1 = (2 − 1)2 = 1 Tosi. Induktio-oletus (IO): Oletetaan että P (k) on tosi, eli k ∈ N. xk = (2k − 1)2 on tosi jollakin Induktioaskel: Silloin: xk+1 = xk + 8k = (2k − 1)2 + 8k |{z} IO = 4k 2 − 4k + 1 + 8k = 4k 2 + 4k + 1. = (2k + 1)2 . = (2(k + 1) − 1)2 . P (k + 1) on tosi. Johtopäätös: Induktioperiaatteen nojalla xn = (2n − 1)2 ∀n ∈ N. Siis Hanoin tornit. Perinteinen esimerkki rekursiivisesta tehtävästä on Hanoin tornien ongelma: Tavoitteena on siirtää 64 (kivistä) kiekkoa lähtötolpasta (A) maalitolppaan (B). Apuna saa käyttää aputolppaa (C). Isompi kiekko ei saa peittää pienempää missään tilanteessa. Alussa kiekot ovat suuruusjärjestyksessä lähtötolpassa, niin että suurin kiekko on alimmaisena. Hanoin tornien ongelma on esitelty jo johdantokurssilla ja jätetään nyt oman kertauksen varaan (Ks. Juvaste 2011.). Rekursio ohjelmoinnissa Rekursiota käytetään myös ohjelmoinnissa, jol- loin sillä tarkoitetaan tilannetta, jossa metodi tai proseduuri kutsuu itseään toistuvasti tietyn ehdon ollessa voimassa, joko suoraan tai jonkun toisen metodin välityksellä. Monien ongelmien ratkaiseminen rekursiivisesti on mahdollisesti helpompaa kuin iteratiivisellä (ei-rekursiivisellä) algoritmilla. Ohjelmasta tulee mahdollisesti selkeämpi ja lyhyempi. Kuitenkin rekursiiviset ratkaisut ovat aika- ja tilavaatimuksiltaan iteratiivisia ratkaisuja raskaampia jos rekursiolla aiheutetaan monikertaista turhaa työtä. Esimerkkinä väärästä rekursion käytöstä on pseudokoodi Fibonaccin lukujen laskemiselle rekursiivisesti suoraan määritelmän mukaan. Ohessa myös iteratiivinen tehokas ratkaisu. Function FIBONACCI_TEHOTON (n:integer) RETURNS fibonacci : integer; begin if n < 3 then return n - 1; else return (FIBONACCI(n-1) + FIBONACCI(n-2)); end if end Function FIBONACCI_IT (n:integer) RETURNS fibonacci : integer; begin if n < 3 then return n - 1; else i := 3; first := 0: second := 1; while i<=n do temp := second; second := second + first; first := temp; i := i + 1; end while return second; end if end 11 Kombinatoriikkaa Kombinatoriikassa tutkitaan joukkojen ja joukon alkioiden lukumääriä. Esim. Olkoon kolmen alkion joukko A = {a, b, c}. Kuinka monella tapaa voimme valita 2 alkiota joukosta A? Vastaus riippuu siitä sallimmeko toistot (saman alkion valinta kahteen kertaan) ja onko alkioiden järjestyksellä väliä. Merkitään (a, b) := valitaan a ja b, eli a on 1. valinta ja b on 2. valinta. S = {a, b, c}. Tapaus 1. Valitaan alkiot. Toisto sallitaan (esim. valitaan (esim. (valitaan a ja b) ̸= Saamme valinnat (9 kpl): (valitaan b ja a ja a) ja järjestyksellä on väliä a)). (a, a), (a, b), (a, c), (b, a), (b, b), (b, c), (c, a), (c, b), (c, c). Tapaus 2. Toistoa ei sallita ja järjestyksellä on väliä. Saamme valinnat (6 kpl): (a, b), (a, c), (b, a), (b, c), (c, a), (c, b). Tapaus 3. Toistoa ei sallita ja järjestyksellä ei väliä (esim. (valitaan = b (valitaan ja a ja b) a)). Saamme valinnat (3 kpl): (a, b), (a, c), (b, c). Tapaus 4. Toisto sallitaan (esim. valitaan a ja a) ja järjestyksellä ei väliä. Saamme valinnat (6 kpl): (a, a), (a, b), (a, c), (b, b), (b, c), (c, c). Joukon permutaatiot. Olkoon A joukko jossa n alkiota. Voimme muodostaa alkioista joukon A permutaatioita, joissa kaikissa samat alkiot, mutta eri järjestyksessä. Permutaatio voidaan tulkita jonoksi, lukujonoksi, vektoriksi tai järjestyksi listaksi. Merkitään permutaatiota suluilla, esim. (a1 , a2 , . . . , an ). Esim. (a, b, c, d) ja (d, c, b, a) ovat joukon A = {a, b, c, d} permutaatioita. Joukon k-permutaatiot. Olkoon A joukko jossa n alkiota ja 0 < k ≤ n. A osajoukkoja joissa on k alkiota. Muodostak :n alkion osajoukosta permutaation saamme joukon A k-permutaation. Voimme muodostaa joukosta malla Tietystä osajoukosta muodostetuissa permutaatioissa on siis kaikissa samat alkiot, mutta eri järjestyksessä. (Huom. Joukon kuin joukon A A n-permutaatio on sama permutaatio). Esim. (a, b, c) ja (c, b, a) ovat joukon A = {a, b, c, d} 3-permutaatioita. Esim. Kaikki joukon A = {a, b, c} 2-permutaatiot: (a, b), (a, c), (b, a), (b, c), (c, a), (c, b) Joukon k-kombinaatiot. Olkoon Voimme muodostaa alkioista osajoukkoja, joissa on sesti) joukkona, jossa on siis joukko k k A joukon A 0 < k ≤ n. k-kombinaatioita, jotka ovat joukon A joukko jossa n alkiota ja alkiota. Merkitään k-kombinaatiota siis (luonnolli- alkiota joukosta A. (Huom. Joukon A.) Esim. {a, b, c} on joukon A = {a, b, c, d} 3-kombinaatio. Esim. Kaikki joukon A = {a, b, c} 2-kombinaatiot: {a, b}, {a, c}, {b, c} A n-kombinaatio Kertoma. Määritellään n! := n(n − 1)(n − 2) · · · 2 · 1 on n:n kertoma. Sovitaan 0! = 1. Tuloperiaate. heelle 1., ty, ... , nk n2 Olkoon k:n vaiheen "tehtävä", jossa n1 mahdollisuutta vai- mahdollisuutta vaiheelle 2. sen jälkeen kun vaihe 1. on suoritet- mahdollisuutta vaiheelle on suoritettu. Tällöin k sen jälkeen kun vaiheet 1., 2., . . . , (k −1). suoritusmahdollisuuksien määrä on N = n1 · n2 · . . . · nk . Tuloperiaate vastaa karteesiselle tulojoukolle määriteltyä kaavaa |A1 × A2 × . . . Ak | = |A1 | · |A2 | · . . . |Ak |. Valintojen lukumäärät. paa voimme valita k A = {a1 , a2 , . . . , an }. joukosta A? Olkoon alkiota Kuinka monella ta- Vastaus riippuu taas siitä sallimmeko toistot (saman alkion valinta useaan kertaan) ja onko alkioiden järjestyksellä väliä. Tapaus 1. ("k-otos", k-sample) Toisto sallitaan ja järjestyksellä on väliä. n tapaa valita 1. alkio, n tapaa valita 2. alkio,...,n tapaa valita Tuloperiaatteen nojalla saadaan valintojen määrä: O(n, k) = nk . k :s alkio. Tapaus 2. ("k-permutaatio", k-permutation) Toistoa ei sallita ja jär- jestyksellä on väliä. n tapaa valita k :s alkio. 1. alkio, n−1 tapaa valita 2. alkio,...,n −k+1 Tuloperiaatteen nojalla saadaan valintojen määrä (Joukon tapaa valita A k-permutaatioiden lukumäärä): P (n, k) = n(n − 1)(n − 2) · · · (n − k + 1) = n! . (n − k)! Edellä siis n! n(n − 1)(n − 2)(n − k + 1)(n − k) · · · 2 · 1 = (n − k)! (n − k) · · · 2 · 1 Tapaus 3. ("k-kombinaatio", k-combination) Toistoa ei sallita ja jär- jestyksellä ei väliä. Valintojen määrä (Joukon A k-kombinaatioiden lukumäärä): K(n, k) = n! P (n, k) = . k! (n − k)!k! Tapauksessa 2. saatiin k-permutaatioiden määräksi P (n, k). Voidaan ajatel- la, että k-permutaation muodostamisessa on kaksi vaihetta: vaihe 1.: muodostetaan k-kombinaatio (K(n, k) eri mahdollisuutta), vaihe 2.: muodostetaan k-kombinaatiosta permutaatio (P (k, k) mahdollisuutta). Voidaan laskea P (k, k) = k!/0! = k!. Tuloperiaatteen nojalla saadaan k-permutaatioiden määräksi P (n, k) = K(n, k) · k!, josta voidaan laskea k-kombinaatioiden määP (n,k) rä, eli saadaan K(n, k) = . k! Tapaus 4. ("k-valinta", k-selection) Toisto sallitaan ja järjestyksellä ei väliä. Valintojen määrä: V (n, k) = K(n + k − 1, n − 1) = (n + k − 1)! (n + k − 1)! = . (n + k − 1 − (n − 1))! k!(n − 1)! Huom. K-kombinaatioiden määrälle on voimassa kaava K(n, k) = K(n, n − k), jolloin voimme kirjoittaa V (n, k) = K(n + k − 1, n − 1) = K(n + k − 1, k). Esim 1. Lotto. Valitaan 7 numeroa 39 numeron joukosta. Kuinka monta erillaista 7 numeron riviä voidaan valita? Koska toistoa ei sallita ja numeroiden järjestyksellä ei ole väliä, rivien lukumäärä saadaan laskemalla eri 7-kombinaatioiden määrä joukosta A = {1, 2, 3, . . . , 39}. Saadaan K(39, 7) = 39! = 15380937. (39 − 7)!7! Esim 2. Olkoon 12 ihmistä, joista 5 valitaan tiettyyn erikoisryhmään. Kuinka monta erillaista ryhmää on mahdollista muodostaa? Koska jokainen ihminen voidaan valita vain kerran, ei toistoa ole sallittu. Toisaalta ei ole väliä missä vaiheessa ihminen valitaan. Ryhmien määrä saadaan siis laskemalla 5-kombinaatioiden määrä 12 ihmisen joukosta. Saadaan K(12, 5) = 12! = 792. (12 − 5)!5! Esim 3. Kuinka monta rekisterikilpeä on mahdollista toteuttaa, olettaen, että kilvessä on 6 merkkiä (3 kirjainta ja 3 numeroa)? Oletetaan, että merkkien valinta tehdään kahdessa vaiheessa. Vaihe 1.: Numerot (3-otos 10 alkion joukossa): 10 · 10 · 10 = 1000. Vaihe 2.: Kirjaimet (3-otos 29 alkion joukossa): Tuloperiaatteen nojalla: 29 · 29 · 29 = 24329. 1000 · 24329 = 24329000. Esim 4. Olkoon ravintola, jossa 7 pääruokalajin menu, joista valitaan 3 ruokalajia pääruuaksi. Kuinka monta erillaista valintaa on mahdollista muodostaa? Jos oletamme, että samaa ruokalajia ei syödä useaan kertaan (ei toistoja) ja järjestyksellä ei ole väliä, saadaan taas 3-kombinaatiot. Valintojen määrä siis K(7, 3) = 7! = 35. (7 − 3)!3! Toisaalta, jos on tarve tilata sama ruokalaji useaan kertaan saadaan 3-valinta, eli valintojen määrä on K(7 + 3 − 1, 7 − 1) = K(9, 6) = 9! = 84. (9 − 6)!6! Esim 5. A = {a, b, c, d, e, f }. Kuinka monta 4-kirjaimista muodostaa joukon A kirjaimista, siten että jokainen Olkoon joukko "sanaa"on mahdollista kirjain esiintyy sanoissa vain kerran. Koska toistoa ei sallita ja järjestyksellä on väliä saadaan sanat 4-permutaatioina ja niiden määrä on P (6, 4) = 6! = 360. (6 − 4)! Esim 6. Heitetään viittä (samanlaista) noppaa. Kuinka monta erillaista lopputulosta on mahdollista saada? Jokainen noppa voi siis tuottaa luvun 1,2,3,4,5 tai 6. Koska toisto on mahdollinen, mutta järjestyksellä ei ole väliä saadaan kvalinnan tapaus V (n, k) = K(n + k − 1, n − 1), missä n=6 Lopputulosten määrä on siis K(6 + 5 − 1, 6 − 1) = 10! = 252. (10 − 5)!5! ja k = 5. Binomikerroin. K-kombinaatiossa määriteltiin K(n, k) = Tätä kutsutaan myös n! P (n, k) = k! (n − k)!k! binomikertoimeksi ( n k ) = ja merkitään n! . (n − k)!k! n Voimme laskea binomin potenssin (a + b) kertoimet binomikaavan avulla. 2 2 2 Esim. (a + b) = a + 2ab + b , jossa kertoimet 1, 2 ja 1. ( Yleisesti: (a + b)n = Muodostamalla n 0 ( ) an + n 1 ( ) an−1 b + n 2 ( ) an−2 b2 + . . . + Pascal:n kolmion, voidaan lausekkeen (a + b)n mien arvot lukea siitä suoraan. Kolmiossa n:s n n ) bn binomikertoi- rivi vastaa potenssia n. Pascalin kaava. K(n, k) = K(n − 1, k − 1) + K(n − 1, k), kun 0 < k < n. 12 Suuntaamattomat graat Tarkastellaan seuraavassa suuntaamattomiin graafeihin liittyviä määritelmiä ja nimityksiä. Graaalgoritmeja käsitellään erityisesti Tietorakenteet ja algoritmit II -kurssilla. Esimerkkejä tiedosta jota graafeilla mallinnetaan: • (Tieto)liikenteen mallinnus. • Tietoliikenneverkko, tieverkko, virtapiirit. Reititys, liikennesuunnittelu. Kemialliset, fysikaaliset, tekniset, biologiset, sosiologiset, taloudelliset verkostot, niiden suhteet ja vuorovaikutukset. Määritelmä. Suuntaamatoman graa G = (V, E) koostuu joukosta V sol- muja (vertex, node ) ja niitä yhdistävistä kaarista (E ) (edge ). Graaa merkitään siis G = (V, E), missä V on solmujen joukko ja E on e on kaarien joukko. Suuntaamattoman graan kaaret merkitään esim. kaari solmujen a ja b e = {a, b}. Tässä siis välillä. Esim. G = ({a, b, c}, {e1 , e2 , e3 }), missä e1 = {a, b}, e2 = {a, c}, e3 = {b, c}. Määritelmiä. • e = {a, b}, niin sanotaan että kaari e yhdistää solmut a ja b (tai kaari e on solmujen a ja b välillä). Solmut a ja b ovat kaaren e päätesolmuja Jos (päitä). • Solmut • Jos • Solmun a ja b ovat vierekkäisiä, jos ne ovat saman kaaren päätesolmuja. e = {a, a}, niin kaari aste a ∈ V e on silmukka solmussa a. on siihen liittyvien kaarien lukumäärä. (Solmun, johon liittyy silmukka, mutta ei muita kaaria, aste on 2.) • Solmu on eristetty, jos sen aste on 0, eli se ei ole minkään kaaren pää- tesolmu. • Kaaret e1 • Kaaret e1 ja ja päätesolmu. e2 ovat e2 rinnakkaisia, jos niillä on samat päätesolmut. ovat vierekkäisiä, jos niillä on ainakin yksi yhteinen Määritelmiä. Suuntaamaton graa on • äärellinen • yksinkertainen, jos V ja E ovat äärellisiä joukkoja. jos se on äärellinen ja graassa ei ole silmukoita tai rinnakkaisia kaaria. (Ts. jokaisen solmuparin välillä on korkeintaan yksi kaari) • multigraa • täydellinen, jos jokaisen solmuparin välillä (a ̸= b, a, b ∈ V ) on ainakin jos graassa on rinnakkaisia kaaria. yksi kaari. Huom. Jokaisesta suuntaamattomasta graasta saadaan yksinkertainen, jos poistetaan silmukat ja rinnakkaiset kaaret. Toisaalta jokaisesta graasta saadaan täydellinen, jos lisätään puuttuvat kaaret. Oletetaan, että seuraavissa kaikki graat ovat äärellisiä. Lause. Olkoon G(V, E) summalle on voimassa suuntaamaton graa. Graan solmujen asteiden ∑ aste(v) = 2|E|. v∈V Ts. Graan kaikkien solmujen asteiden summa on sama kuin kaksi kertaa kaarien lukumäärä. Määritelmä. graa ′ G = (V ′ Olkoon , E ′ ), jos Aligraaa merkitään Esim. Olkoon G(V, E) suuntaamaton graa. Graan G aligraa V ′ ⊆ V ja E ′ ⊆ E . G′ ⊆ G. G = ({1, 2, 3, 4, 5}, {{1, 2}, {1, 3}, {1, 4}, {2, 3}, {4, 5}, {4, 3}, {5, 2}}). Eräs graan G aligraa on G′ = ({1, 2, 3, 4, 5}, {{1, 3}, {1, 4}, {2, 3}, {2, 5}, {4, 5}}). on Määritelmä. G = (V, E) yksinkertainen, jossa solmujen joukko V = {v1 , v2 , . . . , vn }. Graan G yhteysmatriisi (tai vierusmatriisi, adjacency matrix) on n × n-matriisi M G , jonka alkiot (indekseillä i = 1, . . . , n, j = 1, . . . , n): Olkoon suuntaamaton graa MijG = 1, jos {vi , vj } ∈ E MijG = 0, jos {vi , vj } ∈ E, Määritelmiä. • Polku Olkoon G = (V, E) suuntaamaton graa. G on joukko solmuja v0 , v1 , . . . , vk ∈ V siten, että kaaret {vi−1 , vi } ∈ E kaikille i = 1, . . . , k . Polun pituus graassa olemassa on on polun solmujen välillä olevien kaarien määrä. • Alkeispolku graassa G on joukko erillisiä solmuja siten, että on olemassa kaaret • Sykli {vi−1 , vi } ∈ E kaikille v0 , v 1 , . . . , v k ∈ V i = 1, . . . , k . G on joukko solmuja v0 , v1 , . . . , vk ∈ V siten, että 1) on olemassa kaaret {vi−1 , vi } ∈ E kaikille i = 1, . . . , k ja 2) ensimmäinen ja viimeinen solmu ovat samoja (v0 = vk ), mutta muut solmut ovat graassa erillisiä. Määritelmiä. • Graa G • Graa G Olkoon on on G = (V, E) suuntaamaton graa. syklitön, jos siinä ei ole syklejä. yhdistetty (yhtenäinen, connected), jos graan kaikkien solmujen välillä on polku. • Graa G on puu, jos se on syklitön ja yhdistetty. Määritelmä. notaan Olkoon G = (V, E) Hamiltonin sykliksi, suuntaamaton graa. Graan sykliä sa- jos se käy läpi kaikki solmut täsmälleen kerran (lukuunottamatta lähtösolmua). Jos graassa on Hamiltonin sykli, niin graaa sanotaan Hamiltonin graaksi. Esim. Määritelmä. notaan Olkoon Eulerin poluksi, G = (V, E) suuntaamaton graa. Graan polkua sa- jos se käy läpi kaikki graan kaaret täsmälleen ker- ran. Graan sanotaan olevan Eulerin graa, jos siinä on Eulerin polku, jonka ensimmäinen ja viimeinen solmu ovat samoja. Lause. Olkoon 2. G Graa on pariton. G = (V, E) suuntaamaton ja yhdistetty graa, jossa |V | ≥ on Eulerin graa, jos ja vain jos siinä ei ole solmuja, joiden aste Suuntaamattoman ja painotetun graan vierusmatriisiesitys. Olkoon G = (V, E) yksinkertainen, jossa solmujen V = {v1 , v2 , . . . , vn }. Graan G yhteysmatriisi (tai vierusmatriisi) on n × n-matriisi M , jonka alkiot (indekseillä i = 1, . . . , n, j = 1, . . . , n): suuntaamaton ja painotettu graa joukko Mij = wij ∈ R, jos {vi , vj } ∈ E Mij = 0, jos i = j. Mij = ∞, Edellä wij ∈ R on kaaren {vi , vj } jos paino {vi , vj } ∈ E, (weight). Voimme merkitä painotettua kaarta esim. muodossa {vi , vj , wij }. Esim. 0 1 ∞ ∞ 1 0 3 0.2 M = ∞ 3 0 5 ∞ 0.2 5 0 Matriisi on siis symmetrinen diagonaalin suhteen ja alkiot Mij = Mji . Koska T matriisi on symmetrinen, saamme M = M , eli matriisi on sama kuin sen transpoosi. Hamiltonin graafeista. Kyseisten graaen sovelluksia mm. liikenne-, tietoliikenneverkkojen ja logistiikan suunnittelussa. Hamiltonin syklin tai Hamiltonin graan löytäminen (graaen joukosta) voi olla vaikea tehtävä. Voidaan kuitenkin osoittaa, että esim. jokainen täydellinen graa, jossa |V | ≥ 3, on Hamiltonin graa. Muotoillaan seuraavat "graaongelmat": Graaongelma I.a Etsitään graasta Hamiltonin sykliä tai polkua. Graaongelma I.b Kauppamatkustajan ongelma (KMO) : Etsitään paino- tetusta Hamiltonin graasta Hamiltonin sykliä, siten että sykliin kuuluvien kaarien painojen summa minimoituu. Kauppamatkustajan ongelmassa voidaan esimerkiksi olettaa, että Hamiltonin graan solmut esittävät kaupunkeja ja kaaret teitä. Tarkoituksena siis löytää lyhin (tai nopein) reitti, joka kulkee kaikkien kaupunkien kautta, siten että jokaisessa kaupungissa käydään vain kerran (lukuunottamatta reitin alkupistettä). Kaaren paino esittää siis kaupunkien välistä etäisyyttä (tai matkustusaikaa). Ongelmille I.a ja I.b ei ole laskennallisesti tehokasta algoritmia! Esimerkiksi KMO:n ratkaisun approksimaationa voidaan löytää Hamiltonin syklejä, jotka eivät välttämättä optimaalisia, mutta "lyhyempiä"kuin useimmat graasta löytyvät Hamiltonin syklit. Tarkastellaan seuraavassa lähimmän naapurin-algoritmia KMO:lle. Graassa G = (V, E) solmun v ∈ V naapurisolmuiksi kutsutaan niitä solmuja, v . Lähin naapuri on se naapuri, jonka kaaren paino joista on kaari solmuun on pienin (tai optimaalisin). Merkitään seuraavassa sykliä muodossa v0 − −v1 − − . . . − −vk , missä v0 , v 1 , . . . , v k on solmujen joukko ja v0 = vk . Olkoon G = (V, E) suuntaamaton, painotettu ja täydellinen graa. Function lähin naapuri (KMO) begin Valitaan v joukosta V; Reitti:=v; w:=0; v':=v; Merkataan v'; While "on olemassa solmuja joita ei merkattu" Do begin Valitse merkkaamaton solmu u joka lähimpänä solmua v'; Reitti:=Reitti--u; w:=w+kaaren {u,v'} paino; v':=u; Merkataan v'; end Reitti:=Reitti--v; w:=w+kaaren {v',v} paino; end Esim. Olkoon täydellinen, painotettu graa {a, b, c, d} G = (V, E), missä solmut V = ja painotetut kaaret E = {{a, b, 5}, {a, c, 6}, {a, d, 8}, {b, c, 7}, {b, d, 10}, {d, c, 3}}, joissa luku ilmoittaa kaarien painon. Lähdetään liikkeelle solmusta d ja käytetään edellistä algoritmia. Saadaan: u reitti w v' - d (valitaan d lähtösolmuksi) 0 d d−−c 3 c 9 a 14 b 24 b c a b b d−−c−−a d−−c−−a−−b d−−c−−a−−b−−d (palataan lähtösolmuun) Huom. Graassa on kuitenkin olemassa myös sykli, jossa kaarien painojen summa on 23 (a−−b−−c−−d−−a). Puista. Olkoon suuntaamaton graa E = {e1 , . . . , em }. 1. G G = (V, E), jossa V = {v1 , . . . , vn } Seuraavat ovat ekvivalentteja ominaisuuksia. on puu. 2. On olemassa vain yksi alkeispolku kahden G:n solmun välillä. 3. G on yhtenäinen ja 4. G on yhtenäinen ja yhden kaaren poistaminen tekee m = n + 1. G:stä yhdistämät- tömän. 5. G ja on syklitön ja yhden kaaren lisääminen synnyttää syklin G:hen. Juurellinen puu. Suuntaamattoman graan tapauksessa puu on juurellinen, jos puussa joku solmu tulkitaan ns. juurisolmuksi. • Juurisolmu on puun ylin solmu. • Tietyn solmun alapuolella olevat solmut ovat lapsia. • Solmut joiden alapuolella ei ole solmuja ovat lehtisolmuja. • Solmun v syvyys • Puun syvyys • Juurellisen on polun pituus kun kuljetaan juuresta solmuun v. on suurin puussa oleva solmun syvyys. binääripuun tapauksessa jokaisella solmulla on enintään kak- si lasta. • Juurellinen binääripuu on täydellinen, jos kaikilla puun solmuilla (lu- kuunottamatta lehtisolmuja) on kaksi lasta. Yleensä juurellisella puulla esitetään informaatiota, jossa on ns. hierarkia. Virittävä puu. Jokainen yhtenäinen graa sisältää aligraan, joka on puu. Aligraaa, joka on puu ja sisältää puuksi kaikki G:n solmut kutsutaan virittäväksi (spanning tree). Graaongelma II. Etsitään suuntaamattoman ja painotetun graan virit- tävä puu, siten että kaarien painojen summa minimoituu (minimal spanning tree). Ongelmalle on olemassa laskennallisesti tehokkaita algoritmeja, jotka löytävät optimaalisen ratkaisun. k-säännöllinen graa. Jos graan kaikkien solmujen asteluvut ovat samat, niin graa on k -säännöllinen graa, missä k on solmujen asteluku. Esim: 3- ja 4-säännölliset graat: 3-säännöllinen graa 4-säännöllinen graa 13 Suunnatut graat Määritelmä. Suunnattu graa G = (V, E) ( koostuu joukosta vertex, node ) ja niitä yhdistävistä kaarista (E ) (arc ). V solmuja Suunnattu graan vastaa relaatiota, ja sen kaaret merkitään järjestettyinä pareina esim. e = (a, b). Esim. G = ({a, b, c}, {e1 , e2 , e3 }), missä e1 = (a, b), e2 = (a, c), e3 = (b, c). Määritelmiä. • Jos • Jos • Solmun a∈V lähtöaste • Solmun a∈V tuloaste • Solmun a∈V aste e = (a, b), niin sanotaan että e on kaari solmusta a solmuun b. Solmu a on lähtösolmu ja b on päätesolmu. e = (a, a), niin kaari e on silmukka solmussa a. on siitä lähtevien kaarien lukumäärä. on siihen tulevien kaarien lukumäärä. on lähtöasteen ja tuloasteen summa (Solmun, johon liittyy silmukka, mutta ei muita kaaria, aste on 2.) • Solmu on eristetty, jos sen aste on 0. Suunnattu graa on yksinkertainen, jos se on äärellinen, graassa ei ole silmu- koita ja jokaisen solmuparin välillä on korkeintaan yksi (tietyn suuntainen) G = (V, E) = ({a, b, c}, (a, b), (b, a), (a, c)} G = (V, E) = ({a, b, c}, (a, b), (b, a), (a, b)} ei ole. kaari. Eli esim. graa tainen, mutta on yksinker- Graan vierusmatriisiesitys (adjacency matrix). G, jossa n × n) matriisi M11 M12 M21 M22 M = .. . . . . Mn1 Mn2 solmua vastaa (n jossa alkiot Mij , i = 1, . . . , n ja Suunnattua graaa M . . . M1n . . . M2n . .. . . . . . . Mnn j = 1, . . . , n. Alkiot saavat arvon 1 tai 0, siten, että Eli matriisin alkiolla 0 jos kaari (ai , bj ) Mij Mij = 1, jos (vi , vj ) ∈ E Mij = 0, jos (vi , vj ) ∈ E on arvo 1, jos kaari ei kuulu graain. (ai , bj ) kuuluu graain ja arvo Huomautuksia: • Suunnatun graan vierusmatriisi vastaa siis relaation matriisiesitystä. • Suunnatun graan tapauksessa vierusmatriisi ei siis ole välttämättä symmetrinen, kuten suuntaamattoman graan tapauksessa oli. Ts. Suuntaamattoman, yksinkertaisen graan tapauksessa vierusmatriisi on saG G T ma kuin sen transpoosi ja voimme aina kirjoittaa: M = (M ) . Suunnatun graan tapauksessa polku, alkeispolku ja sykli määritellään samoin kuin suuntaamattoman graan tapauksessa, eli Määritelmiä. • Polku Olkoon G = (V, E) suunnattu graa. G on joukko solmuja v0 , v1 , . . . , vk ∈ V siten, että kaaret (vi−1 , vi ) ∈ E kaikille i = 1, . . . , k . Polun pituus graassa olemassa on on polun solmujen välillä olevien kaarien määrä. • Alkeispolku graassa G on joukko erillisiä solmuja siten, että on olemassa kaaret • Sykli (vi−1 , vi ) ∈ E kaikille v0 , v 1 , . . . , v k ∈ V i = 1, . . . , k . G on joukko solmuja v0 , v1 , . . . , vk ∈ V siten, että 1) on olemassa kaaret (vi−1 , vi ) ∈ E kaikille i = 1, . . . , k ja 2) ensimmäinen ja viimeinen solmu ovat samoja (v0 = vk ), mutta muut solmut ovat graassa erillisiä. Suuntaamattoman graan tapauksessa, siis polku solmusta koittaa, että on polku solmusta b solmuun a. b solmuun solmuun b tar- Suunnatun graan tapauksessa on kuitenkin mahdollista, että on polku solmusta polkua solmusta a a solmuun b, mutta ei ole a. Yleinen graaongelma III. Etsitään suuntaamattomassa graassa polut solmujen välille. Tarkastellaan seuraavassa polkujen laskemista. Graan polkumatriisi (reachability matrix), tapaus I. graaa G, jossa n solmua vastaa (n × n) polkumatriisi P P := M ∨ M 2 ∨ · · · ∨ M n jossa M 2 := M ⊙ M M 3 := M ⊙ M 2 . . . M n := M ⊙ M ⊙ · · · ⊙ M = M ⊙ M n−1 . Edellä operaatio M ∨ M2 ∨ · · · ∨ Mn vastaa matriisien alkioiden välistä disjunktiota, eli alkiot ovat (M ∨ M 2 ∨ · · · ∨ M n )ij = Mij ∨ Mij2 ∨ · · · Mijn . ... Suunnattua ... Matriisi M2 voidaan laskea matriisien M ja M "loogisena tulona": M 2 = M ⊙ M, missä alkiot (indekseillä i = 1, . . . , n, j = 1, . . . , n): Mij2 = n ∨ Mik ∧ Mkj . k=1 Yleisesti matriisi M k , k ≤ n, voidaan laskea matriisien M tulona": M k = M ⊙ M k−1 , missä alkiot (indekseillä i = 1, . . . , n, j = 1, . . . , n): Mijk = n ∨ k=1 ... k−1 Mik ∧ Mkj . ja M k−1 "loogisena ... Polkumatriisin P alkiot ovat Pij ∈ {0, 1}, i = 1, . . . , n ja j = 1, . . . , n. Alkiot saavat siis arvon 1 tai 0, siten, että Pij = 1, jos on olemassa polku solmusta Pij = 0, Matriisin Mk jos ei ole polkua solmusta alkiot ovat vi vi solmuun solmuun Mijk ∈ {0, 1}, i = 1, . . . , n ja vj vj j = 1, . . . , n. Alkiot saavat arvon 1 tai 0, siten, että Mijk = 1, jos on olemassa k:n mittainen polku solmusta Mijk = 0, jos ei ole k:n mittaista polkua solmusta vi vi solmuun solmuun vj vj Esim. Olkoon G = ({a, b, c, d}, {(a, b), (b, d), (b, c), (d, c)}). Saadaan 0 0 M2 = 0 0 0 0 M3 = 0 0 ... 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 M = 0 0 0 0 1 0 ⊙ 0 0 0 0 0 1 0 0 0 1 ⊙ 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 = 0 0 0 1 0 0 0 1 ⊙ 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 = 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ... 0 0 M4 = 0 0 1 0 0 0 0 1 0 1 0 1 ⊙ ··· ⊙ 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 = 0 0 0 0 0 0 Saadaan polkumatriisi 0 0 P = M ∨ M2 ∨ M3 ∨ M4 = 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Graan polkumatriisi (reachability matrix), tapaus II. graaa G, jossa n solmua vastaa (n × n) polkumatriisi P P := M + M 2 + · · · + M n jossa M 2 := M · M M 3 := M · M 2 . . . M n := M · M · · · · · M = M · M n−1 . Edellä operaatio M + M2 + · · · + Mn vastaa matriisien alkioiden summa, eli alkiot ovat (M + M 2 + · · · + M n )ij = Mij + Mij2 + · · · Mijn . ... Suunnattua ... Matriisi M2 voidaan laskea matriisien M ja M "normaalina"tulona: M = M · M, 2 missä alkiot (indekseillä i = 1, . . . , n, j = 1, . . . , n) vastaavat matriisin M rivi- ja sarakevektoreiden välistä pistetuloa: Mij2 = n ∑ Mik · Mkj . k=1 Luku Mij vastaa siis matriisin M i:nnen rivivektorin ja j :nnen sarakevektorin pistetuloa. Yleisesti matriisi M k , k ≤ n, voidaan laskea matriisien M =M ·M k missä alkiot (indekseillä , i = 1, . . . , n, j = 1, . . . , n): n ∑ k−1 k Mij = Mik · Mkj . k=1 ... k−1 M ja M k−1 tulona: ... P Polkumatriisin alkiot ovat Pij , i = 1, . . . , n ja j = 1, . . . , n. Alkiot saavat siis arvon, siten, että Pij = mahdollisten Pij = 0, Matriisin Mk polkujen lukumäärä solmusta jos ei ole polkua solmusta alkiot ovat Mijk , i = 1, . . . , n ja vi vi solmuun solmuun vj vj j = 1, . . . , n. Alkiot saavat arvon, siten, että Mijk = k:n Mijk = 0, mittaisten polkujen lukumäärä solmusta jos ei ole k:n mittaista polkua solmusta vi vi solmuun solmuun vj vj Esim. 1 Olkoon G = ({a, b, c, d}, {(a, b), (b, d), (b, c), (d, c)}). Saadaan 0 0 M2 = 0 0 0 0 M3 = 0 0 ... 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 M = 0 0 0 0 1 0 · 0 0 0 0 0 1 0 0 0 1 · 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 = 0 0 0 1 0 0 0 1 · 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 = 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ... 0 0 M4 = 0 0 1 0 0 0 0 1 0 1 0 1 · ··· · 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 = 0 0 0 0 0 0 Saadaan polkumatriisi 0 0 P = M + M2 + M3 + M4 = 0 0 1 0 0 0 2 2 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Esim. 2 Olkoon G = ({a, b, c, d}, {(a, b), (a, c), (a, d), (b, a), (b, d), (c, a), (c, b), (d, a), (d, b)}). Saadaan 0 1 M2 = 1 1 0 1 M3 = 1 1 ... 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 M = 1 1 1 0 1 1 · 0 1 0 1 0 1 1 1 1 0 · 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 1 1 = 0 0 0 1 1 1 1 0 · 0 1 1 1 1 0 1 0 0 0 3 1 1 1 2 2 1 1 0 1 1 1 1 1 2 2 3 4 1 1 4 3 = 0 4 4 4 4 0 3 1 1 1 5 3 2 2 ... 0 1 M4 = 1 1 1 0 1 1 1 0 0 0 1 1 · ··· · 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 12 11 3 7 7 8 4 7 1 = 0 7 7 4 8 0 7 7 4 8 Saadaan polkumatriisi 18 13 P = M + M2 + M3 + M4 = 13 13 18 13 13 13 7 6 6 6 14 12 12 12 Yleinen graaongelma IV. Edellä esitetty polkumatriisin laskentatapa voi olla laskennallisesti liian vaativa joissakin sovelluksissa. Graateoria tutkii laskennallisesti tehokkaita algoritmeja, joilla laskea polkumatriiseja. Esim. Warshall:n algoritmi (ks. Haggarty). Suunnatun ja painotetun graan vierusmatriisiesitys. Olkoon suun- G = (V, E) yksinkertainen, jossa solmujen joukko V = {v1 , v2 , . . . , vn }. Graan G yhteysmatriisi (tai vierusmatriisi) on n × nmatriisi M , jonka alkiot (indekseillä i = 1, . . . , n, j = 1, . . . , n): nattu ja painotettu graa Mij = wij , jos Mij = 0, Mij = ∞, Edellä wij ∈ R on kaaren (vi , vj ) jos jos paino (vi , vj ) ∈ E i = j. (vi , vj ) ∈ E, (weight). Esim. 0 1 ∞ ∞ ∞ 0 3 0.2 M = ∞ ∞ 0 5 ∞ ∞ ∞ 0 Matriisi ei siis välttämättä symmetrinen diagonaalin suhteen. Yhdistetty suunnattu graa. Suunnattu graa on yhdistetty (weakly connected), jos vastaava suuntaamaton graa on yhdistetty ("vastaava": vaihdetaan suunnatut kaaret suuntaamattomiin.). Suunnattu puu. Suunnattu graa on puu, jos se on syklitön ja yhdistetty. Juurellinen suunnattu binääripuu. Suunnatun graan tapauksessa puu on binääripuu, jos • Puun juuren tuloaste on 0. • Jokaisella solmulla lähtöaste korkeintaan 2. Sanotaan, että jokaisella solmulla on enintään kaksi lasta. • Jos solmun lähtöaste on 0, niin sanotaan, että solmu on • Solmun v syvyys • Puun syvyys • lehtisolmu. on polun pituus kun kuljetaan juuresta solmuun v. on suurin puussa oleva solmun syvyys. Juurellinen suunnattu binääripuu on täydellinen, jos kaikilla puun sol- muilla (lukuunottamatta lehtisolmuja) on kaksi lasta. 14 Lukujärjestelmät Seurataan pääosin Juvasteen (2011) monistetta. Lukujärjestelmä kuvaa sen miten lukuja esitetään luettavassa muodossa. Meille tuttu kymmenjärjestelmä käyttää numeroita 0, 1, 2, 3, 4, 5, 6, 7, 8 ja 9. Kymmenjärjestelmän kantaluku ( base ) on siis 10. Muita tietotekniikassa käytettäviä lukujärjestelmiä ovat binäärijärjestelmä (kantaluku 2), oktaalijärjestelmä (kantaluku 8) ja heksadesimaalijärjestelmä (kantaluku 16). Koska luvusta voi olla mahdoton nähdä mitä lukujärjestelmää se käyttää, käytetään lukujärjestelmän merkitsemiseen alaindeksiä, esim 610 = 616 = 1102 . Jos alaindeksiä ei jossain tilanteessa (esimerkiksi ohjelmakoodissa) voi käyttää, käytetään etuliitettä 0x heksadesimaaliluvuille, 0o oktaaliluvuille ja 0b binääriluvuille. Mitä vikaa on kymmenjärjestelmässä? Tietokoneen laskenta, logiikka ja muistit toimivat binäärijärjestelmällä, biteillä. Yhdellä bitillä voidaan esittää kaksi eri lukua (0 ja 1), kahdella bitillä 2 3 4 (2 ) (00=4, 01=1, 10=2, 11=3), kolmella bitillä 8 (2 ), neljällä bitillä 16 4 (2 ), jne. Kymmenjärjestelmän yhden numeron esittämiseen kolme bittiä ei riitä ja neljännestä menee osa hukkaan. Jos käytetään lukujen esittämiseen oktaali (8) tai heksadesimaali (16) - järjestelmää, voidaan esittää kolmen bitin jono yhden oktaaliluvun avulla ja neljän bitin jono yhden heksadesimaaliluvun avulla. Luvun esittäminen Olkoon lukujärjestelmän kantaluku an an−1 . . . a1 a0 b. Luku esitetään merkkijonona ja lukua vastaava (kymmenjärjestelmän) arvo lasketaan seu- raavasti: an an−1 . . . a1 a0 = n ∑ i=0 Esimerkiksi: 51310 = = = = 10102 = = = = 5 · 102 + 1 · 101 + 3 · 100 5 · 100 + 1 · 10 + 3 · 1 500 + 10 + 3 51310 1 · 23 + 0 · 22 + 1 · 21 + 0 · 20 1·8+0·4+1·2+0·1 8+0+2+0 1010 ai · bi 5138 = = = = 51316 = = = = 5 · 82 + 1 · 81 + 3 · 80 5 · 64 + 1 · 8 + 3 · 1 320 + 8 + 3 33110 5 · 162 + 1 · 161 + 3 · 160 5 · 256 + 1 · 16 + 3 · 1 1280 + 16 + 3 129910 Numerosymbolit • Binäärijärjestelmässä käytetään numeroita 0 ja 1. • Oktaalijärjestelmässä käytetään numeroita 0, 1, 2, 3, 4, 5, 6 ja 7. • Heksadesimaalijärjestelmässä käytetään numeroita 0, 1, . . . , 9 ja lisäksi kirjaimia, eli symbolit ovat 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ja A16 = 1010 , B16 = 1110 , C16 = 1210 , D16 = 1310 , E16 = 1410 F16 = 1510 . F. Siis Esimerkiksi: CB316 = = = = 12 · 162 + 11 · 161 + 3 · 160 12 · 256 + 11 · 16 + 3 · 1 3072 + 176 + 3 325110 ja Kymmenjärjestelmän luvun muuntaminen Menetelmä 1 : Vähennetään jäljellä olevasta luvusta mahdollisimman suu- ria kantaluvun potenssin monikertoja. Kun vähentäminen onnistuu, ko. kohk · bi , niin dalle tulee se ko. monikerta. Eli, kun vähennetään onnistuneesti numero i lopusta alkaen on k, muuten 0. Toistetaan kaikille i alaspäin. Binääriluvuilla monikerta voi olla vain 1, joten menetelmä on vielä hieman yksinkertaisempi: Vähennetään jäljellä olevasta luvusta mahdollisimman suuria i kakkosen potensseja. Kun vähennetään onnistuneesti 2 , niin numero i lopusta alkaen on 1, muuten 0. Toistetaan kaikille i alaspäin. Esimerkiksi, muutetaan luku 27 6 Onnistuuko vähentää 2 Jäljelle jää 71 − 64 = 7. 5 Onnistuuko vähentää 2 4 Onnistuuko vähentää 2 3 Onnistuuko vähentää 2 2 Onnistuuko vähentää 2 Jäljelle jää 7 − 4 = 3. 1 Onnistuuko vähentää 2 Jäljelle jää 3 − 2 = 1. 0 Onnistuuko vähentää 2 Jäljelle jää 1 − 1 = 0. (1) Onnistuuko vähentää (2) (3) (4) (5) (6) (7) (8) 7110 binäärijärjestelmään: = 128, ei. = 64, kyllä, tulee numero 1, = 32, ei, tulee numero 0. = 16, ei, tulee numero 0. = 8, ei, tulee numero 0. = 4, kyllä, tulee numero 1, = 2, kyllä, tulee numero 1, = 1, kyllä, tulee numero 1, Luku luetaan alusta loppuun, se siis 10001112 . Menetelmä 2: Jaetaan alkuperäistä lukua kantaluvulla toistuvasti kunnes saadaan nolla ja otetaan jakojäännökset talteen. Esimerkiksi, muutetaan luku (1) (2) (3) (4) (5) (6) (7) 7110 binäärijärjestelmään. 71/2 = 35, jakojäännös 1. 35/2 = 17, jakojäännös 1. 17/2 = 8, jakojäännös 1. 8/2 = 4, jakojäännös 0. 4/2 = 2, jakojäännös 0. 2/2 = 1, jakojäännös 0. 1/2 = 0, jakojäännös 1. Luku luetaan lopusta alkuun, se siis 10001112 . Muistetaan, että luvun alussa olevat nollat eivät ole merkitseviä. Binääriluvuilla jakojäännös on helppo nähdä (oliko jaettava luku parillinen vai pariton). Suuremmilla kantaluvuilla se pitää erikseen laskea. Käytännössä on laskettava operaatiot a= ja missä J on jakojäännös. ⌊ luku ⌋ b ⌊ luku ⌋ J = luku − ·b b ⌊ ⌋ Operaatio · pyöristää vuksi. Toisin ilmaisten missä mod on modulo. J = luku mod b luvun alaspäin kokonaislu- Esimerkiksi, muutetaan luku 4912410 heksadesimaalijärjestelmään: (4) 49124/16 = 3070, jakojäännös 4 = 4. 3070/16 = 191, jakojäännös 14 = E. 191/16 = 11, jakojäännös 15 = F. 11/16 = 0, jakojäännös 11 = B. Siis 4912410 = BFE416 (1) (2) (3) Esimerkiksi, muutetaan luku 4912410 (6) 49124/8 = 6140, jakojäännös 4. 6140/8 = 767, jakojäännös 4. 767/8 = 95, jakojäännös 7. 95/8 = 11, jakojäännös 7. 11/8 = 1, jakojäännös 3. 1/8 = 0, jakojäännös 1. Siis 4912410 = 1377448 (1) (2) (3) (4) (5) oktaalijärjestelmään: Bittikuviot Oktaaliluvusta on helppo muodostaa suoraan binääriluku kun kukin oktaalinumero vastaa kolmea bittiä: 1377448 = 001 011 111 111 100 1002 . Sama onnistuu heksadesimaaliluvustakin, joskin muistettavia numero-bittikuvio -pareja on enemmän kun kukin numero vastaa neljää bittiä: BFE416 = 1011 1111 1110 01002 . Vastaavasti muunnos binääriluvusta oktaali- tai heksadesimaaliluvuksi onnistuu ryhmittelemällä bitit lopusta alkaen kolmen tai neljän bitin ryhmiin. Esimerkiksi: 001 110 001 010 1002 = 161248 . 0001 1100 0101 01002 = 1C5416 . 15 Logaritmi ja eksponentti Eksponenttifunktiossa jokin vakio x, b (kantaluku, base ) korotetaan potenssiin siis f : R → R+ , f (x) = bx , missä b > 0, b ̸= 1. Jos kantalukuna on Neperin luku (e = 2, 71828 . . .), niin eksponenttifunktiota merkitään f (x) = exp(x) tai f (x) = ex . Kun kantaluku on e, niin eksponenttifunktiolla on Taylorin sarja esitys exp(x) = ∞ ∑ xn n=1 x2 x3 =1+x+ + + ... n! 2! 3! ja esitys raja-arvona exp(x) = lim (1 + n→∞ x n ) . n Eksponenttifunktion exp(x) graa (x ∈ [−2, 2]) 8 exp(x) 7 6 5 4 3 2 1 0 −2 −1.5 −1 −0.5 0 x 0.5 1 1.5 2 Esimerkiksi kantaluvulle 2: f (n) = 2n , missä n = 0, 1, 2, 3, . . . . ja n 2n 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 . . . 1 024 . . . n 2n 20 1 048 576 30 1 073 741 824 40 1 099 511 627 776 50 1 125 899 906 842 624 60 . . . 1 152 921 504 606 846 976 . . . Eksponenttifunktion ku on b, sitä vastaa käänteisfunktio b-kantainen on logaritmi. Kun eksponentin kantalu- logaritmi. Olkoot bx = y ↔ logb y = x logb (bx ) = x blogb x = x y > 0, b > 0, b ̸= 1 jolloin Jos logaritmin kantalukuna käytetään Neperin lukua, niin vastaavaa logaritmia kutsutaan luonnolliseksi logaritmiksi ja merkitään ln := loge Kaksi muuta yleistä tapausta vastaavat kantalukuja 2 ja 10, eli saadaan logaritmit log2 ja log10 . Siis exp(x) = y ↔ ln y = x 2x = y ↔ log2 y = x 10x = y ↔ log10 y = x Luonnollisen logaritmin loge (x) graa (x ∈ [0.01, 2]) 1 log(x) 0 −1 −2 −3 −4 −5 0 0.5 1 x 1.5 2 Logaritmin laskusääntöjä logb x = log x . log b Huom: osamäärässä voidaan käyttää mitä tahansa logaritmia! Niinpä esimerkiksi log2 x = ln x ln 2 = log10 x . log10 2 Koska yo kaavoissa ln 2 ja log10 2 ovat vakioita, niin ne voidaan laskea val- miiksi: ln 2 ≈ 0.69315, 1 ln 2 log10 2 ≈ 0.30103, ≈ 1.442695 1 log10 2 . Niinpä ≈ 3.3219. log2 x ≈ 1.4 · ln x Niinpä . log2 x ≈ 3.3 · log10 x Eri logaritmit siis eroavat toisistaan vain vakiokertoimella! . Toinen laskusääntö: log (x · y) = log x + log y Ja sen johdannaisia: logb (b · x) = logb x + 1 log2 (2 · x) = log2 x + 1 log (x2 ) = 2 · log x log (xk ) = k · log x Merkintöjä: log2 x = (log x)2 . log log x = log (log x). Logaritmin laskusääntöjä Tarkastellaan kymmenkantaista logaritmia: n 10n log10 10n 0 1 0 1 10 1 2 100 2 3 1000 3 4 . . . 10000 . . . 4 . . . 10 . . . 10000000000 . . . 10 . . . Kymmenkantainen logaritmi siis kertoo luvun nollien määrän. Tarkastellaan kaksikantaista logaritmia: n (2n )10 (2n )2 log2 2n 0 1 1 0 1 2 10 1 2 4 100 2 3 8 1000 3 4 . . . 16 . . . 10000 . . . 4 . . . 10 1024 10000000000 10 20 . . . 1048576 . . . 100000000000000000000 . . . 20 . . . Kaksikantainen logaritmi siis kertoo luvun binääriesityksen nollien määrän. 16 Algoritmien aikavaativuudesta lyhyesti Algoritmien ja laskentaoperaatioiden aikavaativuus yleensä määritellään datan/syötteen (input) koon funktiona. Olkoon n datan koko. f (n) ja g(n) funktioita, jotka määrittelevät aikavaativuudet. Aikavaativuus f (n) voidaan määritellä notaatiolla O(g(n)), joka tarkoittaa että funktio f (n) on kertaluokkaa g(n), eli on olemassa vakiot n0 > 0 ja C > 0, Olkoon s.e. f (n) ≤ Cg(n), kaikille n > n0 . Esimerkki hierarkiasta (g(n) luokat) 1. n! (kertomallinen) 2. 2n (eksponentiaalinen) 3. nk , nk−1 , . . . 4. n3 (kuutiollinen, polynomiaalinen (aste 3)) 5. n2 (neliöllinen, polynomiaalinen (aste 2) ) 6. n log(n) 7. n 8. log(n) 9. 1 (polynomiaalinen, aste > 3) (lineaarinen, polynomiaalinen (aste 1)) (logaritminen) (vakio) Korkeimmalla hierarkiassa oleva termi funktiossa vuuden. f (n) määrittelee aikavaati- 7 10 n2 n3 6 10 2n 5 10 4 10 3 10 2 10 1 10 0 10 2 4 6 8 10 12 14 16 18 20 Esim. 1 3 2 Olkoon f (n) = 2n + 2n + 2n. Tällöin 3 n ≥ n, kun n ≥ 1. Saamme siis f (n) on O(n3 ), f (n) = 2n3 + 2n2 + 2n ≤ 2n3 + 2n3 + 2n3 = 6n3 , koska kaikille n n3 ≥ n2 ja ≥ 1. Esim. 2 f (n) = n log(n) + 10n + 7. Tällöin f (n) O(n) ja 7 on O(1). Olkoon on O(n log(n)), koska 10n on Esim. 3 Tarkastellaan aiemmin määritellyn matriisitulon kavaativuutta, olettaen, että Matriisin M 2 M on n × n-matriisi. M 2 := M · M ai- alkiot laskettiin muodossa Mij2 = n ∑ Mik · Mkj , k=1 n kertolaskua ja n − 1 yhteenlaskua, eli n + n − 1 = 2n − 1 alkeisopeM 2 on n2 alkiota, laskemme yhteensä n2 · (2n − 1) 3 operaatiota, eli saamme aikavaativuudeksi O(n ). jossa on raatiota. Koska matriisissa
© Copyright 2024