Algoritmien suunnittelu ja analyysi
|
|
- Paavo Saarnio
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Algoritmien suunnittelu ja analyysi luennot kevätlukukaudella 2004 Jyrki Kivinen Algoritmien suunnittelu ja analyysi, 5 ov tietojenkäsittelytieteen laudatur-kurssi pakollinen algoritmien erikoistumislinjalla varsinaiset esitiedot Tietorakenteet, Laskennan teoria käytännössä tarvitaan riittävä matemaattinen kypsyys ; joidenkin asioiden tunteminen todennäköisyyslaskennasta ja differentiaali- ja integraalilaskennasta on avuksi 1
2 Opetus kurssilla luennot ke 14 16, pe A414 (15 luentoviikkoa) harjoitukset alkavat 29.1., muuten ks. opetusohjelma (14 laskuharjoituskertaa) kurssikokeet 9.3. (viikot 1 7) ja (viikot 8 14) laskuharjoitustilaisuudet perinteisiä Työmääräarvio (hyvin summittainen) kontaktiopetus luennot + harjoitukset + tentit = = 96 tuntia harjoitustehtävien tekeminen ja muu itseopiskelu 6 tuntia/viikko 14 6 = 84 tuntia tentteihin kertaaminen = 20 tuntia kokonaistyömäärä 5 40 = 200 tuntia 2
3 Arvostelu maksimi 60 pistettä: kokeet p., harjoitukset 12 p. hyväksymisraja n. 30 p., arvosanan 3/3 raja n. 51 p. laskuharjoitustehtäviä 14 5 = merkittyä tehtävää antaa täydet 12 pistettä 0 merkittyä tehtävää antaa 0 pistettä tällä välillä interpoloidaan lineaarisesti (eli noin 0,22 pistettä per tehtävä, eli 1 piste per 4,5 tehtävää) 3
4 Oppimateriaali luentojen kalvokopiot ilmestyvät mappiin (A412) ja kotisivulle laskuharjoitukset ja malliratkaisut samoin tentit perustuvat luentomateriaaliin Lähinnä kurssia vastaava oppikirja T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein: Introduction to Algorithms, toinen painos, MIT Press Toinen hyvä mutta suppeampi kirja R. E. Tarjan: Data Structures and Network Algorithms, SIAM jonkin verran materiaalia otetaan muista kirjoista ja artikkeleista kalvot on tarkoitettu luentojen tueksi, ei itseopiskeluun uutisryhmä hy.opiskelu.tktl.asa 4
5 Tavoitteet Kurssin suoritettuaan opiskelija osaa itsenäisesti soveltaa yleisimpiä perustekniikoita algoritmien suunnittelemisessa ja analysoimisessa ymmärtää hieman vaikeampiakin menetelmiä jos kohtaa niitä kirjallisuudessa tuntee perusteellisesti tärkeimmät verkkoalgoritmit tuntee joidenkin erityisalueiden (approksimointialgoritmit, satunnaisalgoritmit, rinnakkaisalgoritmit) kysymyksenasettelut ja osaa soveltaa perustekniikoita Yleisemmällä tasolla kurssi kehittää aiemmilla kursseilla (Tietorakenteet, Laskennan teoria) opittua taitoa analysoida algoritmiongelmia matemaattisesti. 5
6 Sisältö 1. Johdanto: peruskäsitteet, yleiset kysymyksenasettelut, (matemaattisten) perustietojen kertaus 2. Algoritmien analyysitekniikoita: iteratiiviset algoritmit, rekursiiviset algoritmit, aika- ja tilavaativuus, keskimääräisen tapauksen analyysi, tasoitettu analyysi 3. Algoritmien suunnittelutekniikoita: osittaminen, taulukointi, ahneet algoritmit, peruutus, paikallinen etsintä 4. Laskennan mallit ja alarajatodistukset: Turingin kone, RAM, laskentapiirit; päätöspuut ja järjestämisongelma 5. Algoritmeja joukkojen käsittelemiseen: universaali ja täydellinen hajautus, erillisten joukkojen yhdisteet 6. Algoritmeja verkko-ongelmiin: etenkin syvyyssuuntainen etsintä, lyhimmät polut, verkkovuot 6
7 7. Approksimointialgoritmit erit. NP-täydellisille ongelmille 8. Satunnaisalgoritmit: esimerkkejä, perustekniikoita 9. Rinnakkaisalgoritmit: PRAM-malli, perustekniikoita, rinnakkainen järjestäminen Erityisiä painopistealueita: rekursiivisten algoritmien analysointi rekursioyhtälöillä taulukointi algoritmien suunnittelutekniikkana verkkoalgoritmit 7
8 1. Johdanto Kerrataan peruskäsitteitä ja (matemaattisia) pohjatietoja. Tämän luvun jälkeen opiskelija tietää millä mittareilla algoritmin tehokkuutta arvioidaan (tällä kurssilla) osaa käsitellä sujuvasti funktioiden kertaluokkia ( iso O -notaatio ) ymmärtää polynomisen ja eksponentiaalisen vaativuusluokan eron 8
9 1.1 Johdattelevia esimerkkejä Algoritmi voidaan formalisoida Turingin koneiden tms. avulla. Usein (ja tällä kurssilla) pseudokoodi on käytännöllisempi. Esimerkki lisäysjärjestäminen insert-sort(a[1... n]): for j := 2 to n do x := A[j] i := j 1 while i > 0 and A[i] > x do A[i + 1] := A[i] i := i 1 end while A[i + 1] := x end for Ylläoleva esimerkki on esitetty yksityiskohtaisemmin kuin mitä jatkossa yleensä tehdään. Tämän kurssin tarpeisiin voidaan yleensä sanoa Järjestä taulukko A kasvavaan järjestykseen. (mikä tosin yleensä tarkoittaa jotain tehokkaampaa algoritmia). 9
10 Algoritmilla ratkaistaan laskennallinen ongelma: Annettu: syöte (eli ongelman tapaus) Halutaan: jokin tietty tuloste Yleensä syöte ja tuloste ajatellaan koodatuiksi jonkin äärellisen aakkoston merkkijonoiksi. Koodaukset ovat yleensä aika selviä eikä niihin tarvitse kiinnittää erityistä huomiota. Esimerkki Syötteenä suunnattu verkko V = { a, b, c } E = { (a, b), (a, c), (c, a) } 10
11 Vierusmatriisiesitys A a = v 1, b = v 2, c = v 3 A(i, j) = 1 joss (v i, v j ) E Vierusmatriisi aakkoston { 0, 1, # } merkkijonona esim. #011#000#100#. Vieruslistaesitys ((2, 3), (), (1)) Alilista i sisätää ne j joilla (v i, v j ) E Vieruslista aakkoston { 0,..., 9, # } merkkijonona esim. ##2#3####1## (luvun k koodaus akkostossa { 0,..., 9 } vie log 10 k + 1 merkkiä.) 11
12 Jatkon kannalta tärkeä parametri syötteen koko periaatteessa (ja teoreettisissa tarkasteluissa) koodaavan merkkijonon pituus käytännössä jonkin luonnollinen suure (esim. solmujen lukumäärä V ) joka on polynomisessa suhteessa koodaavan merkkijonon pituuteen Funktiot f ja g ovat polunomisessa suhteessa jos f(s) = O(g(s) k ) ja g(s) = O(f(s)) k ) jollain k N. Huomaa että jos syötteenä on suuria luonnollisia lukuja, luvun n kooksi pitää ajatella O(log n). 12
13 Esimerkkejä laskennallisista ongelmista P1 Kertolasku Annettu kokonaisluvut n ja m Tulostettava nm syötteen koko O(log n + log m ) P2 Alkuluvut { 2, 3, 5, 7, 11, 13,... } Annettu positiivinen kokonaisluku n Tulostettava kyllä jos n alkuluku, ei muuten syötteen koko O(log n) P3 Järjestäminen Annettu kokonaislukujono S = (s 1,..., s n ) Tulostettava luvut suuruusjärjestyksessä syötteen koko n (?) 13
14 P4 Hamiltonin kehä Annettu suuntaamaton verkko G Tulostettava kyllä jos verkossa on polku joka käy tasan kerran jokaisessa solmussa ja palaa alkusolmuunsa; ei muuten Verkko Eräs Hamiltonin kehä 14
15 P5 Joukkopeite Annettu kokoelma jonkin perusjoukon osajoukkoja Tulostettava pienin määrä osajoukkoja, joka riittää peittämään koko perusjoukon Perusjoukko ja kokoelma sen osajoukkoja Joukkopeite jossa k = 3 osajoukkoa 15
16 P6 Pysähtymisongelma Annettu ohjelma P, syöte x Tulostettava kyllä jos ohjelma P pysähtyy syötteellä x; ei muuten (s.o. jos ohjelma jää ikuiseen silmukkaan) P7 Totaalisuusongelma Annettu ohjelma P Tulostettava kyllä jos ohjelma P pysähtyy kaikilla mahdollisilla syötteillä; ei muuten Kurssilla Laskennan teoria on tarkasteltu ongelmien ratkeavuutta: P6 ja P7 eivät ole ratkeavia, ts. niille ei ole olemassa ratkaisualgoritmia joka aina toimisi oikein P6 on osittain ratkeava, ts. sille on ratkaisualgoritmi joka voi ei-tapauksilla jäädä ikuiseen silmukkaan Tämän kurssin kannalta kiinnostavia ovat esim. ongelmat P1 P5, joilla helposti nähdään olevan jonkinlainen ratkaisualgoritmi mutta ongelmana on löytää tehokas ratkaisualgoritmi. 16
17 Huomioita ja kysymyksiä P2, P4, P6 ja P7 päätösongelmia (kyllä/ei) P5 optimointiongelma (löydettävä pienin/suurin/... ) P1 osataan ratkaista ajassa O((log n)(log m)) ja P3 ajassa O(n log n). Onko parempaan mahdollisuuksia? P2:lle löydettiin äskettäin polynomisessa ajassa toimiva algoritmi; aiemmin tunnettiin polynomisessa ajassa toimiva satunnaisalgoritmi. Vastaava etsintäongelma eli tekijöihinjako vaikuttaa nykytietämyksen valossa vaikeammalta. P4 on NP-täydellinen ongelma, joten polynomisessa ajassa toimivan algoritmin olemassaolo on merkittävä avoin ongelma Myös P5 ratkeaa polynomisessa ajassa jos ja vain jos P = NP. On kuitenkin tehokkaita tapoja löytää likimääräisesti pienin joukkopeite. 17
18 1.2 Algoritmitutkimuksen peruskysymyksiä Mikä on algoritmi? Miten kehitetään hyviä algoritmeja? Miten algoritmin hyvyyttä mitataan? Viimeiset kaksi kysymystä liittyvät läheisesti toisiinsa: algoritmeja kehitetään tavoitteena optimoida jokin hyvyysmitta (tai useampia mittoja samanaikaisesti). 18
19 Algoritmikäsitteen formalisointeja Turingin kone (Alan Turing, 1936) Ohjausyksikkö: kone tilassa q 1 Nauhapää osoittaa merkkiä B Työnauha sis. merkkijonon ABAAB 19
20 Koneen siirtymäfunktio määrää mikä merkki kirjoitetaan nauhapään kohdalle, mihin suuntaan nauhapää liikkuu ja mikä on seuraava tila kun on annettu nykyinen tila ja nauhapään alla oleva merkki. Motivaatio: yritetään tehdä abstrakti malli siitä, millaista laskentaa matemaatikko (tms.) voi tehdä mekaanisesti Turingin koneita on käsitelty kurssilla Laskennan teoria; niihin palataan lyhyesti myöhemmin. 20
21 Rekursiiviset funktiot luonnollisille luvuille (Kleene 1936) perusfunktiot ovat rekursiivisia: z: N N, z(x) = 0 (vakiofunktio nolla) s: N N, z(x) = x + 1 (seuraajafunktio) p i : N k N, z(x 1,..., x k ) = x i (projektiot) yhdistäminen: jos f ja g 1,..., g k ovat rekursiivisia niin h on rekursiivinen kun h(x 1,..., x m ) = f(g 1 (x 1,..., x m ),..., g k (x 1,..., x m )) rekursio: jos f ja g ovat rekursiivisia niin h on rekursiivinen kun h(0, x 1,..., x m ) = g(x 1,..., x m ) h(y + 1, x 1,..., x m ) = f(h(y, x 1,..., x m ), y, x 1,..., x m ) minimointi: jos f on rekursiivinen niin h on rekursiivinen kun h(x 1,..., x m ) = min { y f(y, x 1,..., x m ) = 0 } Motivaatio: määritellään sellaiset sulkeumaominaisuudet jotka laskettavien funktioiden joukon ainakin pitäisi toteuttaa. 21
22 RAM (Random Access Machine abstraktio tavalliselle tietokoneelle jossa prosessori ja muistia algoritmit esitetään konekieliohjelmina Muita formalismeja λ-kalkyyli (Church 1936) Postin systeemit (Post 1936) rajoittamattomat kieliopit (Chomsky 1955) Laskettavuuden peruslause: kaikki em. mallit ovat yhtä voimakkaita, ts. funktio on rekursiivinen jos ja vain jos se voidaan laskea Turingin koneella jne. Churchin-Turingin teesi väittää, että Turing-laskettavat funktiot ovat tasan se luokka funktioita, jotka voidaan laskea mekaanisesti annettuja sääntöjä noudattamalla. 22
23 Algoritmin suunnittelemisesta luovaa toimintaa, vähän yleisiä sääntöjä perustavanlaatuiset suunnittelutekniikat: osittaminen, taulukointi, ahneus, peruutus, karsiva etsintä; satunnaisalgoritmit palautukset tunnettuihin ongelmiin tehokkaiden perustietorakenteiden käyttö (hakupuut, tasapainoiset puut, keko,... ) 23
24 Algoritmin analysoimisesta peruslähtökohta oikeellisuus: kaikilla syötteillä oikea tuloste. oikeellisuusvaatimuksen lievennyksiä: satunnaisalgoritmit: sallitaan väärä vastaus pienellä todennäköisyydellä approksimointialgoritmit: sallitaan hieman suboptimaalinen ratkaisu optimointiongelmaan tyypillisin ongelma: algoritmin pahimman tapauksen aikavaatimuksen määrääminen (kertaluokan tarkkuudella; O-notaatio) aikavaatimuksen sijasta/lisäksi voidaan analysoida tilavaatimusta, prosessorien määrää, mikropiirin pinta-alaa,... pahimman tapauksen sijaan voidaan tarkastella keskimääräistä tapausta tai tehdä tasoitettu analyysi 24
25 Ongelman vaativuusanalyysi: onko annettu algoritmi jossain mielessä paras mahdollinen? siis halutaan alaraja ongelman vaativuudelle yleensä hyvin vaikea osoittaa usein vedotaan lisäoletuksiin ( jos P NP niin... ) tai rajoitetaan laskennan mallia (esim. vertailuihin perustuva järjestäminen) Esimerkki: järjestämisongelma lisäysjärjestäminen: aika O(n 2 ) ei optimaalinen, sillä esim. lomitusjärjestäminen (merge sort): aika O(n log n) mikä tahansa vertailuihin perustuva järjestämisalgoritmi joutuu tekemään O(n log n) vertailua, joten lomituslajittelu on jossain mielessä optimaalinen lisäysjärjestäminen helppo koodata, vakiotyötila pikajärjestäminen (quicksort) menee keskimäärin ajassa O(n log n); onko tällainen keskimääräinen tapaus käytännössä oikea? 25
26 1.3 Algoritmin tehokkuusmitat Olkoon T (x) algoritmin käyttämä aika syötteellä x ja x syötteen x koko (merkkijonon pituus, verkon solmujen lukumäärä tms.) Pahimman tapauksen aikavaativuus määritellään T max (n) = max { T (x) x = n } Keskimääräinen aikavaativuus: Olkoon P n todennäköisyysmitta kokoa n oleville syötteille: P n (x) 0 jos x = n, P n (x) = 0 jos x = n, x P n(x) = 1. Nyt T ave (n) = P n (x)t (x) x =n kuvaa toivottavasti tyypillistä käyttäytymistä paremmin kuin pessimistinen T max. Ongelmia: jakauman P n valinta: tasainen ei usein vastaa todellisuutta laskeminen vaikeaa usein hajonta ja hännät tärkeitä 26
27 Esimerkki kaksi algoritmia A ja B, joiden aikavaativuudet T A ja T B Kymmenen erilaista syötetapausta x 1,..., x 10 ; tasainen jakauma P n (x 1 ) = P n (x 2 ) =... = P n (x 10 ) = 1/10 Oletetaan T A (x 1 ) = T A (x 2 ) =... = T A (x 5 ) = 1, 0 s T A (x 6 ) = T A (x 7 ) =... = T A (x 10 ) = 2, 0 s joten Tave A (n) = 1, 5 s. Vastaavasti olkoon T B (x 1 ) = T B (x 2 ) =... = T B (x 9 ) = 0, 5 s joten T B ave = 1, 45 s. T B (x 10 ) = 10, 0 s Siis keskimäärin B on nopeampi, mutta hajonta on hyvin suuri. 27
28 Algoritmin A suoritusajan jakauma Algoritmin B suoritusajan jakauma 28
29 Keskimääräisen tapauksen sijaan voidaan analysoida suureita T p, 0 p 1: T p (n) = min { t P n (T (x) > t) p } missä kaikilla t R P n (T (x) > t) = T (x)>t P n (x) on todennäköisyys että suoritusaika on yli t Esimerkkitapauksessa T A p T B p (n) = 2, 0 s kun p < 0, 5 (n) = 0, 5 s kun 0, 1 p 1 T B p (n) = 10, 0 s kun p < 0, 1 29
30 Tasoitettu aikavaativuus (amortized): pahimman tapauksen analyysia, mutta kokonaisessa jonossa operaatioita kustannukset tasataan koko jonon kesken. Olkoon T (x 1,..., x n ) operaatiojonon (x 1,..., x n ) aikavaativuus. Määritellään T amort (n) = 1 n max { T (x 1,..., x n ) } Esimerkki: x i on lisäys, haku tai poisto tietokannasta. Kukin operaatio muuten ajassa O(log n), mutta jonon keskivaiheilla joudutaan uudelleenorganisoimaan jokin hakemisto mihin kuluu aika O(n). Nyt vaikka T amort (n) = O(log n) max T (x i ) = O(n). (Onko T amort tällaisessa tilanteessa oikea mitta?) 30
31 Mitä oikeastaan mitataan? sovelluksen kannalta kiinnostava suure on tietysti suoritukseen kuluva fysikaalinen aika todellinen aika kuitenkin riippuu laitteistosta jne. teoreettisissa tarkasteluissa arvioidaan alkeisoperaatioiden määrää (Turingin koneen siirtymät; RAM-koneen konekäskyt; järjestämisalgoritmin vertailut;... ) oletetaan, että kukin alkeisoperaatio voidaan toteuttaa vakioajassa fysikaalinen aika = O(alkeisoperaatioiden määrä) 31
Esimerkkejä polynomisista ja ei-polynomisista ongelmista
Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia
Muita vaativuusluokkia
Muita vaativuusluokkia Käydään lyhyesti läpi tärkeimpiä vaativuusluokkiin liittyviä tuloksia. Monet tunnetuista tuloksista ovat vaikeita todistaa, ja monet kysymykset ovat vielä auki. Lause (Ladner 1975):
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
Algoritmit 1. Luento 2 Ke Timo Männikkö
Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät
Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö
Algoritmit 1 Luento 14 Ke 25.2.2015 Timo Männikkö Luento 14 Heuristiset menetelmät Heuristiikkoja kapsäkkiongelmalle Kauppamatkustajan ongelma Lähimmän naapurin menetelmä Kertaus ja tenttivinkit Algoritmit
1. Universaaleja laskennan malleja
1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä
Laskennan teoria
581336-0 Laskennan teoria luennot syyslukukaudella 2003 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa esitiedot käytännössä
Algoritmit 2. Luento 14 Ke Timo Männikkö
Algoritmit 2 Luento 14 Ke 3.5.2017 Timo Männikkö Luento 14 Ositus ja rekursio Rekursion toteutus Kertaus ja tenttivinkit Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 2/30 Ositus Tehtävän esiintymä ositetaan
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
3. Laskennan vaativuusteoriaa
3. Laskennan vaativuusteoriaa tähän asti puhuttu siitä, mitä on mahdollista laskea äärellisessä ajassa siirrytään tarkastelemaan laskemista kohtuullisessa ajassa vaihtoehtoisesti voidaan laskenta-ajan
Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).
Esimerkki Lomitusjärjestäminen merge-sort(a, p, q): var k % paikallinen muuttuja, vakiotila 1. if p < q then 2. r := (p + q)/2 3. merge-sort(a, p, r) 4. merge-sort(a, r + 1, q) 5. merge(a, p, r, q) Olkoon
Tietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
Laskennan teoria
581336-0 Laskennan teoria luennot syyslukukaudella 2004 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa, opettajan suuntautumisvaihtoehdossa
Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit
Chomskyn hierarkia Noam Chomskyn vuonna 1956 esittämä luokittelu kieliopeille niiden ilmaisuvoiman mukaan tyyppi kieli kielioppi tunnistaminen 0 rekurs. lueteltava rajoittamaton Turingin kone 1 kontekstinen
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille
4 Tehokkuus ja algoritmien suunnittelu
TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 8.5.2018 Timo Männikkö Luento 13 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys Kertaus ja tenttivinkit Algoritmit 2 Kevät
1.4 Funktioiden kertaluokat
1.4 Funktioiden kertaluokat f on kertaluokkaa O(g), merk. f = O(g), jos joillain c > 0, m N pätee f(n) cg(n) aina kun n m f on samaa kertaluokkaa kuin g, merk. f = Θ(g), jos joillain a, b > 0, m N pätee
Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna
Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtinä tilanteet joista ei siirtymää,
Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja
582206 Laskennan mallit (syksy 2008) 2. kurssikoe 11.12., ratkaisuja Tehtävän 1 tarkasti Harri Forsgren, tehtävän 2 Joel Kaasinen ja tehtävän 3 Jyrki Kivinen. Palautetilaisuuden 19.12. jälkeen arvosteluun
6. Approksimointialgoritmit
6. Approksimointialgoritmit Tässä luvussa käsitellään lyhyesti approksimointiin liittyvät peruskäsitteet ja joitain keskeisiä approksimoituvuustuloksia. Tavoitteena on, että opiskelija näkee approksimointialgoritmien
Algoritmi on periaatteellisella tasolla seuraava:
Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S
3SAT-ongelman NP-täydellisyys [HMU ]
3SAT-ongelman NP-täydellisyys [HMU 10.3.4] erotukseksi yleisestä CNF-esityksestä, kaikilla kaavoilla ei ole 3-CNF-esitystä; esim. x 1 x 2 x 3 x 4 esitämme muunnoksen, jolla polynomisessa ajassa mielivaltaisesta
Laskennan vaativuus ja NP-täydelliset ongelmat
Laskennan vaativuus ja NP-täydelliset ongelmat TRAK-vierailuluento 13.4.2010 Petteri Kaski Tietojenkäsittelytieteen laitos Tietojenkäsittelytiede Tietojenkäsittelytiede tutkii 1. mitä tehtäviä voidaan
(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.
Loppu seuraa suoralla laskulla: n n Tave TR = p j (1 + b (i, j)) j=1 = 1 + 1 i
Algoritmit 2. Luento 14 To Timo Männikkö
Algoritmit 2 Luento 14 To 2.5.2019 Timo Männikkö Luento 14 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydelliset ongelmat Kertaus ja tenttivinkit Algoritmit
811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto
811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien
Turingin koneen laajennuksia
Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k
kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM
Kurssi tähän asti: säännölliset yhteydettömät ratkeavat { a n } { a n b n } { a n b n c n } tunnistettavat A TM HALT TM kaikki kielet A TM HALT TM TOTAL TM TOTAL TM EQ TM EQ TM 277 5. Laskennan vaativuus
Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja
581336 Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 1. S! axc X! axc X! by c Y! by c Y! " 2. (a) Tehtävänä on konstruoida rajoittamaton kielioppi, joka tuottaa kielen f0 n 1 n jn 1g. Vaihe1: alkutilanteen
582206 Laskennan mallit
582206 Laskennan mallit luennot syksylla 2006, periodit I{II Jyrki Kivinen tietojenkasittelytieteen aineopintokurssi, 6 op, paaaineopiskelijoille pakollinen esitietoina Tietorakenteet (ja sen esitiedot)
Algoritmit 2. Luento 8 To Timo Männikkö
Algoritmit 2 Luento 8 To 4.4.2019 Timo Männikkö Luento 8 Algoritmien analysointi Algoritmien suunnittelu Rekursio Osittaminen Rekursioyhtälöt Rekursioyhtälön ratkaiseminen Master-lause Algoritmit 2 Kevät
A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
Algoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
Esimerkkejä vaativuusluokista
Esimerkkejä vaativuusluokista Seuraaville kalvoille on poimittu joitain esimerkkejä havainnollistamaan algoritmien aikavaativuusluokkia. Esimerkit on valittu melko mielivaltaisesti laitoksella tehtävään
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys
Algoritmit 1. Luento 12 Ti Timo Männikkö
Algoritmit 1 Luento 12 Ti 19.2.2019 Timo Männikkö Luento 12 Osittamisen tasapainoisuus Pikalajittelun vaativuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu Algoritmit
Muita universaaleja laskennan malleja
Muita universaaleja laskennan malleja Tällä kurssilla Turingin kone on valittu algoritmikäsitteen formalisoinniksi. Toisin sanoen tulkitsemme, että laskentaongelmalle on olemassa algoritmi, jos ja vain
Mukautuvat järjestämisalgoritmit
1 Mukautuvat järjestämisalgoritmit Riku Saikkonen TIK-päivä, 17. 1. 2013 2 Mukautuva järjestäminen minkä tahansa vertailuihin perustuvan järjestämisalgoritmin täytyy tehdä pahimmassa tapauksessa vähintään
Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen
Tietorakenteet ja algoritmit Kertaus Ari Korhonen 1.12.2015 Tietorakenteet ja algoritmit - syksy 2015 1 Presemosta: 12. Kertaus» Mitkä tekijät, miten ja miksi vaiku1avat algoritmien nopeuteen» Rekursiohistoriapuut
Lisää pysähtymisaiheisia ongelmia
Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti
3. Laskennan vaativuusteoriaa
3. Laskennan vaativuusteoriaa Siirrymme tarkastelemaan, mitä laskennallisia ongelmia voidaan ratkaista tehokkaalla algoritmilla [HMU luku 10]. Tämän luvun jälkeen opiskelija tuntee laskennallisen vaativuuden
Algoritmit 1. Luento 11 Ti Timo Männikkö
Algoritmit 1 Luento 11 Ti 14.2.2017 Timo Männikkö Luento 11 Algoritminen ongelmanratkaisu Osittaminen Lomituslajittelu Lomituslajittelun vaativuus Rekursioyhtälöt Pikalajittelu Algoritmit 1 Kevät 2017
Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja
58053-7 Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja Malliratkaisut ja pisteytysohje: Jyrki Kivinen Tentin arvostelu: Jouni Siren (tehtävät 1 ja 2) ja Jyrki Kivinen (tehtävät
V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen
V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen Luento omatoimisen luennan tueksi algoritmiikan tutkimusseminaarissa 23.9.2002. 1 Sisältö Esitellään ongelmat Steiner-puu Kauppamatkustajan
Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }
135 4.3 Algoritmeista Churchin ja Turingin formuloinnit laskennalle syntyivät Hilbertin vuonna 1900 esittämän kymmenennen ongelman seurauksena Oleellisesti Hilbert pyysi algoritmia polynomin kokonaislukujuuren
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016
ICS-C2000 Tietojenkäsittelyteoria Kevät 206 Kierros 0, 2. 24. maaliskuuta Huom! Perjantaina 25. maaliskuuta ei ole laskareita (pitkäperjantai), käykää vapaasti valitsemassanne ryhmässä aiemmin viikolla.
Algoritmin määritelmä [Sipser luku 3.3]
Algoritmin määritelmä [Sipser luku 3.3] Mitä algoritmilla yleensä tarkoitetaan periaatteessa: yksiselitteisesti kuvattu jono (tietojenkäsittely)operaatioita, jotka voidaan toteuttaa mekaanisesti käytännössä:
Algoritmit 1. Luento 12 Ke Timo Männikkö
Algoritmit 1 Luento 12 Ke 15.2.2017 Timo Männikkö Luento 12 Pikalajittelu Pikalajittelun vaativuus Osittamisen tasapainoisuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu
Rekursiiviset palautukset [HMU 9.3.1]
Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle
TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut
TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut Pisteytys on ilmoitettu välikoevaihtoehdon mukaan (joko tehtävät 1, 2 ja 3 välikokeen 1 uusintana tai tehtävät 4, 5 ja 6 välikokeen 2 uusintana).
Algoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
M = (Q, Σ, Γ, δ, q 0, q acc, q rej )
6. LASKETTAVUUSTEORIAA Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea.
1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:
Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return
Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö
Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin
f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))
Määritelmä: on O(g(n)), jos on olemassa vakioarvot n 0 > 0 ja c > 0 siten, että c g(n) kun n > n 0 O eli iso-o tai ordo ilmaisee asymptoottisen ylärajan resurssivaatimusten kasvun suuruusluokalle Samankaltaisia
58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia
58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli
58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)
58131 Tietorakenteet Erilliskoe 11.11.2008, ratkaisuja (Jyrki Kivinen) 1. (a) Koska halutaan DELETEMAX mahdollisimman nopeaksi, käytetään järjestettyä linkitettyä listaa, jossa suurin alkio on listan kärjessä.
58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)
58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 12.9.2018 ratkaisuja (Jyrki Kivinen) 1. [10 pistettä] Iso-O-merkintä. (a) Pitääkö paikkansa, että n 3 + 5 = O(n 3 )? Ratkaisu: Pitää paikkansa.
7.4 Sormenjälkitekniikka
7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan
Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina
Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella
811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta
811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden
Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.
Lause: Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia,
Säännöllisen kielen tunnistavat Turingin koneet
186 Säännöllisen kielen tunnistavat Turingin koneet Myös säännöllisen kielen hyväksyvien Turingin koneiden tunnistaminen voidaan osoittaa ratkeamattomaksi palauttamalla universaalikielen tunnistaminen
Tietorakenteet, laskuharjoitus 3, ratkaisuja
Tietorakenteet, laskuharjoitus 3, ratkaisuja 1. (a) Toistolauseen runko-osassa tehdään yksi laskuoperaatio, runko on siis vakioaikainen. Jos syöte on n, suoritetaan runko n kertaa, eli aikavaativuus kokonaisuudessaan
Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.
Väite: T (n) (a + b)n 2 + a. Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m. Huomaa että funktion x x 2 + (m 1 x) 2 kuvaaja on ylöspäin aukeava paraabeli, joten funktio saavuttaa suurimman
Algoritmit 1. Luento 8 Ke Timo Männikkö
Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin
5.3 Ratkeavia ongelmia
153 5.3 Ratkeavia ongelmia Deterministisen äärellisten automaattien (DFA) hyväksymisongelma: hyväksyykö annettu automaatti B merkkijonon w? Ongelmaa vastaava formaali kieli on A DFA = { B, w B on DFA,
Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?
Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? 2013-2014 Lasse Lensu 2 Algoritmit ovat deterministisiä toimintaohjeita
On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen.
6. Järjestäminen On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen. Tämä on eräs klassisimpia tietojenkäsittelyongelmia,
Algoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018
2. Laskettavuusteoriaa
2. Laskettavuusteoriaa Käymme läpi ratkeamattomuuteen liittyviä ja perustuloksia ja -tekniikoita [HMU luku 9]. Tämän luvun jälkeen opiskelija tuntee joukon keskeisiä ratkeamattomuustuloksia osaa esittää
4.3. Matemaattinen induktio
4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta
C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:
Lause 3SAT p m VC Todistus. Olk. φ = C 1 C C m 3-cnf-kaava, jossa esiintyvät muuttujat x 1,..., x n. Vastaava solmupeiteongelman tapaus G, k muodostetaan seuraavasti. G:ssä on solmu kutakin literaalia
811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu
811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019
10. Satunnaisalgoritmit
316 10. Satunnaisalgoritmit Probabilistic algorithms, randomized algorithms Toinen tapa liiallisen laskennallisen vaativuuden kanssa toimeen tulemiseksi ovat satunnaisalgoritmit Jotkin ongelmat, joissa
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti
(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3
T-79.48 Tietojenkäsittelyteorian perusteet Tentti 25..23 mallivastaukset. Tehtävä: Kuvaa seuraavat kielet sekä säännölisten lausekkeiden että determinististen äärellisten automaattien avulla: (a) L = {w
58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet
58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 15.6.2018 malliratkaisut ja arvosteluperusteet 1. [10 pistettä] Hakemistorakenteet. Vertaa linkitettyjen listojen, tasapainoisten hakupuiden ja
Algoritmit 2. Luento 1 Ti Timo Männikkö
Algoritmit 2 Luento 1 Ti 14.3.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin valinta Algoritmin analysointi Algoritmin suoritusaika Peruskertaluokkia Kertaluokkamerkinnät Kertaluokkien ominaisuuksia
Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden
Algoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017
Tutkimusmenetelmät-kurssi, s-2004
Algoritmitutkimuksen menetelmistä Tutkimusmenetelmät-kurssi, s-2004 Pekka Kilpeläinen Kuopion yliopisto Tietojenkäsittelytieteen laitos Algoritmitutkimuksen menetelmistä p.1/20 Sisällys Tänään Tietojenkäsittelytiede
A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007
Kurssiesittely Tietojenkäsittelytieteiden laitos Tampereen yliopisto A215 Tietorakenteet Periodit I-II, syksy 2007 Luennot/vastuuhenkilö: Heikki Hyyrö Sähköposti: heikki.hyyro@cs.uta.fi Kurssin kotisivu:
1. Universaaleja laskennan malleja
1. Universaaleja laskennan malleja Esimerkkinä universaalista laskennan mallista tarkastellaan Turingin konetta muunnelmineen. Lyhyesti esitellään myös muita malleja. Tämän luvun jälkeen opiskelija tuntee
Nopea kertolasku, Karatsuban algoritmi
Nopea kertolasku, Karatsuban algoritmi Mikko Männikkö 16.8.2004 Lähde: ((Gathen and Gerhard 1999) luku II.8) Esityksen kulku Algoritmien analysointia (1), (2), (3), (4) Klassinen kertolasku Parempi tapa
811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista
811312A Tietorakenteet ja algoritmit 2016-2017 III Lajittelualgoritmeista Sisältö 1. Johdanto 2. Pikalajittelu 3. Kekolajittelu 4. Lajittelualgoritmien suorituskyvyn rajoista 811312A TRA, Lajittelualgoritmeista
Algoritmit 1. Luento 13 Ma Timo Männikkö
Algoritmit 1 Luento 13 Ma 26.2.2018 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin
2. Laskettavuusteoriaa
2. Laskettavuusteoriaa Kaymme lapi ratkeamattomuuteen liittyvia ja perustuloksia ja -tekniikoita [HMU luku 9]. Taman luvun jalkeen opiskelija tuntee joukon keskeisia ratkeamattomuustuloksia osaa esittaa
811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta
811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta kurssin alkuosasta II Algoritmien analyysi: oikeellisuus Algoritmin täydellinen oikeellisuus = Algoritmi päättyy ja tuottaa määritellyn tuloksen
Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. kesäkuuta 2013 Sisällys Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton kontekstinen
Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.
261 Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen. Pitää osoittaa siis, että A mp SAT mielivaltaisella A NP Ainoa, mitä A:sta tiedetään on, että sillä on polynomisessa
3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.
3. Hakupuut Hakupuu on listaa tehokkaampi dynaamisen joukon toteutus. Erityisesti suurilla tietomäärillä hakupuu kannattaa tasapainottaa, jolloin päivitysoperaatioista tulee hankalampia toteuttaa mutta
ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2
Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,
58131 Tietorakenteet ja algoritmit (syksy 2015)
58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen
AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta
AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja
Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö
Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu
Algoritmit 2. Luento 7 Ti Timo Männikkö
Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26
Täydentäviä muistiinpanoja laskennan rajoista
Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen