140 likes | 395 Views
Algoritmid ja andmestruktuurid. Henn Sarv IT Kolledž 2003 kevad. Kursuse sissejuhatus ja tutvustus. Töökorraldus Loeng ja harjutus, esimene nädal teeme 2 loengut Harjutused töö käigus, nii analüüsimist kui koostamist C või mis iganes ja C#
E N D
Algoritmid ja andmestruktuurid Henn Sarv IT Kolledž 2003 kevad
Kursuse sissejuhatus ja tutvustus • Töökorraldus • Loeng ja harjutus, esimene nädal teeme 2 loengut • Harjutused töö käigus, nii analüüsimist kui koostamist • C või mis iganes ja C# • 1 kontrolltöö ja kirjalik eksam – teeme fifty-fifty
Alusmaterjalid • Ainekaardil on raamatuviited • www.google.com • http://www.itcollege.ee/~dmitri/ID209/index.htm • http://cs.ttu.ee/~marko/wav3020/
Kursuse eesmärk • Saada ülevaade algoritmidest ja nende keerukusega seotud probleemidest • Saada oskus algoritme analüüsida • Kursuse mitteeesmärk • Mitte teoreetiline jutt – seda leiab internetist, pigem arutada ja selgitada läbi • Mitte õpetada teid programmeerima. Pigem õpetada nägema seinu ja aknaid
Ligikaudne kava • Algoritm ja selle keerukus • Lihtsad struktuurid, pinud ja jadad • Keerukad struktuurid, listid, puud • Otsimisalgoritmid • Lisamisalgoritmid • Sortimisalgoritmid • … • VÕIB MUUTUDA!
Algoritm ja selle keerukus • Mis on algoritm • Probleem • Lahenduskäik • Programm • Lähteinfo, tulemusinfo • Samale probleemile mitu lahendust, milline on parem • Teeme mõne näite
Algoritmi kriteeriumid • Lõpetav: algoritm peatub kunagi • Korrektsus: algoritm annab õige vastuse • Deterministlik: samale sisendile alati sama vastus • Lõplik: seda saab kirjeldada lõpliku arvu sammudega • Määratletud: igal sammul on selgelt defineeritud tähendus • Keerukus: kui palju aega ja mälu algoritm vajab
Keerukus • Parim, halvim, keskmine, vältimatu • BCRT • WCRT • ACRT • Vältimatu aeg • Ajamaht ja mälumaht
Algoritmi ajaline kestus, algoritmi ajaline keerukus • Kuidas seda mõõta • Kuidas seda analüüsida • Samm, selle kestus, selle korduvus
Algoritmi analüüsimine • Keerukus • Sõltub lähteandmetest • Nende mahust (massiivi suurus) • Nende suurusest (stringi pikkus) • Nende väärtusest (faktoriaal, algtegurid)
Miks seda kõike vaja on • Jälle paar näidet
Keerukusklassid, kuidas need saadakse, põhimõisted • Teeta, o ja omega • Algoritmid, mille lahendusaeg kasvab sarnaselt, on sarnase keerukusega • Oluline on keskenduda kõige mahukamale osale
Mõned tähistused • time(n) = Θ(n) -- aeg kasvab andmetega lineaarselt • O – suurim kasv, • Ώ – vähim kasv, • Θ - mõlemad
Keerukusklasside jada • Θ(1) – konstantse keerukusega - näide • Θ(n) – lineaarse keerukusega – näide • Θ(log n) – logaritmilise keerukusega – näide • Θ(nk) – polünomiaalse keerukusega • Θ(kn) – astmelise (eksponentsiaalse) keerukusega • Θ(n!) - faktoriaalse keerukusega • Θ(1) < Θ(log n) < Θ(n) < Θ(nk) < Θ(kn) < Θ(n!)