Algoritmit 1. Luento 10 Ke Timo Männikkö
|
|
- Maarit Marja Saarnio
- 5 vuotta sitten
- Katselukertoja:
Transkriptio
1 Algoritmit 1 Luento 10 Ke Timo Männikkö
2 Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot Algoritmit 1 Kevät 2018 Luento 10 Ke /33
3 Algoritminen ongelmanratkaisu Algoritmi: Askel askeleelta suoritettava tekniikka tai ohje tehtävän suorittamiseksi tai ongelman ratkaisemiseksi Ongelman ymmärtäminen: Tutkitaan tarkasti ongelman kuvaus Esimerkkitapausten läpikäynti Onko ongelma lähellä jotain usein esiintyvää ongelmaa Onko ratkaistavana ongelman jokin tietty esiintymä Algoritmit 1 Kevät 2018 Luento 10 Ke /33
4 Algoritminen ongelmanratkaisu Valmiit ratkaisumenetelmät samantyyppisille ongelmille Ratkaisuympäristön asettamat rajoitukset Onko rinnakkaisprosessointi mahdollinen Aikarajoitukset, rajoitukset muistitilan käytölle Halutaanko tarkka ratkaisu vai riittääkö likimääräinen ratkaisu Tietorakenteiden suunnittelu ja valinta Tarvittaessa lähtötietojen uudelleenkäsittely (järjestäminen, muokkaus) Algoritmit 1 Kevät 2018 Luento 10 Ke /33
5 Algoritminen ongelmanratkaisu Algoritmin suunnittelu: Käytetään hyviksi osoittautuneita suunnittelumenetelmiä Samantyyppisille ongelmille sopivat samantyyppiset algoritmit Voidaanko ongelma muuntaa joksikin tunnetuksi ongelmaksi Algoritmin kuvaus: Sanallinen kuvaus Pseudokoodi Algoritmit 1 Kevät 2018 Luento 10 Ke /33
6 Algoritminen ongelmanratkaisu Algoritmin osoittaminen oikeaksi: Joskus helppoa, joskus hyvin hankalaa Esimerkiksi matemaattinen induktio Pelkkä testaus joillain syöttötiedoilla ei riitä Algoritmin analysointi: Tehokkuus suoritusajan suhteen Muistitilan ja muiden resurssien käyttö Likiarvoratkaisujen hyvyys Algoritmin optimaalisuus ongelman suhteen Algoritmit 1 Kevät 2018 Luento 10 Ke /33
7 Algoritminen ongelmanratkaisu Algoritmin toteutus: Koodaus jollain ohjelmointikielellä Huolellinen ohjelman suunnittelu Huolellinen ohjelman testaus Algoritmit 1 Kevät 2018 Luento 10 Ke /33
8 Suunnittelumenetelmät Yleisiä tekniikoita ja periaatteita algoritmin muodostamiseksi Joskus algoritmi voidaan katsoa kuuluvan usean eri suunnittelumenetelmän mukaiseksi Joskus algoritmin ei voida katsoa kuuluvan mihinkään erityiseen suunnittelumenetelmäluokkaan Monesti algoritmi käyttää hyväksi ongelman erityisominaisuuksia Algoritmit 1 Kevät 2018 Luento 10 Ke /33
9 Raaka voima Ongelman suoraviivainen ratkaiseminen Algoritmit yksinkertaisia, helpohkoja Mutta eivät välttämättä kovin tehokkaita Esimerkki: Tehtävänä laskea a n = a a... a (kerrottavia lukuja n kpl) tulo = 1; for (i = 1; i <= n; i++) tulo = tulo*a; Aikavaativuus O(n) Voidaan laskea paljon nopeammin (miten?) Algoritmit 1 Kevät 2018 Luento 10 Ke /33
10 Lähin pistepari Tason pisteet p i = (x i, y i ), i = 1, 2,..., n Pisteiden välinen etäisyys: d(p i, p j ) = (x i x j ) 2 + (y i y j ) 2 Tehtävä: Etsi kaksi toisiaan lähinnä olevaa pistettä Raa an voiman algoritmi: Käydään läpi kaikki pisteparit, lasketaan niiden välinen etäisyys ja pidetään yllä pienintä etäisyyttä Algoritmit 1 Kevät 2018 Luento 10 Ke /33
11 Lähin pistepari 1. Asetetaan pienin = (suuri luku) 2. Toistetaan kaikilla i = 1, 2,..., n 1: Toistetaan kaikilla j = i + 1, i + 2,..., n: Lasketaan e = (x i x j ) 2 + (y i y j ) 2 Jos e < pienin, asetetaan pienin = e, piste1 = i ja piste2 = j 3. Palautetaan pisteparin indeksit piste1 ja piste2 Huom: Neliöjuurta ei tarvitse laskea (miksi?) Algoritmit 1 Kevät 2018 Luento 10 Ke /33
12 Lähin pistepari Perusoperaationa voidaan pitää etäisyyden laskemista Kaksi sisäkkäistä silmukkaa, molempien suorituskertojen lukumäärä riippuu n:stä Perusoperaatioiden lukumäärä (n 1) + (n 2) = n 1 i=1 Aikavaativuus O(n 2 ) i = n(n 1) 2 Algoritmit 1 Kevät 2018 Luento 10 Ke /33
13 Lajittelu eli järjestäminen Taulukko, jossa n samantyyppistä alkiota Alkioiden välille määritelty järjestysrelaatio jonkin avainkentän (tai kenttien) perusteella Tehtävä: Järjestä alkiot tiettyyn järjestykseen järjestysrelaation mukaan (esimerkiksi kasvavaan järjestykseen) Taulukon sijaan alkiot voivat olla lineaarisessa (linkitetyssä) listassa, tiedostossa jne. Lajittelun avulla voidaan nopeuttaa useita muita algoritmeja Algoritmit 1 Kevät 2018 Luento 10 Ke /33
14 Indeksitaulukon käyttö Lajittelussa alkioita siirrellään taulukossa Suurten alkioiden siirtely hidasta/työlästä Indeksitaulukko: Järjestys ilmoitetaan kokonaislukutaulukolla: xt[i] = alkion i paikka järjestyksessä Siirrellään vain taulukon xt alkioita Lajiteltavat alkiot pysyvät paikoillaan Vastaavasti lineaarisille listoille voidaan käyttää osoitintaulukkoa Algoritmit 1 Kevät 2018 Luento 10 Ke /33
15 Lajittelumenetelmien stabiilisuus Stabiili lajittelumenetelmä: Olkoot R i ja R j kaksi samanarvoista alkiota, joiden alkuperäiset paikat taulukossa ovat i 0 ja j 0 siten, että i 0 < j 0 Jos lajittelun jälkeen alkioiden paikat ovat i 1 ja j 1, ja on voimassa i 1 < j 1, on menetelmä stabiili Toisin sanoen: Samanarvoiset alkiot säilyttävät alkuperäisen keskinäisen järjestyksensä Huom: Samanarvoisuus määritellään tässä vain avainkentän (kenttien) suhteen Samanarvoiset alkiot eivät välttämättä ole identtisiä Algoritmit 1 Kevät 2018 Luento 10 Ke /33
16 Kuplalajittelu (bubble sort) Alkiot taulukon t paikoissa 0, 1,..., n-1 Siirretään pienin alkio paikkaan 0 Vertaillaan peräkkäisiä alkioita aloittaen taulukon lopusta Jos verrattavat alkiot väärässä järjestyksessä, vaihdetaan ne keskenään Siirretään toiseksi pienin alkio paikkaan 1 Vertaillaan peräkkäisiä alkioita aloittaen taulukon lopusta Jos verrattavat alkiot väärässä järjestyksessä, vaihdetaan ne keskenään Jne. Algoritmit 1 Kevät 2018 Luento 10 Ke /33
17 Kuplalajittelu 1. Toistetaan kaikilla i = 1, 2,..., n-1: 2. Toistetaan kaikilla j = n-2, n-3,..., i-1: Jos t[j] > t[j+1], vaihdetaan t[j] ja t[j+1] keskenään Algoritmit 1 Kevät 2018 Luento 10 Ke /33
18 Kuplalajittelu Kaksi sisäkkäistä silmukkaa, molempien suorituskertojen lukumäärä riippuu n:stä Vertailuja tehdään (n 1) + (n 2) = n(n 1)/2 kappaletta Aikavaativuus O(n 2 ) Pahimmassa tapauksessa vaihtoja yhtä monta Algoritmit 1 Kevät 2018 Luento 10 Ke /33
19 Lisäyslajittelu (insertion sort) Oletetaan: Vaiheessa i alkiot paikoissa 0, 1,..., i-1 toistensa suhteen oikeassa järjestyksessä Kopioidaan t[i] aputietueeseen Vertaillaan alkiota t[i] edeltäviin alkioihin ja siirretään alkuosan alkioita eteenpäin yhdellä askeleella (kohti taulukon loppua), kunnes tullaan kohtaan, johon t[i] kuuluu Sijoitetaan t[i] aputietueesta tuohon kohtaan Tämän jälkeen: Alkiot paikoissa 0, 1,..., i toistensa suhteen oikeassa järjestyksessä Algoritmit 1 Kevät 2018 Luento 10 Ke /33
20 Lisäyslajittelu 1. Toistetaan kaikilla i = 1, 2,..., n-1: 2. Kopioidaan p = t[i] ja asetetaan j = i-1 Siirretään alkoita tarvittaessa: Jos j 0 ja t[j] > p, kopioidaan t[j+1] = t[j], asetetaan j = j-1 ja toistetaan Muuten lopetetaan alkioiden siirtäminen Kopioidaan t[j+1] = p Algoritmit 1 Kevät 2018 Luento 10 Ke /33
21 Lisäyslajittelu Kaksi sisäkkäistä silmukkaa, molempien suorituskertojen lukumäärä riippuu n:stä Pahimmassa tapauksessa vertailuja tehdään (n 2) + (n 1) = n(n 1)/2 kappaletta Aikavaativuus O(n 2 ) Pahimmassa tapauksessa kopiointeja yhtä monta Lisäksi jokaisella i:n arvolla kaksi muuta kopiointia (aputietue p) Kopiointeja yhteensä n(n 1)/2 + 2(n 1) kappaletta Kertaluokka O(n 2 ) Algoritmit 1 Kevät 2018 Luento 10 Ke /33
22 Valintalajittelu (selection sort) Oletetaan: Vaiheessa i alkiot paikoissa 0, 1,..., i-1 lopullisessa järjestyksessä Etsitään loppuosan alkioista (paikat i, i+1,..., n-1) pienin ja tarvittaessa vaihdetaan se alkion t[i] kanssa Tämän jälkeen: Alkiot paikoissa 0, 1,..., i lopullisessa järjestyksessä Algoritmit 1 Kevät 2018 Luento 10 Ke /33
23 Valintalajittelu (Ensimmäinen versio) 1. Toistetaan kaikilla i = 0, 1,..., n-2: 2. Kopioidaan p = t[i] ja asetetaan k = i Toistetaan kaikilla j = i+1, i+2,..., n-1: Jos t[j] < p, kopioidaan p = t[j] ja asetetaan k = j 3. Jos k i, kopioidaan t[k] = t[i] ja t[i] = p Algoritmit 1 Kevät 2018 Luento 10 Ke /33
24 Valintalajittelu Kaksi sisäkkäistä silmukkaa, molempien suorituskertojen lukumäärä riippuu n:stä Vertailuja tehdään (n 1) + (n 2) = n(n 1)/2 kappaletta Aikavaativuus O(n 2 ) Pahimmassa tapauksessa myös kopiointien kertaluokka on O(n 2 ) Mutta: Aputietuetta p ei välttämättä tarvita silloin kun halutaan löytää pienin alkio Algoritmit 1 Kevät 2018 Luento 10 Ke /33
25 Valintalajittelu (Toinen versio) 1. Toistetaan kaikilla i = 0, 1,..., n-2: 2. Asetetaan k = i Toistetaan kaikilla j = i+1, i+2,..., n-1: Jos t[j] < t[k], asetetaan k = j 3. Jos k i, vaihdetaan t[k] ja t[i] keskenään Tässä versiossa kopiointeja enintään kertaluokan O(n) verran Algoritmit 1 Kevät 2018 Luento 10 Ke /33
26 Lajittelumenetelmien stabiilisuus Kuplalajittelu: Stabiili Lisäyslajittelu: Stabiili Valintalajittelu: Kumpikaan edellä esitetyistä versioista ei ole stabiili Mutta voidaan toteuttaa myös stabiilina Algoritmit 1 Kevät 2018 Luento 10 Ke /33
27 Raaka voima Tyypillinen raakaan voimaan perustuva algoritmi: Tutkitaan mahdollisia ratkaisuvaihtoehtoja kunnes: Haluttu ratkaisu löytyy Tai kaikki vaihtoehdot on tutkittu Tutkitaan järjestelmällisesti kaikki osajoukot tai permutaatiot Ongelmana ratkaisuvaihtoehtojen suuri lukumäärä Algoritmit 1 Kevät 2018 Luento 10 Ke /33
28 Permutaatiot Kuvataan ongelmaan liittyvät alkiot kokonaisluvuilla Ratkaisu esitetään kokonaislukujen jonona Ratkaisuvaihtoehtojen läpikäyminen tarkoittaa kokonaislukujen eri järjestysten eli permutaatioiden läpikäymistä Kokonaisluvut {1, 2,..., n} Erilaisia permutaatiota n! = n kpl Algoritmit 1 Kevät 2018 Luento 10 Ke /33
29 Esimerkki Hamiltonin kehä -ongelma: Verkko, jossa solmut N = {1, 2,..., n} ja kaaret E = {(i, j) i N ja j N} Tehtävä: Etsi silmukka, joka käy jokaisessa verkon solmussa täsmälleen kerran Permutaatioratkaisu: Permutaatio {1, 2,..., n} esittää Hamiltonin kehää n 1 (jos kaikki kaaret olemassa) Sallittu permutaatio: Verkossa on olemassa kaikki permutaation mukaiset kaaret Algoritmit 1 Kevät 2018 Luento 10 Ke /33
30 Esimerkki jatkuu Hamiltonin kehä -ongelman raakaan voimaan perustuva ratkaiseminen: Muodostetaan kaikki permutaatiot Tutkitaan, mitkä niistä ovat sallittuja Ei käyttökelpoinen, jos n suuri Algoritmit 1 Kevät 2018 Luento 10 Ke /33
31 Permutaatioiden muodostaminen Kaikki permutaatiot voidaan muodostaa rekursiivisesti: Kiinnitetään 1 ensimmäiseksi luvuksi, muodostetaan kaikki lukujen {2, 3,..., n} permutaatiot Kiinnitetään 2 ensimmäiseksi luvuksi, muodostetaan kaikki lukujen {1, 3,..., n} permutaatiot Jne. Kiinnitetään n ensimmäiseksi luvuksi, muodostetaan kaikki lukujen {1, 2,..., n 1} permutaatiot Algoritmit 1 Kevät 2018 Luento 10 Ke /33
32 Permutaatioiden muodostaminen // muodostetaan kaikki lukujen // {1, 2,..., n} permutaatiot permutaatio(m) { if (m == n) // seuraava permutaatio on nyt // taulukossa p[1..n] else for (j = m; j <= n; j++) { swap(p[j], p[m]); permutaatio(m+1); swap(p[j], p[m]); } } Algoritmit 1 Kevät 2018 Luento 10 Ke /33
33 Permutaatioiden muodostaminen // alustus ja ensimmäinen kutsu for (j = 1; j <= n; j++) p[j] = j; permutaatio(1); Permutaatioita n! kpl Tehdään kullekin permutaatiolle jotain, esimerkiksi jokin O(n)-operaatio Koko algoritmin aikavaativuus O(n n!) Algoritmit 1 Kevät 2018 Luento 10 Ke /33
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
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ä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ä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ätiedotAlgoritmit 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
LisätiedotAlgoritmit 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
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ä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 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 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 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 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ä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ätiedotAlgoritmit 1. Luento 5 Ti Timo Männikkö
Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti
LisätiedotAlgoritmit 1. Luento 9 Ti Timo Männikkö
Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward
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ätiedotAlgoritmit 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
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 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. 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ätiedotuseampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero
Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op
LisätiedotAlgoritmit 1. Luento 7 Ti Timo Männikkö
Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017
LisätiedotAlgoritmit 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
LisätiedotAlgoritmit 2. Luento 6 To Timo Männikkö
Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100
LisätiedotAlgoritmit 2. Luento 6 Ke Timo Männikkö
Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu
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ä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 4 Ke Timo Männikkö
Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,
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ätiedotAlgoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava
LisätiedotAlgoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 1 25.-26.1.2017 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka laskee kahden kokonaisluvun välisen jakojäännöksen käyttämättä lainkaan jakolaskuja Jaettava m, jakaja n Vähennetään luku
LisätiedotAlgoritmit 2. Luento 5 Ti Timo Männikkö
Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia
LisätiedotAlgoritmit 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
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ä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ätiedot4.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
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ätiedotAlgoritmit 1. Luento 6 Ke Timo Männikkö
Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty
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 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
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 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ä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ätiedot58131 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
LisätiedotAlgoritmit 2. Luento 5 Ti Timo Männikkö
Algoritmit 2 Luento 5 Ti 28.3.2017 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot Algoritmit 2 Kevät 2017 Luento 5 Ti 28.3.2017 2/29 B-puu Algoritmit 2 Kevät 2017 Luento 5 Ti
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ä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ä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ä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 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin
LisätiedotA TIETORAKENTEET JA ALGORITMIT
A274105 TIETORAKENTEET JA ALGORITMIT HARJOITUSTEHTÄVÄT 6 DEADLINE 1.4.2009 KLO 9:00 Kynätehtävät tehdään kirjallisesti ja esitetään harjoituksissa. Välivaiheet näkyviin! Ohjelmointitehtävät sähköisesti
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ätiedotTarkennamme geneeristä painamiskorotusalgoritmia
Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi
LisätiedotAlgoritmit 2. Luento 4 Ke Timo Männikkö
Algoritmit 2 Luento 4 Ke 22.3.2017 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2017 Luento 4
LisätiedotAlgoritmit 2. Luento 10 To Timo Männikkö
Algoritmit 2 Luento 10 To 19.4.2018 Timo Männikkö Luento 10 Peruutusmenetelmä Osajoukon summa Verkon 3-väritys Pelipuut Pelipuun läpikäynti Algoritmit 2 Kevät 2018 Luento 10 To 19.4.2018 2/34 Algoritmien
Lisätiedot2. 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.
Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen
LisätiedotAlgoritmit 2. Luento 4 To Timo Männikkö
Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4
LisätiedotLineaarisen kokonaislukuoptimointitehtävän ratkaiseminen
Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen Jos sallittuja kokonaislukuratkaisuja ei ole kovin paljon, ne voidaan käydä kaikki läpi yksitellen Käytännössä tämä ei kuitenkaan ole yleensä mahdollista
Lisätiedot58131 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
Lisätiedot58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut
Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten
LisätiedotTKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)
TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta
LisätiedotLiitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1
Liitosesimerkki 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 1 Esim R1 R2 yhteinen attribuutti C T(R1) = 10,000 riviä T(R2) = 5,000 riviä S(R1) = S(R2) = 1/10 lohkoa Puskuritilaa = 101 lohkoa 16.02.06
Lisätiedot(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =
JOHDATUS LUKUTEORIAAN (syksy 07) HARJOITUS 7, MALLIRATKAISUT Tehtävä Etsi seuraavien rationaalilukujen ketjumurtokehitelmät: (i) 7 6 (ii) 4 7 (iii) 65 74 (iv) 63 74 Ratkaisu Sovelletaan Eukleideen algoritmia
LisätiedotLiitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot
Esim yhteinen attribuutti C Liitosesimerkki T() = 10,000 riviä T() = 5,000 riviä S() = S() = 1/10 lohkoa Puskuritilaa = 101 lohkoa 1 2 Vaihtoehdot Sisäkkäiset silmukat Liitosjärjestys:, Liitosalgoritmit:
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 7. Kombinatoriikka 7.1 Johdanto Kombinatoriikka tutkii seuraavan kaltaisia kysymyksiä: Kuinka monella tavalla jokin toiminto voidaan suorittaa? Kuinka monta tietynlaista
LisätiedotTuloperiaate. Oletetaan, että eräs valintaprosessi voidaan jakaa peräkkäisiin vaiheisiin, joita on k kappaletta
Tuloperiaate Oletetaan, että eräs valintaprosessi voidaan jakaa peräkkäisiin vaiheisiin, joita on k kappaletta ja 1. vaiheessa valinta voidaan tehdä n 1 tavalla,. vaiheessa valinta voidaan tehdä n tavalla,
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ä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ä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ätiedotTieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
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ätiedotKuinka määritellään 2 3?
Kuinka määritellään 2 3? y Nyt 3 = 1,7320508.... Luvut 3 2 x x 3 2 x 2 1 = 2, 2 1,7 3,2490, 2 1,73 3,3173, 2 1,732 3,3219,... ovat hyvin määriteltyjä koska näihin tarvitaan vain rationaalilukupotenssin
LisätiedotAlgoritmit 2. Demot Timo Männikkö
Algoritmit 2 Demot 1 27.-28.3.2019 Timo Männikkö Tehtävä 1 (a) 4n 2 + n + 4 = O(n 2 ) c, n 0 > 0 : 0 4n 2 + n + 4 cn 2 n n 0 Vasen aina tosi Oikea tosi, jos (c 4)n 2 n 4 0, joten oltava c > 4 Kokeillaan
LisätiedotDatatähti 2019 loppu
Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio
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ätiedot811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu
1312A Tietorakenteet ja algoritmit, 2016-2017, Harjoitus 5, Ratkaisu Harjoituksen aihe ovat hash-taulukot ja binääriset etsintäpuut Tehtävä 5.1 Tallenna avaimet 10,22,31,4,15,28,17 ja 59 hash-taulukkoon,
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 2. Luento 11 Ti Timo Männikkö
Algoritmit 2 Luento 11 Ti 25.4.2017 Timo Männikkö Luento 11 Peruutusmenetelmä Osajoukon summa Pelipuut Pelipuun läpikäynti Rajoitehaku Kapsäkkiongelma Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 2/29
Lisätiedot1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.
Algoritmien DP ja MF vertaileminen tapahtuu suoraviivaisesti kirjoittamalla kummankin leskimääräinen kustannus eksplisiittisesti todennäköisyyksien avulla. Lause T MF ave = 1 + 2 1 i
LisätiedotAlgoritmit 2. Demot Timo Männikkö
Algoritmit 2 Demot 2 3.-4.4.2019 Timo Männikkö Tehtävä 1 Avoin osoitteenmuodostus: Hajautustaulukko t (koko m) Erikoisarvot VAPAA ja POISTETTU Hajautusfunktio h(k,i) Operaatiot: lisaa etsi poista Algoritmit
LisätiedotAlgoritmit. Ohjelman tekemisen hahmottamisessa käytetään
Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.
Lisätiedot9 Erilaisia tapoja järjestää
TIE-20100 Tietorakenteet ja algoritmit 198 9 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi.
LisätiedotKäänteismatriisin ominaisuuksia
Käänteismatriisin ominaisuuksia Lause 1.4. Jos A ja B ovat säännöllisiä ja luku λ 0, niin 1) (A 1 ) 1 = A 2) (λa) 1 = 1 λ A 1 3) (AB) 1 = B 1 A 1 4) (A T ) 1 = (A 1 ) T. Tod.... Ortogonaaliset matriisit
Lisätiedot58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)
58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen) 1. Lisäysjärjestämisessä järjestetään ensin taulukon kaksi ensimmäistä lukua, sitten kolme ensimmäistä lukua, sitten neljä ensimmäistä
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ä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ätiedotLuku 8. Aluekyselyt. 8.1 Summataulukko
Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa
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ä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ätiedot811312A 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ätiedot1. Kuinka monella tavalla joukon kaikki alkiot voidaan järjestää jonoksi? Tähän antaa vastauksen: tuloperiaate ja permutaatio
TOD.NÄK JA TILASTOT, MAA10 Kombinatoriikka Todennäköisyyksiä (-laskuja) varten tarvitaan tieto tapahtumille suotuisien alkeistapausten lukumäärästä eli tapahtumaa vastaavan osajoukon alkioiden lukumäärästä.
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ä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ätiedotKönigsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )
Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,
LisätiedotJohdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma
Johdatus lukuteoriaan Harjoitus syksy 008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä Todista ketjumurtoluvun peräkkäisille konvergenteille kaava ( ) n induktiolla käyttämällä jonojen ( ) ja ( ) rekursiokaavaa.
LisätiedotPikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin
Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin jaetaan muut alkiot kahteen ryhmään: L: alkiot, jotka eivät suurempia kuin pivot G : alkiot, jotka suurempia kuin pivot 6 1 4 3 7 2
LisätiedotSovellettu todennäköisyyslaskenta B
Sovellettu todennäköisyyslaskenta B Antti Rasila 13. syyskuuta 2007 Antti Rasila () TodB 13. syyskuuta 2007 1 / 21 1 Klassinen todennäköisyys 2 Kombinatoriikkaa Kombinatoriikan perusongelmat Permutaatiot
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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Lisätiedot