1 / 13

521144A, Algoritmit ja Tietorakenteet, syksy 2013

521144A, Algoritmit ja Tietorakenteet, syksy 2013. Kertausluento 27.11.2013. Sisältö (1/2). 1. Johdanto 1.1 Algoritmeista ja tietorakenteista 1.2 Johdanto algoritmien analyysiin 1.3 Funktioiden kasvusta 2. Algoritmien analyysi 2.1. Algoritmien oikeellisuus

tyanne
Download Presentation

521144A, Algoritmit ja Tietorakenteet, syksy 2013

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 521144A, Algoritmit ja Tietorakenteet, syksy 2013 Kertausluento 27.11.2013

  2. Sisältö (1/2) • 1. Johdanto • 1.1 Algoritmeista ja tietorakenteista • 1.2 Johdanto algoritmien analyysiin • 1.3 Funktioiden kasvusta • 2. Algoritmien analyysi • 2.1. Algoritmien oikeellisuus • 2.2. Algoritmien suorituskyvyn analyysi • 2.3. Iteratiivisten algoritmien analyysi • 2.4. Rekursiivisten algoritmien analyysi • 3. Lajittelualgoritmeista • 3.1 Pikalajittelu (Quicksort) • Luento: Prioriteettijonot • 3.2 Kekolajittelu (Heapsort)

  3. Sisältö (2/2) • 4. Tietorakenteita • 4.1 Abstrakti määritelmä • 4.2 Alkeistietorakenteet • 4.3 Hashtaulukot • 4.6Tietorakenteiden täydentäminen • 5. Verkkoalgoritmeja • 5.1 Leveyshaku • 5.2 Syvyyshaku • 5.3 Kruskalin algoritmi • 5.4 Dijkstra algoritmi

  4. MIKSI ALGORITMEJA ANALYSOIDAAN? • Varmistamaan algoritmin oikea toiminta, ts. algoritmin päättyminen ja asianmukainen tulos • Oikeellisuus • Algoritmin suorituskyvyn tarkastelu • suorituskyky tarkoittaa sen kuluttamien resurssien määrää ja algoritmin kuluttamaa aikaa suhteessa syötteeseen, jälkimmäinen aikakompleksisuus

  5. II.1.1.2 Esimerkki: Taulukon arvojen minimi Syöte: Taulukko A[1,..,n], n >= 1 Tulostus: Pienin luvuista A[1], … , A[n] MINIMI(A) 1. i = 2 2. x = A[1] 3. while i <= n 4. if A[i] < x then 5. x = A[i] 6. i = i+1 7. return x i on konvergentti Silmukkainvariantti: Kun i=k, rivillä 3 muuttujan x arvo on pienin taulukon arvoista A[1], …, A[k-1]

  6. Funktioiden kasvu • https://www.raippa.fi/AlgoritmitJaTietorakenteet/3.%20Luento#Funktioiden_kasvun_vertailua.Funktioiden_kasvun_vertailua • http://en.wikipedia.org/wiki/Big_O_notation#Orders_of_common_functions • Ongelman kompleksisuustyyppiä määriteltäessä voidaan käyttää esimerkiksi termejä "polynomisessa ajassa ratkeava" ja "eksponentiaalinen ongelma". • Esim. Jos algoritmin kompleksisuusluokka on Θ(n^k) (tai O(n^k)) sitä sanotaan polynomiaikaiseksi • Polynomiaikaisia algoritmeja pidetään laskennallisesti sovellettavina < • Polynomit kasvavat hitaammin kuin eksponentit, logaritmit kasvavat hitaammin kuin polynomit. • Iteratiiviset algoritmit: • Laske kokonaissuoritusaika kertomalla aika jokaisen operaation taajuudella, lopuksi summaa tulot • Rekursiiviset algoritmit: • Rekursiopuun avulla tarkastelu • Induktiivinen päättely • Rekursioyhtälön muodostaminen ja ”Master Theorem”

  7. Lajittelualgoritmeja • Lisäyslajittelu, Insertion sort, Ο(n²) • http://en.wikipedia.org/wiki/Insertion_sort • Lomituslajittelu, Merge sort, O(n log n) • http://en.wikipedia.org/wiki/Merge_sort • Pikalajittelu, Quicksort, O(n log n) • http://en.wikipedia.org/wiki/Quicksort • Kekolajittelu, Heapsort, O(n log n) • http://en.wikipedia.org/wiki/Heapsort • Vertailuun perustuva lajittelualgoritmi ei voi olla nopeampi kuin luokkaa O(n log n). • On olemassa myös lineaariajassa toimivia lajittelualgoritmeja.

  8. Tietorakenteet • Tietorakenne on äärellinen dynaaminen joukko, joka toteuttaa rajapintanaan sarjan operaatioita joiden kautta algoritmi voi muokata joukkoa. • Alkiot: avain, järjestysdata, satelliittidata • Operaatiot: etsi, lisää, poista, minimi, maksimi, seuraaja, edeltäjä • Pino (LIFO), jono (FIFO), linkitetty lista • Hash-taulukko, binäärinen etsintäpuu • Puna-mustat puut • Tietorakenteen täydentäminen • Järjestystunnuspuu, intervallipuut

  9. Verkkoalgoritmit • Rakenne ja esitystavat • Vieruslista, matriisiesitys • Leveyshaku • Syvyyshaku • Kruskalin algoritmi (pienin virittävä puu) • Dijkstran algoritmi (kevein polku lähtösolmusta s)

  10. Laskuharjoitukset • Viikot 45, 46, 49 • Osallistumisesta 5p/kerta, yht. Max 15p • TOL järjestää • O-notaatio, algoritmien oikeellisuus ja aikakompleksisuus • Master Theorem-soveltaminen, lajittelualgoritmit • Verkkojen leveys- ja syvyyshakualgoritmit

  11. Ohjelmointiharjoitukset • Viikot 48, 50 • Ohjelmointiharjoituksen työselostus on palautettava kurssisuoritusta varten • Sisältää esitehtävän sekä labraharjoituksen • 1. harj. palautuksen takaraja 8.12.2013 • 2. harj. palautuksen takaraja 3.1.2014 • 20p + 20p, yht. max 40 p • https://noppa.oulu.fi/noppa/kurssi/521144a/python_archive • Huomatkaa, että Noppa lisää etuliitteen koodinpätkiin, poistakaa se tallennusvaiheessa!

  12. Harjoitustyö • Työselostus ohjelmointikoodeineen palautettava viimeistään 17.1.2014 • Opiskelijan tulee varata aika lopputyön arviointisessioon palautuksen jälkeen. • Arviointi: max 30 p

  13. Kurssin arvostelu • Tavoite: Arvosanat opiskelijoille 31.1.2014 • Laskarit, labraharkat, harj.työ • Max: 15p+40p+30p=85p • Läpipääsyyn vaaditaan 40p

More Related