Luennot 1-15 - Tietojenkäsittelytieteen laitos - Itä

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