811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja
|
|
- Marika Kivelä
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja
2 Sisältö 1. Hajota ja hallitse-menetelmä 2. Dynaaminen taulukointi 3. Ahneet algoritmit 4. Peruuttavat algoritmit A TRA, Suunnitteluparadigmat 2
3 VI.1. Hajota ja hallitse-menetelmä Divide-and-conquer approach Soveltuu, kun ongelma voidaan pilkkoa pienempiin samankaltaisiin ongelmiin Lopulta helposti ratkaistava ongelma Algoritmi koostuu yleensä kolmesta osasta: 1. Hajota algoritmi osaongelmiksi. (Divide) 2. Hallitse: Ratkaise osaongelma rekursiivisesti ja kun ongelma on riittävän pieni, ratkaise se suoraan. (Conquer) 3. Yhdistä osaongelmien ratkaisut alkuperäisen ongelman ratkaisuksi. (Combine) A TRA, Suunnitteluparadigmat 3
4 VI.1.1. Lomituslajittelu Syöte: Taulukko A[1,..,n], n >= 1, luvut 1 <= p <= q <= n Tulostus: Taulukon alkiot A[p..q] suuruusjärjestyksessä LOMITUSLAJITTELU(A,p,q) 1. if p < q then 2. r = ( p q) / 2 3. LOMITUSLAJITTELU(A,p,r) 4. LOMITUSLAJITTELU(A,r+1,q) 5. LOMITA(A,p,r,q) 6. return LOMITA yhdistää kaksi järjestettyä listaa yhdeksi järjestetyksi listaksi A TRA, Suunnitteluparadigmat 4
5 VI.1.1. Lomituslajittelu (2) 1. Hajottaminen: Jaa taulukko puoliksi 2. Hallitse: Lajittele pienemmät taulukot Kun taulukossa vain yksi alkio, ongelma on triviaali Voidaan myös käyttää jotain nopeaa lajittelualgoritmia riittävän pienille taulukoille 3. Yhdistä: Algoritmi LOMITA yhdistää kaksi järjestettyä taulukkoa yhdeksi järjestetyksi taulukoksi HUOM! Kaikissa algoritmeissa ei tarvita kaikkia kolmea vaihetta Esimerkki: Puolitushaku ei kolmatta vaihetta A TRA, Suunnitteluparadigmat 5
6 VI.1.2. Mediaanin etsiminen Ongelma: Annettu n erisuurta lukua. Etsittävä suuruusjärjestyksessä keskimmäinen (eli mediaani) Siis järjestyksessä (n + 1)/2 luku Voidaan ratkaista järjestämällä luvut Algoritmin kompleksisuus parhaimmillaan luokkaa Θ(n lg(n)) Onko olemassa parempaa algoritmia? Käytetään pikalajittelusta tuttua osittamista Sarana-alkio valitaan satunnaisesti A TRA, Suunnitteluparadigmat 6
7 VI Apualgoritmi OSITA Syöte: Taulukko A[1,..,n], n >= 1, 1 <= p <= r <= n. Tulostus: Palauttaa luvun k,jolle A[k] = x ja A[p,..,k-1] <= x ja A[k+1,..,r] >= x OSITA(A,p,r) 1. valitse x = A[m] satunnaisesti osasta A[p,..,r] 2. vaihda A[m] ja A[r] 3. i = p-1 4. for j = p to r-1 5. if A[j] == x ESIMERKKI:p=2,r=7,x=8, A: 6. vaihda A[j] ja A[r] 7. if A[j] <= x i = i vaihda A[i] ja A[j] 10. vaihda A[i+1] ja A[r] 11. return i+1 OSITA Palauttaa arvon A TRA, Suunnitteluparadigmat 7
8 VI Ratkaisualgoritmi ETSI Syöte: Taulukko A[1,..,n], n >= 1, luvut 1 <= p <= q <= n, ja k, jolle p <= k <= q Tulostus: Palauttaa taulukon osasta A[p,..,q] taulukon k:nneksi pienimmän alkion. ETSI(A,p,q,k) 1. x = OSITA(A,p,q) 2. if x == k 3. return A[x] // Alkio löytyi 4. else if x > k // Haetaan alemmalta puolelta 5. return ETSI(A,p,x-1,k) 6. else // Haetaan ylemmältä puolelta 7. return ETSI(A,x+1,q,k) A TRA, Suunnitteluparadigmat 8
9 VI Ratkaisualgoritmi ETSI: Analyysi Oikeellisuus: Jos oletetaan, että OSITA toimii, on selvää että algoritmi on oikea Tarkasteltu pikalajittelun yhteydessä Hakee mediaanin kutsuttaessa ETSI(A,1,n, (n + 1)/2 ) Kompleksisuus: OSITA toimii lineaarisessa ajassa, ts. askelten lukumäärä on korkeintaan c (q-p) jollakin vakiolla c, kun ositetaan taulukon väliä A[p..q] A TRA, Suunnitteluparadigmat 9
10 VI Ratkaisualgoritmi ETSI: Analyysi (2) Merkitään koko algoritmin askelten lukumäärä = T n Huonoin tapaus: Osituksessa x aina pienin tai suurin alkio T n = θ(n + n 1 + 1) = θ(n 2 ) Paras tapaus: Osituksessa x jakaa taulukon osan puoliksi T n = θ(n + n 2 + n 4 1) = θ(n) Voidaan näyttää, että keskimäärin T n = θ(n) A TRA, Suunnitteluparadigmat 10
11 VI.2 Dynaaminen taulukointi Hajota ja hallitse tehokas, kun osaongelmat erilliset Muuten tulee turhaa työtä Dynaaminen taulukointi toimii joskus, kun osaongelmat päällekkäiset Idea: Rakennetaan ratkaisu bottom-up-periaatteella Soveltuu erityisesti optimointiongelmiin A TRA, Suunnitteluparadigmat 11
12 VI.2 Dynaaminen taulukointi (2) Algoritmin löytämisen kaava : 1. Hahmotetaan optimaalisen ratkaisun rakenne 2. Määritetään rekursio, jolla optimiratkaisu löydetään 3. Lasketaan optimiarvo ratkaisulle lähtien alhaalta 4. Konstruoidaan optimiratkaisu edellä saadun tiedon perusteella A TRA, Suunnitteluparadigmat 12
13 VI.2.1 Kokoonpanolinjaongelma Piste P 1,1 Piste P 1,2 Piste P 1,n-1 Piste P 1,n Kokoonpanolinja 1 a 1,1 a 1,2 a 1,n-1 a 1,n Kori saapuu e 1 t 1,1 e 2 t 2,1 t 1,2 t 2,2 t 1,n-1 x 1 t 2,n-1 x 2 Valmis auto Kokoonpanolinja 2 a 2,1 a 2,2 a 2,n-1 a 2,n Työn aika Piste P 2,1 Piste P 2,2 Piste P 2,n-1 Piste P 2,n Ongelma: Etsi nopein reitti linjaston läpi Siirtymäaika A TRA, Suunnitteluparadigmat 13
14 VI.2.1 Kokoonpanolinjaongelma (2) Jos kokeillaan kaikki vaihtoehdot, mahdollisuuksia 2 n Joka pisteellä 2 vaihtoehtoa Käyttökelvoton isoilla syötteillä Vaihe 1: Optimaalisen ratkaisun rakenne Nopein reitti linjaston alusta pisteelle P i,j : Jos ensimmäinen työpiste (j=1), vaihtoehtoja ei ole Muuten toinen seuraavista: 1. nopein reitti linjaston alusta saman linjan edelliselle pisteelle ja sitten P i,j tai 2. nopein reitti linjaston alusta toisen linjan edelliselle pisteelle ja linjan vaihdolla P i,j :lle A TRA, Suunnitteluparadigmat 14
15 VI.2.1 Kokoonpanolinjaongelma (3) Vaihe 2: Etsitään rekursiivinen ratkaisu Osaongelmat: Nopeimman reitin määrittäminen kuhunkin työpisteeseen asti Taulukko f1: ajat linjan 1 työpisteille f1[j] on nopein aika alusta pisteeseen P 1,j Taulukko 2: ajat linjan 2 työpisteille f2[j] on nopein aika alusta pisteeseen P 2,j f1[j] = min(f1[j-1] + a 1,j, f2[j-1] + t 2,j-1 + a 1,j ) f2[j] = min(f2[j-1] + a 2,j, f1[j-1] + t 1,j-1 + a 2,j ) nopein aika = min(f1[n]+ x 1,f2[n]+x 2 ) A TRA, Suunnitteluparadigmat 15
16 VI.2.1 Kokoonpanolinjaongelma (4) Vaihe 3: Lasketaan optimiratkaisu Rekursio ei kannata (kompleksisuus 2 n ) Lasketaan alusta: f1[1] = e 1 + a 1,1 ja f2[1] = e 2 + a 2,1 Näiden avulla f1[2] = min(f1[1] + a 1,2, f2[1] + t 2,1 + a 1,2 ) f2[2] = min(f2[j-1] + a 2,2, f1[j-1] + t 1,1 + a 2,2 ) jne. Saadaan lineaariaikainen (Θ(n)) algoritmi A TRA, Suunnitteluparadigmat 16
17 VI.2.1 Kokoonpanolinjaongelma: Nopein reitti Syöte: Taulukot a1[1,..,n], a2[1,..,n], t1[1,..,n], t2[1,..,n], n >= 1, luvut e1, e2, x1,x2. Taulukoissa a1 ja ovat linjojen 1 ja 2 työpisteiden ajat. Taulukoissa t1 ja t2 ovat linjoilta 1 ja 2 kultakin työpisteeltä linjan vaihtoon kuluva aika. Luvut e1 ja e2 ovat linjojen aloitusajat ja x1 ja x2 lopetusajat. Tulostus: Taulukkoihin f1 ja f2 lasketaan linjojen 1 ja 2 työpisteille nopein mahdollinen alusta kuluva aika. Taulukkoihin l1 ja l2 lasketaan linja, jota pitkin nopeimmassa reittivalinnassa tullaan työpisteelle. Esimerkiksi l1[3] on 1, jos pisteelle P1,3 tullaan nopeimmassa reitissä pisteeltä P1,2 ja 2, jos pisteeltä P2,2. Luku fs on koko linjaston nopein aika ja ls linja, jolta nopeimmassa reitissä tullaan ulos A TRA, Suunnitteluparadigmat 17
18 VI.2.1 Kokoonpanolinjaongelma: Nopein reitti (2) NOPEINREITTI(a1,a2,t1, t2,e1,e2,x1,x2) 1.f1[1] = e1 + a1[1] 2.f2[1] = e2 + a2[1] 3.for j = 2 to n 4. if (f1[j-1]+a1[j]) <= (f2[j-1]+t2[j-1]+a1[j]) 5. f1[j] = f1[j-1]+a1[j] 6. l1[j] = 1 7. else 8. f1[j] = f2[j-1] +t2[j-1]+a1[j] 9. l1[j] = if (f2[j-1] + a2[j]) <= (f1[j-1]+t1[j-1]+a2[j]) 11. f2[j] = f2[j-1] + a2[j] 12. l2[j]=2 13. else 14. f2[j] = f1[j-1] +t1[j-1]+a2[j] 15. l2[j]=1 // for-silmukka loppuu 16.if (f1[n]+x1) <= (f2[n]+x2) 17. fs = f1[n]+x1 18. ls = 1 19.else 20. fs = f2[n]+x2 21. ls = 2 22.return A TRA, Suunnitteluparadigmat 18
19 VI.2.1 Kokoonpanolinjaongelma: Nopein reitti (3) Syöte: Taulukot l1[1,..,n], l2[1,..,n], luku ls Tulostus: Nopein reitti linjastolla lopusta alkuun. TULOSTAREITTI(l1,l2,ls) 1. edellinen = ls 2. for j = n downto 1 do 3. if edellinen == 1 then 4. print linja 1 piste j 5. edellinen = l1[j] 6. else 7. print linja 2 piste j 8. edellinen = l2[j] 9. return A TRA, Suunnitteluparadigmat 19
20 VI.2.1 Kokoonpanolinjaongelma: Esimerkki Piste P 1,1 Piste P 1,2 Piste P 1,3 Piste P 1,4 Piste P 1,5 Kokoonpanolinja Kori saapuu Valmis auto Kokoonpanolinja Piste P 2,1 Piste P 2,2 Piste P 2,3 Piste P 2,4 Piste P 2,5 Nopein reitti alusta linjanumero: 1,2,1,2,2 Reittiin kuluva aika 32
21 VI.3 Ahneet algoritmit Strategia yksinkertainen: tehdään aina parhaalta näyttävä ratkaisu Soveltuvat parhaiten optimointiongelmiin Yleensä helppo suunnitella Oikeaksi todistaminen monesti hankalaa Monesti ahne algoritmi hyvä likimääräinen ratkaisu vaikka ei antaisi täysin oikeaa ratkaisua A TRA, Suunnitteluparadigmat 21
22 VI.3 Ahneet algoritmit (2) Esimerkki: Muodosta annettu rahamäärä 50, 20, 10 ja 5 sentin kolikoista mahdollisimman pienellä määrällä kolikoita Ahne strategia: otetaan mahdollisimman monta 50 sentin, sitten 20 sentin, 10 sentin ja 5 sentin kolikoita -> saadaan optimiratkaisu Riippuu kolikkojen arvoista: jos kolikot olisivat 40, 30, 10 ja 5 senttiä, ahne strategia ei toimi: 60 senttiä ahneesti ja optimi A TRA, Suunnitteluparadigmat 22
23 VI.3 Ahneet algoritmit (3) Ahneen algoritmin luominen yleensä: 1. Esitetään (optimointi)ongelma niin, että kun valinta tehty, jää jäljelle vain yksi osaongelma 2. Osoitetaan, että ahne valinta sisältyy aina johonkin alkuperäisongelman optimiratkaisuun Varmistaa, että ahne valinta on turvallinen 3. Varmistetaan, että yhdistettäessä ahne valinta osaongelman optimiratkaisuun saadaan alkuperäisongelman optimiratkaisu A TRA, Suunnitteluparadigmat 23
24 VI.3.1 Toiminnonvalitsemisongelma Toimintojen a 1,a 2,,a 11 alkamis- ja loppumisajat i s i f i Löydettävä mahdollisimman monen toiminnon joukko S, jossa mitkään toiminnot eivät mene päällekkäin Yksi ratkaisu S = {a 2,a 4, a 9,a 11 } A TRA, Suunnitteluparadigmat 24
25 VI.3.1 Toiminnonvalitsemisongelma: Ahne ratkaisu Olkoon S jokin optimiratkaisu ja olkoon a k sen ajallisesti ensimmäinen toiminto. Olkoon a j koko toimintojoukon ensimmäiseksi päättyvä toiminto. Havainto: a k ei voi päättyä ennen a j :tä. Siis joukossa S toiminto a k voidaan korvata a j :llä ja ratkaisu on edelleen optimaalinen Seuraus: Aina on olemassa vähintään yksi ratkaisu, jossa toiminnoista ensimmäiseksi päättyvä on mukana Saadaan ahne strategia: valitaan aina ensimmäiseksi päättyvä toiminto, joka on mahdollinen A TRA, Suunnitteluparadigmat 25
26 VI.3.1 Toiminnonvalitsemisongelma: Ahne ratkaisu (2) Algoritmi: 1. Lajittele toiminnot päättymisajan mukaan nousevaan järjestykseen 2. Valitse ensin päättyvä toiminto 3. Poista valitun toiminnon kanssa päällekkäiset 4. Jos toimintoja jäljellä, mene askeleeseen A TRA, Suunnitteluparadigmat 26
27 VI.3.1 Toiminnonvalitsemisongelma: Ahne ratkaisu (3) Olkoon toimintoja n kappaletta. Mikä on algoritmin kompleksisuus Askel 1, lajittelu voidaan suorittaa algoritmilla, jonka kompleksisuus on luokkaa Θ(n lg(n)) Askeleissa 2,3 ja 4 käydään jokainen toiminto kerran läpi, kompleksisuus yhteensä luokkaa Θ(n) Siis koko algoritmin kompleksisuus on luokkaa Θ(n lg(n)) A TRA, Suunnitteluparadigmat 27
28 VI.3.2 Huffmanin koodit Voidaan käyttää merkkijonojen pakkaamiseen Ns. etuliitekoodeja Koodin tulkinta helppoa Esimerkki: Tiedostossa kirjaimia a,b,c,d,e,f: a b c d e f Jos käytetään 3 bit/merkki -> bittiä A TRA, Suunnitteluparadigmat 28
29 VI.3.2 Huffmanin koodit (2) Etuliitekoodi: Koodi, jossa minkään merkin koodi ei ole alkuosana toisen merkin koodissa Esimerkki: a b c d e f Etuliitekoodi: bittiä esimerkkijakaumalla Voidaanko vielä parantaa? A TRA, Suunnitteluparadigmat 29
30 VI.3.2 Huffmanin koodit (3) Binäärinen koodi voidaan esittää puuna, esimerkiksi edellinen koodi Siis koodin muodostaminen palautuu puun muodostamiseen HUOM! Etuliitekoodissa merkit aina puun lehdissä a c e 0 1 f d 0 1 b A TRA, Suunnitteluparadigmat 30
31 VI.3.2 Huffmanin koodit: Algoritmi Syöte: Taulukko C[1,..,n], jossa merkit ja taulukko f[1,..,n], jossa merkkien suhteelliset osuudet Tulostus: Muodostaa puun, joka esittäää optimaalista etuliitekoodia. HUFFMAN(C,f) 1.Tee merkeistä n kappaletta pelkästä juuresta koostuvia binääripuita. Solmun datana merkki ja suhteellinen osuus, joka on avain. 2. Järjestä puut avainkentän mukaan (nouseva järj.) 3.for j = 1 to n-1 do 4. Yhdistä kaksi juuriarvoltaan pienintä puuta lisäämällä ne vasemmaksi ja oikeaksi haaraksi puuhun, jonka juuren avainkenttä on lisättävien puiden juuriarvojen summa. 5. Siirrä muodostettu puu järjestyksessä oikeaan kohtaan 6.end for 7. return A TRA, Suunnitteluparadigmat 31
32 VI.3.2 Huffmanin koodin muodostaminen: Esimerkkitapaus VAIHE I d:5 f:8 b:10 e:12 c:25 a:40 VAIHE II b:10 e:12 13 c:25 a: d:5 f:8 VAIHE VI c:25 a: d:5 f:8 b:10 e:12
33 VAIHE IV c:25 35 a: d:5 f: b:10 e:12 VAIHE V a: c: d:5 f: b:10 e:12
34 VAIHE VI: Valmis koodi a 0 b 1110 a: c: c 10 d 1100 e d:5 f: b:10 e:12 f 1101 Koodaa esimerkkitiedoston bitillä
35 VI.3.2 Huffmanin koodit: Analyysi Rivi 1: Θ(n) Rivi 2: Θ(nlg(n)) Rivejä 4 ja 5 suoritetaan n-1 kertaa Rivi 4 vakioaikainen Rivi 5 Θ(lg(n)) Yhteensä Θ(nlg(n)) Koko algoritmin kompleksisuus Θ(nlg(n)) Oikeellisuus: Perustelu luentomateriaalissa A TRA, Suunnitteluparadigmat 35
36 VI.3.2 Huffmanin koodit: Analyysi (2) Oikeellisuus seuraa havainnosta: Olkoon C merkkien joukko ja f[c] kunkin merkin c suhteellinen osuus. Olkoot x ja y harvimmin esiintyvät merkit (f[x] ja f[y] pienimmät). Olkoon C joukko, joka saadaan poistamalla joukosta C merkit x ja y sekä lisäämällä uusi merkki z, jolle f[z] = f[x]+f[y]. Olkoon T puu, joka esittää optimaalista etuliitekoodia joukolle C. Muodostetaan puu T seuraavasti: Korvataan puussa T merkin z lehti sisäisellä solmulla, jonka lapsina ovat x ja y. Tällöin T on optimaalinen etuliitekoodi joukolle C. Ks. perustelu luentomateriaalista A TRA, Suunnitteluparadigmat 36
37 VI.4 Peruuttavat algoritmit Peruutus (backtracking) systemaattinen menetelmä ongelman ratkaisuavaruuden läpikäymiseen Takaa parhaan ratkaisun löytämisen Voi olla parempi kuin raa an voiman menetelmä Joudutaan suunnittelemaan yksityiskohdat jokaiselle sovelluskohteelle Soveltuu erityisesti kombinatorisiin haku- ja optimointiongelmiin Merkintä: Ongelmaan haetaan ratkaisua (r 1,r 2,...,r n ), missä r i valitaan järjestetystä äärellisestä joukosta S i A TRA, Suunnitteluparadigmat 37
38 IV.1 Peruuttavan algoritmin periaate Algoritmissa käsitellään tietyllä hetkellä osittaista ratkaisua r = (r 1,...,r k ) Seuraavassa vaiheessa tarkistetaan voidaanko ratkaisua laajentaa 1. Voidaan: Laajennetaan ja tarkistetaan onko jo ratkaisu, jatketaan algoritmia 2. Ei voida: poistetaan viimeinen alkio osittaisratkaisusta ja siirrytään seuraavaan osittaisratkaisuun Lopulta päädytään ratkaisuun tai havaitaan että ratkaisua ei ole A TRA, Suunnitteluparadigmat 38
39 IV.2 Geneerinen peruuttava algoritmi Syöte: Osittainen ratkaisu r ja indeksi k Output: Kun ratkaisu löydetään se käsitellään Peruuta(r,k) 1. if r ratkaisu 2. Käsittele r 3. else 4. k = k Muodosta joukko S k 6. while S k!= ø 7. r k = alkio joukosta S k 8. Poista r k joukosta S k 9. Peruuta(r,k) A TRA, Suunnitteluparadigmat 39
40 IV.3 Esimerkki: Kahdeksan kuningattaren ongelma Kuinka monella tavalla 8 kuningatarta voidaan asettaa shakkilaudalle niin, että ne eivät uhkaa toisiaan Yksi ratkaisu Q Q Q Q Q Q Q Q A TRA, Suunnitteluparadigmat 40
41 IV.3.1 Kahdeksan kuningattaren ongelma: ratkaisu Huomataan, että ratkaisussa oltava yksi kuningatar jokaisessa sarakkeessa -> Ratkaisu on vektori r=(r 1,,r 8 ) missä r i on kuningattaren paikka i:nnessä sarakkeessa Esimerkissä r=( ) Algoritmissa muodostetaan ratkaisut järjestyksessä 8- paikkaiseen taulukkoon ja lasketaan niiden lukumäärä A TRA, Suunnitteluparadigmat 41
42 IV.3.1 Kahdeksan kuningattaren ongelma: algoritmi Syöte: Taulukko t[1..8], jossa paikat ja sarake col Output: Kun ratkaisu löydetään lisätään lukumäärää Queens(t,col) 1. if col == 8 2. ratkaisuja = ratkaisuja+1 3. else 4. col = col for i = 1 to 8 6. t[col]=i 7. if osittaisratkaisu(t,col) 8. Queens(r,k) Aluksi t=[1,,1] ja kutsutaan Peruuta(t,0) Apualgoritmi osittaisratkaisu kertoo, onko taulukon alkuosa laillinen asetelma A TRA, Suunnitteluparadigmat 42
811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu
832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa
Lisätiedot811312A 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
Lisätiedot811312A 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
Lisätiedot811312A 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
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 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
LisätiedotA 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 =
LisätiedotLuku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
Lisätiedot811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit
811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi
Lisätiedot8. Lajittelu, joukot ja valinta
8. Lajittelu, joukot ja valinta Yksi tietojenkäsittelyn klassisista tehtävistä on lajittelu (järjestäminen) (sorting) jo mekaanisten tietojenkäsittelylaitteiden ajalta. Lajiteltua tietoa tarvitaan lukemattomissa
LisätiedotAlgoritmit 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
Lisätiedot4 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
LisätiedotAlgoritmit 2. Luento 9 Ti Timo Männikkö
Algoritmit 2 Luento 9 Ti 17.4.2018 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen Huffmanin koodi LZW-menetelmä Taulukointi Editointietäisyys Algoritmit 2 Kevät 2018 Luento 9 Ti 17.4.2018 2/29 Merkkitiedon
Lisätiedot6. Algoritmien suunnitteluparadigmoja
6. Algoritmien suunnitteluparadigmoja Tässä osassa käsitellään erilaisia algoritmien suunnitteluperiaatteita esimerkkien valossa. Esimerkkialgoritmeja pyritään myös analysoimaan vaihtelevalla tarkkuudella.
Lisätiedot1 Erilaisia tapoja järjestää
TIE-20100 Tietorakenteet ja algoritmit 1 1 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi. Lisäksi
Lisätiedot1. (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
LisätiedotTietorakenteet, laskuharjoitus 7, ratkaisuja
Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9
LisätiedotAlgoritmit 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
LisätiedotTietorakenteet 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ä
LisätiedotAlgoritmien 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
Lisätiedot3. 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
LisätiedotTietorakenteet 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:
Lisätiedot10. Painotetut graafit
10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä
LisätiedotTehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003
Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja
Lisätiedot811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu
811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,
Lisätiedot12. Algoritminsuunnittelun perusmenetelmiä
12. Algoritminsuunnittelun perusmenetelmiä Ei vain toteuteta tietorakenteita algoritmeilla, vaan myös tietorakenteita käytetään tyypillisesti erilaisten algoritmien yhteydessä. Kun nämä tietojenkäsittelytieteen
Lisätiedot12. Algoritminsuunnittelun perusmenetelmiä
12. Algoritminsuunnittelun perusmenetelmiä Ei vain toteuteta tietorakenteita algoritmeilla, vaan myös tietorakenteita käytetään tyypillisesti erilaisten algoritmien yhteydessä. Kun nämä tietojenkäsittelytieteen
LisätiedotOlkoon 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
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 2. Demot Timo Männikkö
Algoritmit 2 Demot 4 24.-25.4.2019 Timo Männikkö Tehtävä 1 (a) int laske(n) { if (n
LisätiedotEsimerkkejä 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
Lisätiedot811312A 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
LisätiedotHarjoitus 6 ( )
Harjoitus 6 (21.4.2015) Tehtävä 1 Määritelmän (ks. luentomoniste s. 109) mukaan yleisen, muotoa min f(x) s. t. g(x) 0 h(x) = 0 x X olevan optimointitehtävän Lagrangen duaali on missä max θ(u, v) s. t.
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 ari.vesanen (at) oulu.fi 5. Rekursio ja induktio Rekursio tarkoittaa jonkin asian määrittelyä itseensä viittaamalla Tietojenkäsittelyssä algoritmin määrittely niin,
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 2. Luento 10 To Timo Männikkö
Algoritmit 2 Luento 10 To 11.4.2019 Timo Männikkö Luento 10 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutusmenetelmä Osajoukon summa Algoritmit 2 Kevät 2019 Luento 10 To
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 2. Luento 9 Ti Timo Männikkö
Algoritmit 2 Luento 9 Ti 19.4.2016 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutus Verkon 3-väritys Algoritmit 2 Kevät 2016 Luento 9 Ti 19.4.2016
LisätiedotTietorakenteet, laskuharjoitus 10, ratkaisuja. 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
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.
LisätiedotMalliratkaisut Demot
Malliratkaisut Demot 6 24.4.2017 Tehtävä 1 Määritelmän (ks. luentomonisteen s. 107) mukaan yleisen muotoa min f(x) s.t. g(x) 0 h(x) = 0 x X (1) olevan optimointitehtävän Lagrangen duaali on min θ(u,v)
Lisätiedot811312A 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
LisätiedotTutkimusmenetelmä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
LisätiedotNumeeriset menetelmät
Numeeriset menetelmät Luento 3 Ti 13.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 3 Ti 13.9.2011 p. 1/37 p. 1/37 Epälineaariset yhtälöt Newtonin menetelmä: x n+1 = x n f(x n) f (x n ) Sekanttimenetelmä:
Lisätiedotf(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
LisätiedotAlgoritmit 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
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotLiite 2: Verkot ja todennäköisyyslaskenta
Ilkka Mellin Todennäköisyyslaskenta Liite 2: Verkot ja todennäköisyyslaskenta Verkot TKK (c) Ilkka Mellin (2007) 1 Verkko eli graafi: Määritelmä 1/2 Verkko eli graafi muodostuu pisteiden joukosta V, särmien
LisätiedotHarjoitus 6 ( )
Harjoitus 6 (30.4.2014) Tehtävä 1 Määritelmän (ks. luentomoniste s. 109) mukaan yleisen, muotoa min f(x) s.t. g(x) 0 h(x) = 0 x X (1) olevan optimointitehtävän Lagrangen duaali on max θ(u,v) s.t. u 0,
LisätiedotAlgoritmi 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
LisätiedotALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012
ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,
LisätiedotAlgoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 2 1.-2.2.2017 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: laskesumma(t, n) sum = t[0]; for (i = 1; i < n; i++) sum = sum + t[i]; return sum; Silmukka suoritetaan n 1 kertaa
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 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
LisätiedotEpä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ää,
LisätiedotTiraka, yhteenveto tenttiinlukua varten
Tiraka, yhteenveto tenttiinlukua varten TERMEJÄ Tietorakenne Tietorakenne on tapa tallettaa tietoa niin, että tietoa voidaan lisätä, poistaa, muokata ja hakea. Tietorakenteet siis säilövät tiedon niin,
Lisätiedot811312A Tietorakenteet ja algoritmit II Perustietorakenteet
811312A Tietorakenteet ja algoritmit 2017-2018 II Perustietorakenteet Sisältö 1. Johdanto 2. Pino 3. Jono 4. Lista 811312A TRA, Perustietorakenteet 2 II.1. Johdanto Tietorakenne on tapa, jolla algoritmi
LisätiedotAlgoritmit 2. Luento 8 Ke 13.4.2016. Timo Männikkö
Algoritmit 2 Luento 8 Ke 13.4.2016 Timo Männikkö Luento 8 Rekursioyhtälöt Master-lause Lähin pistepari Ahne menetelmä Lyhin virittävä puu Kruskalin menetelmä Primin menetelmä Merkkitiedon tiivistäminen
LisätiedotHakupuut. 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
LisätiedotAlgoritmit 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
LisätiedotKuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij
Kuljetustehtävä Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij Lähtöpaikan i kapasiteetti on a i (oletetaan, että a i > 0
LisätiedotKokonaislukuoptimointi
Kokonaislukuoptimointi Algebrallisen geometrian sovelluksia Sisältö Taustaa algebrallisesta geometriasta Gröbnerin kanta Buchbergerin algoritmi Kokonaislukuoptimointi Käypyysongelma Algoritmi ratkaisun
LisätiedotAlgoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
LisätiedotLuetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki
Luetteloivat ja heuristiset menetelmät Mat-2.4191, Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki Sisältö Branch and Bound sekä sen variaatiot (Branch and Cut, Lemken menetelmä) Optimointiin
LisätiedotMiten käydä läpi puun alkiot (traversal)?
inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu
LisätiedotAVL-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
LisätiedotKurssikoe on maanantaina 29.6. Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.
HY / Avoin ylioisto Johdatus yliopistomatematiikkaan, kesä 201 Harjoitus 7 Ratkaisut palautettava viimeistään perjantaina 26.6.201 klo 16.00. Huom! Luennot ovat salissa CK112 maanantaista 1.6. lähtien.
LisätiedotAlgoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 2 7.-8.2.2018 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: etsipienin(t, n) { pnn = t[0]; for (i = 1; i < n; i++) { pnn = min(pnn, t[i]); return pnn; Silmukka suoritetaan
LisätiedotLuku 7. Verkkoalgoritmit. 7.1 Määritelmiä
Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko
LisätiedotAlgoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
LisätiedotAlgoritmit 2. Luento 12 Ke Timo Männikkö
Algoritmit 2 Luento 12 Ke 26.4.2017 Timo Männikkö Luento 12 Rajoitehaku Kauppamatkustajan ongelma Lyhin virittävä puu Paikallinen etsintä Vaihtoalgoritmit Geneettiset algoritmit Simuloitu jäähdytys Algoritmit
LisätiedotGraafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria
Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:
LisätiedotKoe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min
Koe Koe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min Kokeessa saa olla mukana A4:n kokoinen kaksipuolinen käsiten tehty, itse kirjoitettu lunttilappu 1 Tärkeää ja vähemmäntärkeää Ensimmäisen
Lisätiedot(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
Lisätiedot58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)
58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
LisätiedotMat Lineaarinen ohjelmointi
Mat-.34 Lineaarinen ohjelmointi 9..7 Luento Kokonaislukuoptimoinnin algoritmeja (kirja.-.) Lineaarinen ohjelmointi - Syksy 7 / Luentorunko Gomoryn leikkaava taso Branch & Bound Branch & Cut Muita menetelmiä
Lisätiedot3.4 Peruutus (backtracking)
3.4 Peruutus (backtracking) Tarkastellaan kahta esimerkkiongelmaa: Kahdeksan kuningattaren ongelma: sijoitettava 8 8 ruudun pelilaudalle 8 nappulaa siten, että millekään vaaka-, pysty- tai viistoriville
LisätiedotTaulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu
Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on
LisätiedotYhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.
2. MS-A000 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2..205 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x x 2 =
Lisätiedotv 8 v 9 v 5 C v 3 v 4
Verkot Verkko on (äärellinen) matemaattinen malli, joka koostuu pisteistä ja pisteitä toisiinsa yhdistävistä viivoista. Jokainen viiva yhdistää kaksi pistettä, jotka ovat viivan päätepisteitä. Esimerkiksi
LisätiedotHarjoitus 1 (20.3.2014)
Harjoitus 1 (20.3.2014) Tehtävä 1 Piirretään tilanteesta verkko, jossa kaupungeille on annetttu seuraavat numerot: 1 = Turku 2 = Tampere 3 = Hämeenlinna 4 = Imatra 5 = Jyväskylä. 5 2 149(5) 190(4) 113(1)
LisätiedotValitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.
Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.
LisätiedotHarjoitus 3 (3.4.2014)
Harjoitus 3 (3..) Tehtävä Olkoon kaaren paino c ij suurin sallittu korkeus tieosuudella (i, j). Etsitään reitti solmusta s solmuun t siten, että reitin suurin sallittu korkeus pienimmillään olisi mahdollisimman
LisätiedotAlgoritmit 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
Lisätiedot4. Joukkojen käsittely
4 Joukkojen käsittely Tämän luvun jälkeen opiskelija osaa soveltaa lomittuvien kasojen operaatioita tuntee lomittuvien kasojen toteutuksen binomi- ja Fibonacci-kasoina sekä näiden totetutusten analyysiperiaatteet
LisätiedotAlgoritmit 2. Luento 12 To Timo Männikkö
Algoritmit 2 Luento 12 To 3.5.2018 Timo Männikkö Luento 12 Geneettiset algoritmit Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 2/35 Algoritmien
LisätiedotYhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.
2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2
LisätiedotHarjoitus 3 (31.3.2015)
Harjoitus (..05) Tehtävä Olkoon kaaren paino c ij suurin sallittu korkeus tieosuudella (i,j). Etsitään reitti solmusta s solmuun t siten, että reitin suurin sallittu korkeus pienimmillään olisi mahdollisimman
Lisätiedot8. Lajittelu, joukot ja valinta
8. Lajittelu, joukot ja valinta Yksi tietojenkäsittelyn klassisista tehtävistä on lajittelu (järjestäminen) (sorting) jo mekaanisten tietojenkäsittelylaitteiden ajalta. Lajiteltua tietoa tarvitaan lukemattomissa
LisätiedotKombinatorinen optimointi
Kombinatorinen optimointi Sallittujen pisteiden lukumäärä on äärellinen Periaatteessa ratkaisu löydetään käymällä läpi kaikki pisteet Käytännössä lukumäärä on niin suuri, että tämä on mahdotonta Usein
LisätiedotAlgoritmit 2. Luento 11 Ti Timo Männikkö
Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento
LisätiedotAlgoritmit 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
LisätiedotNumeeriset menetelmät
Numeeriset menetelmät Luento 4 To 15.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 4 To 15.9.2011 p. 1/38 p. 1/38 Lineaarinen yhtälöryhmä Lineaarinen yhtälöryhmä matriisimuodossa Ax = b
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla
LisätiedotAlgoritmit 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
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Lisätiedot