Abstraktiot ja analyysi algoritmit ja informaation esitykset

Samankaltaiset tiedostot
ICS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2015)

ICS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2016)

CS-A1120 Ohjelmointi 2 (5 op, IV V, kevät 2018)

Uuden äärellä ohjelmoitava vai oppiva kone?

Uuden äärellä ohjelmoitava vai oppiva kone?

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Tietokoneen mysteeri ohjelmoitava kone

Tehtävä 2: Loppuosataulukko

Laskennan vaativuus ja NP-täydelliset ongelmat

Ohjelmoinnin perusteet Y Python

Uuden äärellä rinnakkaisuus ja samanaikaisuus

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tietorakenteet ja algoritmit - syksy

Algoritmit 1. Luento 2 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit I Johdanto

Tietokoneen mysteeri ohjelmoitava kone

Lisää pysähtymisaiheisia ongelmia

Ohjelmoinnin perusteet Y Python

Algoritmit lyhyiden sekvenssien rinnastamiseen referenssigenomia vasten. Krista Longi

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 2. Luento 3 Ti Timo Männikkö

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

811120P Diskreetit rakenteet

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Tieto- ja tallennusrakenteet

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Muita vaativuusluokkia

Datatähti 2019 loppu

Ohjelmoinnin perusteet Y Python

Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan?

a ord 13 (a)

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

2 Sanoja järjestävän funktion ohjelmoiminen

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

1. Esitä rekursiivinen määritelmä lukujonolle

Algoritmit 1. Luento 12 Ti Timo Männikkö

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.

Algoritmit 2. Luento 14 Ke Timo Männikkö

Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Reaalilukuvälit, leikkaus ja unioni (1/2)

Task list Submit code Submissions Messages Scoreboard View queue Edit contest

Algoritmit 1. Luento 10 Ke Timo Männikkö

4.3. Matemaattinen induktio

33. pohjoismainen matematiikkakilpailu 2019 Ratkaisut

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Algoritmit 2. Luento 6 To Timo Männikkö

Tuloperiaate. Oletetaan, että eräs valintaprosessi voidaan jakaa peräkkäisiin vaiheisiin, joita on k kappaletta

3. Laskennan vaativuusteoriaa

Algoritmit 1. Demot Timo Männikkö

Relevanttien sivujen etsintä verkosta: satunnaiskulut verkossa Linkkikeskukset ja auktoriteetit (hubs and authorities) -algoritmi

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

Vastauksia. Topologia Syksy 2010 Harjoitus 1

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Matriisit ja vektorit Matriisin käsite Matriisialgebra. Olkoon A = , B = Laske A + B, , 1 3 3

Kokonaislukuoptiomointi Leikkaustasomenetelmät

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

Esimerkkejä vaativuusluokista

Tietojenkäsittelyteorian alkeet, osa 2

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

MS-A010{3,4,5} (ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

7.4 Sormenjälkitekniikka

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Mediaanisuodattimet. Tähän asti käsitellyt suodattimet ovat olleet lineaarisia. Niille on tyypillistä, että. niiden ominaisuudet tunnetaan hyvin

Algoritmit 2. Luento 6 Ke Timo Männikkö

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Määritelmä Olkoon T i L (V i, W i ), 1 i m. Yksikäsitteisen lineaarikuvauksen h L (V 1 V 2 V m, W 1 W 2 W m )

Algoritmit 2. Luento 13 Ti Timo Männikkö

MS-A010{2,3,4,5} (SCI, ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

TIETOTEKNIIKAN MATEMATIIKKA

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Matematiikan tukikurssi, kurssikerta 3

Miten osoitetaan joukot samoiksi?

Kokonaislukuoptimointi

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Transkriptio:

01110111010110 11110101010101 00101011010011 01010111010101 01001010101010 10101010101010 Abstraktiot ja analyysi algoritmit ja informaation esitykset Petteri Kaski Tietotekniikan laitos Aalto-yliopisto CS-A1120 Ohjelmointi 2 12. huhtikuuta 2017 10101011110101 01010101011101 01010111010110 10101101010110 10101110101010 11101010101101 01110111010110 10111011010101 11110101010101 00010101010101 01011010101110

Sisältö (kierrokset ja moduulit) I 1. Lämmittelykierros Tietokoneen mysteeri 2. Bitit ja data 3. Kombinaatiologiikka 4. Sekventiaalilogiikka 5. Ohjelmoitava kone II Abstraktiot ja analyysi 6. 7. 8. 9. III Funktionaalinen ohjelmointityyli Suorituskykyanalyysi Rekursio Algoritmit ja informaation esitykset Uuden äärellä 10. Rinnakkaisuus ja samanaikaisuus 11. Virtualisointi ja skaalautuvuus 12. Ohjelmoitava vai oppiva kone? (Intel Xeon Phi Knights Landing -lastu, 72 suoritusydintä, 8 miljardia transistoria, 14 nanometrin litografia) (Google Hamina)

Laskenta ja ohjelmointi Laskenta on luonnonilmiö Ohjelmointi on keino valjastaa laskenta haluttuun tarkoitukseen Ohjelmointitaito ja ymmärrys laskennasta ovat välttämätön osa tieteellistä yleissivistystä tietojenkäsittelytieteen alkeet

Laskennan ja ohjelmoitavuuden yleisyysperiaate: Ohjelmoitava kone voi, sopivasti ohjelmoituna, simuloida toista ohjelmoitavaa konetta (Moduuli 1)

Laskenta ja ohjelmointi ovat laitteistosta ja ohjelmointikielestä riippumattomia käsitteitä (käytännössä fyysinen laitteisto, esimerkiksi käytettävissä olevan muistin määrä, ja simulaation tehokkuus rajaavat edellistä väitettä jonkin verran) (Moduuli 1)

Tietojenkäsittelytiede on nuori tieteenala P vs NP -ongelma on erinomainen esimerkki siitä että ymmärryksemme laskennasta ja siitä mitä tehtäviä voidaan ratkoa tehokkaasti ei ole vielä erityisen kypsä töitä siis riittää! (**) http://cacm.acm.org/magazines/2009/9/38904-the-status-of-the-p-versus-np-problem/fulltext

Esimerkki NP-täydellisestä tehtävänasettelusta Voidaanko luku 2017 muodostaa summana kokonaisluvuista 87, 116, 153, 265, 394, 476, 516, 664, 670, 791 jos jokaista lukua saa käyttää enintään kerran? Ei tunneta menetelmää joka tehokkaasti ratkaisisi tehtävän sen yleisessä muodossa (= mielivaltaisen monta mielivaltaisen suurta lukua)

2017 = 87 + 116 + 153 + 394 + 476 + 791 (Pienillä syötteillä ratkaisu toki onnistuu.)

Osajoukkosumma-ongelmasta enemmän (***) http://dx.doi.org/10.4230/lipics.stacs.2016.13 STACS 16 February 17 20, 2016 Orléans, France

9. Algoritmit ja informaation esitykset

Motivaatio Ihmiskunnan kyky käsitellä ja hyödyntää informaatiota rajautuu käytettävissä oleviin algoritmeihin ja nokkeliin tapoihin esittää informaatio tehokkaan laskennan mahdollistamiseksi (Laskenta-alustoilla ja käytettävissä olevilla ohjelmointiabstraktioilla on tietysti myös merkittävä rajaava rooli jos laskenta-alusta on tehoton tai varsinainen ohjelmointityö tehotonta, ei myöskään paljoa saada aikaan)

Esimerkki Roomalaisessa lukujärjestelmässä esitetyillä luvuilla on ikävä laskea Positionaalilukujärjestelmässä esityillä luvuilla on huomattavasti näppärämpi laskea (Kierrokset 2 & 3)

Algoritmi Abū Abd Allāh Muhammad ibn Mūsā al-khwārizmī https://www.cs.princeton.edu/~chazelle/pubs/algorithm.html

Esimerkki Epäjärjestys ja järjestetty aineisto Järjestäminen (lajittelu) Järjestettyyn aineistoon voi tehdä tehokkaita hakuja (binäärihaku) (Kierros 7)

Esimerkki Osajoukkosumma Tehokkaita ratkaisualgoritmeja ei tunneta Eräitä (yleisessä tapauksessa tehottomia) menetelmiä: Rekursiivinen haku Dynaaminen ohjelmointi (Kierros 8)

Algoritmit ja informaation esitykset Kierroksella 9 tarkastelemme kahta esimerkkiä, toinen käsittelee tekstuaalista informaatiota, toinen numeerista Esimerkki 1: Tekstiaineiston indeksointi hakua varten järjestyksestä ja järjestämisestä enemmän Esimerkki 2: Yhden muuttujan polynomeilla laskenta ja signaalinkäsittely (ei käsitellä kevät 2017 mutta demo seuraavassa!)

[demo] Kaksi vaihtoehtoista tapaa esittää sama yhden muuttujan polynomi: kerroinesitys polynomin arvot d + 1 pisteessä (polynomin asteluku d; yllä d = 3)

Tekstihaku Missä kohtaa tekstiä etsittävä hahmo esiintyy?

Hahmo vastaa tekstiä (löytyy tekstistä) alkaen indekseistä i=3 ja i=6

Huomatus: Hahmo voi mennä tekstissä päällekkäin itsensä kanssa

Tehokas haku? Entäpä jos tekstin pituus on n... ja hahmon pituus on m Haku on selvästikin tehtävissä ajassa O(nm)... mutta entäpä jos tekstiaineisto (n) on todella suuri?... ja haluamme tehdä aineistoon, sanokaamme, tuhansia hakuja sekunnissa?

Periaate: Indeksointi tehokkaan haun mahdollistamiseksi Pystyisimmekö indeksoimaan tekstiaineiston siten, että siihen on tehokasta tehdä hakuja? Vrt. binäärihaku järjestetystä aineistosta (... miten järjestämme tekstiaineistoa? )

Sanakirjajärjestys (leksikografinen järjestys) Mikä on käytetty järjestämissääntö?

Merkkijono S edeltää merkkijonoa T leksikografisessa järjestyksessä jos ja vain jos merkkijono S on merkkijonon T aito prefiksi ( etuliite ), tai on olemassa pienin indeksi i jossa S ja T poikkeavat toisistaan siten, että S(i ) < T(i )

Periaate: Indeksointi tehokkaan haun mahdollistamiseksi Pystyisimmekö indeksoimaan tekstiaineiston siten, että siihen on tehokasta tehdä hakuja? Vrt. binäärihaku järjestetystä aineistosta (... olisiko siis leksikografisesta järjestyksestä apua tekstihaussa?... täsmälleen mitä järjestämme?)

Merkkijonon suffiksit ( päätteet )

Suffiksi ja suffiksin indeksi (~alkamispaikka alkup. tekstissä)

Suffiksit (ja indeksit) leksikografisessa järjestykessä

Mikä tahansa hahmo esiintyy leksikografisessa järjestyksessä peräkkäisissä suffikseissa!... hahmon esiintymiä voi siis etsiä binäärihaulla!

Suffiksitaulukko Havainto: Binäärihaun toteutukseen riittää ainoastaan suffiksit (ts. niiden alkupaikat) järjestävä taulukko, suffiksitaulukko, jonka avulla jokainen binäärihaussa tarvittava suffiksi on helppo rakentaa lukemalla tekstiä taulukon määräämästä alkupaikasta

Permutaatio Joukon S = {0,1,...,n 1} permutaatio on taulukko jonka pituus on n ja jossa jokainen joukon S alkio esiintyy täsmälleen kerran Esimerkki Eräs joukon {0,1,...,10} permutaatio:

Järjestävä permutaatio Olkoon d taulukko, jonka pituus on n ja jonka alkioille on määritelty jokin järjestys Joukon {0,1,, n 1} permutaatio r on taulukon d järjestävä permutaatio jos d(r(1)) d(r(2))... d(r(n 1)) Esimerkki:

Suffiksitaulukko Suffiksitaulukko on merkkijonon suffiksit (leksikografiseen järjestykseen) järjestävä permutaatio

Käänteispermutaatio Olkoon r joukon {0,1,...,n 1} permutaatio Permutaation r käänteispermutaatio on se joukon {0,1,...,n 1} permutaatio u, jolle pätee u(r(j)) = j kaikilla j = 0,1,...,n 1 Esimerkki r u

Järjestysnumeroiva permutaatio Olkoon d taulukko, jonka pituus on n ja jonka alkioille on määritelty jokin järjestys Joukon {0,1,...,n 1} permutaatio u on taulukon d järjestysnumeroiva permutaatio jos permutaation u käänteispermutaatio on taulukon d järjestävä permutaatio Esimerkki

Tehtävät suffixbuild suffiksitaulukon rakentaminen vailla tehokkuusvaateita (puoli riviä Scalaa) sorting radiksilajittelu (radix sort) ja lajitteluun (sorting) liittyviä käsitteitä patternsearch hahmonetsintää tekstiaineistosta annetun suffiksitaulukon avulla; kaksoisbinäärihaku suffiksitaulukkoon suffixfast tehokkaampi suffiksitaulukon rakentaminen prefiksintuplausalgoritmilla (lukemistossa esimerkkejä) Burrows-Wheeler -muunnos (haastetehtävä) tekstiaineiston muuntaminen paremmin pakkautuvaan muotoon (esim. bzip2-pakkausalgoritmin perusta)

Ihmiskunnan kyky käsitellä ja hyödyntää informaatiota rajautuu käytettävissä oleviin algoritmeihin ja nokkeliin tapoihin esittää informaatio tehokkaan laskennan mahdollistamiseksi (Laskenta-alustoilla ja käytettävissä olevilla ohjelmointiabstraktioilla on tietysti myös merkittävä rajaava rooli jos laskenta-alusta on tehoton tai varsinainen ohjelmointityö tehotonta, ei myöskään paljoa saada aikaan)

Moduuli III: Uuden äärellä I 1. Lämmittelykierros Tietokoneen mysteeri 2. Bitit ja data 3. Kombinaatiologiikka 4. Sekventiaalilogiikka 5. Ohjelmoitava kone II Abstraktiot ja analyysi 6. 7. 8. 9. III Funktionaalinen ohjelmointityyli Suorituskykyanalyysi Rekursio Algoritmit ja informaation esitykset Uuden äärellä 10. Rinnakkaisuus ja samanaikaisuus 11. Virtualisointi ja skaalautuvuus 12. Ohjelmoitava vai oppiva kone? (Intel Xeon Phi Knights Landing -lastu, 72 suoritusydintä, 8 miljardia transistoria, 14 nanometrin litografia) (Google Hamina)

Kysyttävää, kommentteja, palautetta liittyen Moduuliin 2?