Kuvausta kurssista
DISKREETTI MATEMATIIKKA
Martti E. Pesonen 2002, 2004, 2006
Yleistä
Diskreetti matematiikka on hyvin monivivahteinen matematiikan
alue, joka ei sinänsä edes ole mikään matematiikan
"haara", vaan eräänlainen monia haaroja yhdistävä poikkileikkaus.
Niinpä diskreetin matematiikan eri oppikirjat ja
kurssit voivat olla hyvinkin erilaisia riippuen tarkoituksesta ja opettajan
mieltymyksistä.
Yhteistä näille eri toteutuksille yleensä
on, että kaikissa tarkastellaan äärellisiä
ilmiöitä kuten kombinatoriikkaa ja lukumääräongelmia
sekä verkkoalgoritmeja, ja että perusobjekteja ovat varsin eksplisiittisesti
logiikka, joukko-oppi, relaatiot ja funktiot.
Nämä ovat äärellisinä tai numeroituvina
diskreettejä,
erotukseksi jatkuvista tilanteista, joita tarkastellaan mm.
Analyysin kursseilla.
Tämäkään kurssi ei ole asiasisällöltään
mitenkään poikkeava, pikemminkin valtavirtoja myötäilevä.
Erikoisempaa on kuitenkin ohjelmoinnille ja animoinnille
annettu painotus, jonka tarkoituksena on käsitteiden ja algoritmien
konkretisoituminen paremmin omaksuttavaan muotoon. Matemaattisilla olioilla
ja menetelmillä päästään "leikkimään"
ja "askartelemaan" aivan toisella tasolla kuin mitä pelkkä kynä-paperi-pähkäily
sallii.
Mutta ei todistustehtäviäkään tulla
unohtamaan!
Ohjelmoinnista
Algoritmien ohjelmoiminen, animointi ja tutkiminen auttaa
paitsi itse asian oppimisessa myös käytettävän välineen
hallinnan omaksumisessa. Osa opittavista asioista annetaan valmiiksi koodattuna,
mutta valtaosa itse algoritmeista ohjelmoidaan harjoitustehtävinä
yksin tai ryhmissä, paikan päällä tai kotitehtävinä.
Animointi tapahtuu pääasiassa lisäämällä
koodin väliin piirtokäskyjä, ja tämä tapahtuu
usein opettajan toimesta kun ohjelmat ovat valmiina.
Matlabista
Diskreetin matematiikan kurssilla on jo vuodesta 1989 käytetty
MATLAB-ohjelmaa, joka on keskeinen sovelletun matematiikan ja teknisten
alojen työvälineohjelma. Se sopii yleensä hyvin myös
matematiikan graafisiin esityksiin, joissa se sallii monipuolisen kontrollin
sekä syöttö- että tulostuspuolella. Matlabin ohjelmointikieli
on selkeää, lyhyttä ja ytimekästä, ja erityisesti
tällä kurssilla käytetään vain suppeaa käskykannan
osajoukkoa.
MATLABin (MATrix LABoratory) tärkein tietorakenne
on matriisi, joka on luvuista koostuva taulukko. Luvut voivat
olla kompleksisia liukulukuja (float), mutta myös kokonaislukuja
ja totuusarvoja voi käyttää. Kokonaisluvuissa
pysytään niin kauan kuin laskutoimitusten tulokset pysyvät
kokonaislukuina. Luvut 0 ja 1 tulkitaan totuusarvoiksi aina, kun operaatioina
käytetään loogisia operaatioita.
Kurssia varten on tekeillä eräänlainen
Tehtävä-opas-dokumentti.
Olioiden esittäminen matriiseina
Relaatiota esitetään usein paitsi kaavoilla tai
luetteloilla myös matriisilla. Verkko esitetään normaalisti
yhteysmatriisina,
jolla olemassaolevat yhteydet (välit l. kaaret), niiden lukumäärät
tai painot ilmoitetaan. Asiayhteydestä täytyy käydä
ilmi mitä kulloinkin tarkoitetaan. Esimerkiksi yksinkertaisessa painotetussa
verkossa yhteysmatriisi korvataan kaarten painomatriisilla.
Tietojenkäsittelyopillisesti verkon esittäminen
matriisina ei ole aina järkevää, sillä tietorakenteena
matriisi on jäykkä. Usein verkon matriisi sisältää
suurimmaksi osaksi nollia, mikä on turhaa muistin rasitusta. Ohjelmien
tekeminen varsinaisella joustavat tietorakenteet (mm. listat) omaavalla
modernilla ohjelmointikielellä kuten C tai Pascal on kuitenkin perin
työlästä ja etäännyttää opiskelijan
opiskeltavasta asiasta. Matriisiesitys antaa tilaisuuden käyttää
hyödyksi matriisioperaatioita kuten transponointi, kertolasku, rivin
ja sarakkeen poimiminen ym., jotka ovat lineaarialgebran ohjelmille ominaisia
ja relaatioiden ja verkkojen käsittelyssä hyvin havainnollisia
ja luonnollisia.