Hajota ja hallitse -yhtälö ja algoritmin tehokkuus
Sainio, Niko-Pekka (2022)
Sainio, Niko-Pekka
2022
Matematiikan ja tilastotieteen kandidaattiohjelma - Bachelor's Programme in Mathematics and Statistics
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2022-05-24
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202205235198
https://urn.fi/URN:NBN:fi:tuni-202205235198
Tiivistelmä
Algoritmien tehokkuus on olennaista algoritmeja suunniteltaessa. Tutkielmassa käsitellään algoritmien tehokkuutta, hajota ja hallitse -yhtälön käyttöä algoritmien kehittämisessä sekä rekursiivisten funktioiden asymptoottisen tehokkuuden arviointitapoja. Tutkielmassa käytetään lähteinä teoksia Discrete Mathematics with Applications ja Introduction to Algorithms.
Jotta kahden algoritmin tehokkuuksia voidaan verrata keskenään, on löydettävä tapa, jolla voimme objektiivisesti arvioida algoritmien tehokkuutta. Tätä varten tutkielmassa määritellään ordo-, omega- ja theta-notaatiot. Tutkielmassa myös annetaan näiden käytöstä esimerkit. Ordo-notaatio kertoo algoritmin vaatiman maksimaalisen ajankäytön, omega-notaatio puolestaan kertoo algoritmin vaatiman minimaalisen ajankäytön. Theta-notaatio yhdistää ordo- ja omega-notaatiot ja antaa arvion algoritmin vaatimasta keskivertoajankäytöstä.
Rekursiiviset funktiot ovat funktioita, jotka määritellään perustapauksen, sekä funktion aikaisempien arvojen perusteella. Rekursiiviset algoritmit ovat algoritmeja, jotka kutsuvat itseään uudella arvolla, kunnes pääsemme triviaalitapaukseen. Tutkielmassa on annettu tarkemmat määritelmät rekursiivisille funktioille ja algoritmeille.
Jotta rekursiivisten algoritmien tehokkuuksia voidaan vertailla, tarvitsee löytää tapa, jolla mallintaa niiden tehokkuuksia aikaisempien notaatioiden avulla. Tätä varten tutkielmassa käydään läpi rekursiopuut, sekä päämetodi. Rekursiopuu antaa meille graafisen kuvauksen algoritmin toiminnasta, jonka perusteella on mahdollista tehdä arvio algoritmin ajankäytöstä, ja tämän jälkeen todistaa arvio oikeaksi induktiotodistuksella. Päämetodi soveltuu algoritmeihin, joiden toimintaa voi kuvata hajota ja hallitse -yhtälöllä. Tutkielmassa käydään läpi päämetodin kolme tapausta, sekä todistetaan päämetodin toimivuus.
Tutkielman lopussa käydään läpi hajota ja hallitse -periaate algoritmien suunnittelussa. Tästä tutkielmassa käydään esimerkkinä läpi lomituslajittelu ja arvioidaan sen asymptoottinen tehokkuus päämetodin avulla.
Jotta kahden algoritmin tehokkuuksia voidaan verrata keskenään, on löydettävä tapa, jolla voimme objektiivisesti arvioida algoritmien tehokkuutta. Tätä varten tutkielmassa määritellään ordo-, omega- ja theta-notaatiot. Tutkielmassa myös annetaan näiden käytöstä esimerkit. Ordo-notaatio kertoo algoritmin vaatiman maksimaalisen ajankäytön, omega-notaatio puolestaan kertoo algoritmin vaatiman minimaalisen ajankäytön. Theta-notaatio yhdistää ordo- ja omega-notaatiot ja antaa arvion algoritmin vaatimasta keskivertoajankäytöstä.
Rekursiiviset funktiot ovat funktioita, jotka määritellään perustapauksen, sekä funktion aikaisempien arvojen perusteella. Rekursiiviset algoritmit ovat algoritmeja, jotka kutsuvat itseään uudella arvolla, kunnes pääsemme triviaalitapaukseen. Tutkielmassa on annettu tarkemmat määritelmät rekursiivisille funktioille ja algoritmeille.
Jotta rekursiivisten algoritmien tehokkuuksia voidaan vertailla, tarvitsee löytää tapa, jolla mallintaa niiden tehokkuuksia aikaisempien notaatioiden avulla. Tätä varten tutkielmassa käydään läpi rekursiopuut, sekä päämetodi. Rekursiopuu antaa meille graafisen kuvauksen algoritmin toiminnasta, jonka perusteella on mahdollista tehdä arvio algoritmin ajankäytöstä, ja tämän jälkeen todistaa arvio oikeaksi induktiotodistuksella. Päämetodi soveltuu algoritmeihin, joiden toimintaa voi kuvata hajota ja hallitse -yhtälöllä. Tutkielmassa käydään läpi päämetodin kolme tapausta, sekä todistetaan päämetodin toimivuus.
Tutkielman lopussa käydään läpi hajota ja hallitse -periaate algoritmien suunnittelussa. Tästä tutkielmassa käydään esimerkkinä läpi lomituslajittelu ja arvioidaan sen asymptoottinen tehokkuus päämetodin avulla.
Kokoelmat
- Kandidaatintutkielmat [8452]