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.