Algoritmit ja tietorakenteet Copyright Hannu Laine. 1, kun n= 0. n*(n-1)!, kun n>0;

Koko: px
Aloita esitys sivulta:

Download "Algoritmit ja tietorakenteet Copyright Hannu Laine. 1, kun n= 0. n*(n-1)!, kun n>0;"

Transkriptio

1 1 Rekursio Rekursion periaate ja rekursio määrittelyvälineenä Rekursiota käytetään tietotekniikassa ja matematiikassa erilaisiin tarkoituksiin. Eräänä käyttöalueena on asioiden määrittely. Esimerkkinä käsitellään luvun kertoman määrittelyä. Luvun n kertomaa merkitään n!, ja se tarkoittaa lukujen 1, 2, 3,..., n tuloa. Tässä määrittelyssä tarvitaan epämääräistä kolmen peräkkäisen pisteen merkintää. Epämääräisyydestä päästään eroon käyttämällä rekursiivista määritelmää kertomalle. Kertoma määritellään rekursiivisesti seuraavalla tavalla n! = 1, kun n= 0 n*(n-1)!, kun n>0; Aluksi voi tuntua siltä, että määritelmässä pyöritään kehää, koska siinä on käytetty kertoman määritelmää. Määritelmässä sanotaan, että n:n kertoma on n kertaa n-1:n kertoma. Asian ydin piilee ensinnäkin siinä, että määritelmässä on yksi tapaus, jossa kertoma on määritelty yksikäsitteisesti. Se on tapaus n = 0. Määritelmän mukaan luvun 0 kertoma on 1. Tätä osaa määritelmässä kutsutaan rekursion kannaksi. Toinen tärkeä piirre määritelmässä on, että rekursiivisessa osassa kertoma otetaan pienemmästä luvusta kuin alkuperäinen. Tämän seurauksena, kun rekursiota sovelletaan toistuvasti, saavutetaan lopulta rekursion kanta. Kuinka sitten määrittelyä voidaan käyttää käytännössä tietyssä tapauksessa? Yritetään selvittää kertoman määritelmän perusteella, mitä on 5!. Arvo saadaan määritelmän mukaan asteittain seuraavasti: Näin saadaan, että askel 1 Onko 5 > 0? On --> 5! = 5*(5-1)! = 5*4! askel 2 Onko 4 > 0? On --> 4! = 4*(4-1)! = 4*3! askel 3 Onko 3 > 0? On --> 3! = 3*(3-1)! = 3*2! askel 4 Onko 2 > 0? On --> 2! = 2*(2-1)! = 2*1! askel 5 Onko 1 > 0? On --> 1! = 1*(1-1)! = 1*0! askel 6 Onko 0 > 0? Ei -->0! = 1. 5! = 5*(4*(3*(2*(1*1)))) Määritelmän rekursiivista osaa on käytetty aina uudelleen ja uudelleen. Joka kerralla kuitenkin luku, jonka kertomaa ratkaistaan, on pienempi kuin edellisellä kerralla. Lopuksi luku on niin pieni, että määrittelyssä voidaan käyttää sen ei-rekursiivista osaa eli kantaa. Tällöin rekursio päättyy. Vasta rekursion päättymisen jälkeen voidaan kertomalle laskea arvoa. Laskenta tapahtuu tällöin takaperin, kuten lausekkeesta nähdään. Ensin lasketaan siis 1*1 = 1, sitten 2*1 = 2, sitten 3*2=6, sitten 4*6=24 ja lopuksi 5*24= 120. Tässä on esitelty, kuinka rekursiota voidaan käyttää määrittelyssä. Tietotekniikassa esimerkiksi puurakenteiden määrittelyssä käytetään yleensä rekursiivista määrittelyä. Rekursiota käytetään myös ongelman ratkaisumenetelmänä. Rekursio voidaan toteuttaa myös ohjelmoinnissa, jolloin sitä voidaan pitää lisäksi yhtenä ohjelmointitekniikkana. Edellä esitettiin rekursion käyttö määrittelyssä. Siinä tuli samalla esille rekursion tärkeimmät ominaisuudet yleisesti. Rekursiossa asia palautetaan itseensä, kuitenkin niin, että asia pienenee (edellä kertoma otetaan pienemmästä luvusta). Kun palautus itseensä tehdään

2 2 riittävän monta kertaa, asia on tullut niin pieneksi, että sen ratkaisu on itsestään selvä tai hyvin yksinkertainen. Kun tämä vaihe on saavutettu, rekursio päättyy ja tehtävässä palataan takaperin alkuun siten, että kun kantatapaus on ratkennut, voidaan selvittää kantatapausta edeltänyt vähän suurempi tapaus. Kun tämä on ratkennut, voidaan ratkaista sitä edeltänyt suurempi tapaus. Näin palataan lopulta alkuperäisen asian tai tehtävän ratkaisuun. Toisena esimerkkinä rekursiivisesta määritelmästä käsitellään tunnilla järjestettyjen alkioiden joukko eli sarja (sequence), joka oli perustana lineaarisen listan määrittelyssä. Rekursion käyttö ongelmanratkaisussa On monia sellaisia probleemoita, joiden ratkaiseminen on ilman rekursiota erittäin hankalaa, mutta rekursiivisella ajattelumallilla hyvin yksinkertaista. Perinteisenä esimerkkinä tällaisesta on ns. Hanoin tornien probleema. Siinä on kolme pystyssä olevaa tankoa (a, b ja c).tankoon a on pujotettu n kappaletta erikokoisia levyjä, joissa on reikä keskellä. Levyt ovat kaikki erikokoisia. Levyt on pujotettu tankoon siten, että suurin levy on alimmaisena ja pienin päällimmäisenä ja jokainen levy on aina alla olevaa pienempi. Tilanne on siis alussa alla olevan kuvan mukainen. a b c Tehtävänä on siirtää kaikki levyt tangosta a tankoon c. Tankoa b saadaan käyttää apuna. Siirroissa on noudatettava seuraavia sääntöjä: 1. Vain yksi levy saa olla kerrallaan pois tankoista. 2. Missään tangossa ei saa missään tilanteessa olla levyjä siten, että suurempi levy olisi pienemmän päällä. Probleeman ratkaisu on yleisellä tasolla hankala. Tämä johtuu siitä, että tarvittavien siirtojen määrä kasvaa eksponentiaalisesti levyjen määrän kasvaessa. Rekursiota käyttäen saadaan helposti algoritmi, joka kertoo tarvittavat siirrot. Ratkaisu on yksinkertainen (mutta tarvittavien siirtojen määrä tietysti edelleen suuri). Etsitään ensin sellainen pieni ongelma, joka on yksinkertainen. Tässä sellaisena voidaan pitää tapausta, jossa levyjä on vain yksi. Tällöinhän kaikki säännöt toteuttava ratkaisu on sellainen, että siirretään levy suoraan tangosta a tankoon c. Ratkaisun rekursiivisessa osassa on ilmaistava, miten siirretään n levyä. Rekursiivisessa osassa lähdetään siitä, että tehtävä osataan hoitaa yhtä pienemmälle levymäärälle n-1. Jos siis levyjä olisi n kappaletta, ne voidaan siirtää sääntöjä noudattaen tankoon c seuraavasti siirretään n-1 levyä sääntöjä noudattaen tangosta a tankoon b käyttäen hyväksi tankoa c siirretään tankoon a jäänyt suurin levy tankoon c

3 3 siirrettään n-1 levyä sääntöjä noudattaen tangosta b tankoon c käyttäen hyväksi tankoa a Kuinka n-1 levyä siirretään sääntöjä noudattaen, on siis edelleen avoin kysymys. Rekursion mukaan n-1 levyn siirtäminen voidaan edelleen jakaa kahteen osaan siten, siirretään n-2 levyä ensin pois päältä sääntöjä noudattaen samalla tavalla kuin edellä. Näin ongelma pienenee jokaisella kerralla, ja lopulta se palautuu yksinkertaisimpaan tapaukseen, jossa siirrettäviä levyjä on yksi. Tämän jälkeen tarvittavat siirrot saadaan selville takaperin. Rekursiivinen funktio Ohjelmointikielissä voidaan toteuttaa rekursiivinen funktio. Rekursiivisella funktiolla tarkoitetaan funktiota, joka kutsuu itse itseään. Yllä kuvatusta Hanoin tornien probleeman ratkaisusta voidaan kirjoittaa funktio, joka noudattaa suoraan ongelmanratkaisussa käytettyä ajattelumallia. Ohjelma näyttää seuraavalta. /* Hanoin tornit. Esimerkki valaisee rekursion käyttöä probleeman ratkaisussa ja vastaavan ohjelman kirjoituksessa.*/ #include <stdio.h> void siirra (int n, char tanko1, char tanko2, char tanko3) { //seuraavilla riveillä voitaisiin testata, montako kertaa funktiossa on käyty //static int kerta = 0; //printf("\nkerta := %d n = %d", kerta++, n); if (n==1) printf("\n Siirrä tangosta %c tankoon %c ", tanko1, tanko3); else { siirra(n - 1, tanko1, tanko3, tanko2); printf("\n Siirrä tangosta %c tankoon %c ", tanko1, tanko3); siirra(n - 1, tanko2, tanko1, tanko3); void main (void) { int n; printf("\n Montako levyä :"); scanf("%d", &n); printf("\n Käytä seuraavia siirtoja "); siirra(n, 'a', 'b', 'c'); Tunnilla käsitellään ohjelman suorituksen yhteydessä syntyvä ns. kutsupuu. Toisena sovellusesimerkkinä käsitellään tunnilla aikaisemmin esitetty tehtävä, jossa dynaamisesti linkatun listan loppuun lisätään uusi alkio, kun listasta tiedetään vain sen alkuosoite. Rekursiivisen funktion suoritusperiaate prosessorissa Rekursiivinen funktio on funktio, joka kutsuu itseään. Kun funktio kutsuu itseään, sen parhaillaan menossa oleva suoritus jää kesken. Kun seuraavalla kierroksella funktio kutsuu taas itseään, jää sen suoritus taas kesken kutsun kohdalla. Kun lopulta saavutetaan rekursion kanta, pääsee funktio tilanteeseen, jossa sillä hetkellä menossa oleva suoritus päästään loppuun. Tämän jälkeen funktio muistaa kaikki kesken jääneet suoritukset. Kannan

4 4 suorituksen jälkeen suoritetaan kantaa edeltäneen kutsun suoritus loppuun siitä kohdasta eteenpäin, jossa suoritus keskeytyi eli kutsua seuraavasta kohdasta. Tällä periaatteella kaikki kesken jääneet funktion suoritukset viedään loppuun siten, että viimeisenä suoritetaan loppuosa ensimmäisenä tehdystä funktion kutsusta. Kaikki kesken jääneet funktiokutsut suoritetaan siis takaperin loppuun. Rekursiivisen funktion toiminta perustuu siihen, että funktion kutsun yhteydessä parametrit, paluuosoite ja paikalliset muuttujat viedään pinoon.. Näin tapahtuu jokaisella kutsukerralla. Pinossa on siis erikseen kaikki edellä mainitut tiedot kutakin kutsukertaa varten. Koska tiedot ovat pinossa, tapahtuu funktioiden suoritus loppuun takaperin. Tiedothan löytyvät pinosta käänteisessä järjestyksessä pinon luonteen takia. Seuraavassa tarkastellaan esimerkkiä, jossa dynaamisesti varatun linkatun listan loppuun lisätään alkio rekursiivisella funktiolla insert_to_list_end. Kysymys on tapauksesta, jossa listasta on tiedossa vain sen alkuosoite. Tällöin listan loppu on etsittävä. Listan loppu voidaan luonnollisesti etsiä tavallista iteratiivista menettelyä käyttäen, jossa siirrytään listassa eteenpäin kunnes tulee vastaan alkio, jossa next-kentässä on arvo NULL. Iteratiivinen ratkaisu on jopa tehokas ja hyvä ratkaisu. Tässä esitetään kuitenkin rekursiivinen ratkaisu, koska se havainnollistaa erittäin hyvin rekursiivisen ajattelun periaatetta ja sillä voidaan kätevästi demonstroida miten prosessori suorittaa rekursiivista funktiota. Listan loppuun lisäämisen rekursiivinen ajattelumalli voidaan johtaa sarjan rekursiivisesta määrittelystä. Sarjan rekursiivisen määritelmän mukaan tyhjä joukko on sarja (kanta). Jos L on sarja ja a on alkio, niin al on sarja. Lineaarisen listan dynaamisesti linkatussa esityksessä solmu, joka sisältää alkion a, sisältää myös seuraavan solmun osoittimen. Tällöin voidaan ajatella, että ensimmäisen solmun next kenttä esittää listaa L, jossa on kaikki loput alkiot, samalla tavalla kuin ensimmäisen solmun osoite esittää koko listaa. Tämän ajattelumallin avulla alkion lisääminen listan loppuun voidaan esittää rekursiivisella ajattelumallilla seuraavasti: lisää alkio listan ensimmäiseksi alkioksi, jos lista on tyhjä muussa tapauksessa lisää alkio sen listan loppuun, joka seuraa ensimmäistä alkiota Rekursiivinen ratkaisu täyttää rekursion vaatimukset, koska sillä on kanta, jossa ratkaisu on selkeä, alkion lisääminen tyhjään listaan. Toisaalta ratkaisun rekursiivinen osa kohdistuu pienempään ongelmaan kuin alkuperäinen, koska siinä alkion lisäys tapahtuu yhtä alkiota lyhyempään listaan. Tämän takia rekursiivista osaa toistettaessa, lista lyhenee joka kierroksella ja lopuksi siitä tulee tyhjä lista, jolloin ratkaisu on kannan mukainen. Rekursiivinen funktio insert_to_list_end on esitetty dynaamisten rakenteiden käsittelyn yhteydessä (esimerkkitapaus case 5). Seuraavassa on tämä sama funktio. /* Rekursiivinen funktio, jolla lisätään alkio listan loppuun*/ void insert_to_list_end(tlist *list, Titem data) { if (*list == NULL ) { *list = (Tpointer) malloc(sizeof(tnode)); (*list) -> item = data; (*list) -> next = NULL; else insert_to_list_end_1(&((*list)->next), data);

5 5 Ratkaisu on selkeä, ja se kuvaa rekursiivista ajattelua hyvin. Funktio ei kuitenkaan ole tehokkuuden kannalta paras mahdollinen, sillä kaikkien alkioiden osoitteet jäävät pinoon, kunnes kanta on saavutettu. Pinosta siis kulutetaan tilaa yhtä monelle osoitteelle, kuin listassa on alkioita. Tässä tehtävässä näitä osoitteita ei tarvita. Ainoana tavoitteenahan oli löytää viimeinen alkio listassa. Tunnilla käydään läpi tarkasti eri vaiheet tämän rekursiivisen funktion suorituksessa. Optimaalista rekursiota edustaa funktio, joka tulostaa dynaamisesti linkatun listan alkiot päinvastaisessa järjestyksessä. Lukija voi miettiä tehtävää ja kirjoittaa funktion ja kokeilla sitä aikaisemmin käsitellyllä listaohjelmalla. Rekursion, pinon ja puiden yhteydet Rekursio, pino ja puut ovat kiinteästi yhteen kietoutuneita. Rekursion toteuttamiseen käytetään pinoa. Rekursiivisen funktion, jossa funktio kutsuu itseään kaksi kertaa, kutsuista muodostuu ns. kutsupuu. Tietorakenne puu määritellään rekursiivisesti. Useimmat puita käsittelevät operaatiofunktiot toteutetaan rekursiivisesti. Rekursiolle sopivia probleemoita Rekursiivinen ajattelu soveltuu mitä moninaisimpiin probleemoihin. Muutamia esimerkkejä ovat: Infix-lausekkeen muuntaminen postfix-muotoon Ruudukossa olevan mielivaltaisen yhtenäisen tahran koon laskeminen Puumaisen hakemistorakenteen läpikäynti.

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 8 1 Derivaatta Tarkastellaan funktion f keskimääräistä muutosta tietyllä välillä ( 0, ). Funktio f muuttuu tällä välillä määrän. Kun tämä määrä jaetaan välin pituudella,

Lisätiedot

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c. Epäyhtälö Kahden lausekkeen A ja B välisiä järjestysrelaatioita A < B, A B, A > B ja A B nimitetään epäyhtälöiksi. Esimerkiksi 2 < 6, 9 10, 5 > a + + 2 ja ( + 1) 2 2 + 2 ovat epäyhtälöitä. Epäyhtälössä

Lisätiedot

Johdatus diskreettiin matematiikkaan Harjoitus 7, 28.10.2015

Johdatus diskreettiin matematiikkaan Harjoitus 7, 28.10.2015 Johdatus diskreettiin matematiikkaan Harjoitus 7, 28.10.2015 1. Onko olemassa yhtenäistä verkkoa, jossa (a) jokaisen kärjen aste on 6, (b) jokaisen kärjen aste on 5, ja paperille piirrettynä sivut eivät

Lisätiedot

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta Simo K. Kivelä, 15.4.2003 Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta Aksioomat Luonnolliset luvut voidaan määritellä Peanon aksioomien avulla. Tarkastelun kohteena on

Lisätiedot

Lisää segmenttipuusta

Lisää segmenttipuusta Luku 24 Lisää segmenttipuusta Segmenttipuu on monipuolinen tietorakenne, joka mahdollistaa monenlaisten kyselyiden toteuttamisen tehokkaasti. Tähän mennessä olemme käyttäneet kuitenkin segmenttipuuta melko

Lisätiedot

2.2 Täydellinen yhtälö. Ratkaisukaava

2.2 Täydellinen yhtälö. Ratkaisukaava . Täydellinen yhtälö. Ratkaisukaava Tulon nollasäännöstä näkee silloin tällöin omituisia sovellutuksia. Jotkut näet ajattelevat, että on olemassa myöskin tulon -sääntö tai tulon "mikä-tahansa"- sääntö.

Lisätiedot

Eksponenttifunktion Laplace muunnos Lasketaan hetkellä nolla alkavan eksponenttifunktion Laplace muunnos eli sijoitetaan muunnoskaavaan

Eksponenttifunktion Laplace muunnos Lasketaan hetkellä nolla alkavan eksponenttifunktion Laplace muunnos eli sijoitetaan muunnoskaavaan Laplace muunnos Hieman yksinkertaistaen voisi sanoa, että Laplace muunnos muuttaa derivaatan kertolaskuksi ja integroinnin jakolaskuksi. Tältä kannalta katsottuna Laplace muunnoksen hyödyllisyyden ymmärtää;

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 10 1 Sarjakehitelmiä Palautetaan mieliin, että potenssisarja on sarja joka on muotoa a n (x x 0 ) n = a 0 + a 1 (x x 0 ) + a 2 (x x 0 ) 2 + a 3 (x x 0 ) 3 +. n=0 Kyseinen

Lisätiedot

MS-A0004 - Matriisilaskenta Laskuharjoitus 3

MS-A0004 - Matriisilaskenta Laskuharjoitus 3 MS-A0004 - Matriisilaskenta Laskuharjoitus 3 atkaisut Tehtävä Merkitään matriisin rivejä, 2 ja 3. Gaussin eliminoinnilla saadaan 3 5 4 7 3 5 4 7 3 2 4 2+ 0 3 0 6 6 8 4 3+2 2 0 3 0 6 3 5 4 7 0 3 0 6 3+

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan (insert_to_list) Linkatun listan yleisyys alkiotyypin suhteen source-tasolla

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset 815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 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ätiedot

Luento 6. June 1, 2015. Luento 6

Luento 6. June 1, 2015. Luento 6 June 1, 2015 Normaalimuodon pelissä on luontevaa ajatella, että pelaajat tekevät valintansa samanaikaisesti. Ekstensiivisen muodon peleissä pelin jonottaisella rakenteella on keskeinen merkitys. Aluksi

Lisätiedot

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1 String-vertailusta ja Scannerin käytöstä (1/2) Vertailuja tehdessä törmätään usein tilanteeseen, jossa merkkijonoa (esimerkiksi merkkijonomuuttujaa) pitää vertailla toiseen merkkijonoon. Tällöin tavanomainen

Lisätiedot

2.7 Neliöjuuriyhtälö ja -epäyhtälö

2.7 Neliöjuuriyhtälö ja -epäyhtälö 2.7 Neliöjuuriyhtälö ja -epäyhtälö Neliöjuuren määritelmä palautettiin mieleen jo luvun 2.2 alussa. Neliöjuurella on mm. seuraavat ominaisuudet. ab = a b, a 0, b 0 a a b =, a 0, b > 0 b a2 = a a > b, a

Lisätiedot

OHJ-1151 Ohjelmointi IIe

OHJ-1151 Ohjelmointi IIe Tampereen teknillinen yliopisto Ohjelmistotekniikan laitos OHJ-1151 Ohjelmointi IIe Harjoitustyö Tomaattisota Välipalautus / Loppudokumentaatio Assistentin nimi Välipalautusaika (päivä ja kellonaika) ja

Lisätiedot

Algoritmit 2. Luento 8 Ke 13.4.2016. Timo Männikkö

Algoritmit 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ätiedot

Oletetaan, että funktio f on määritelty jollakin välillä ]x 0 δ, x 0 + δ[. Sen derivaatta pisteessä x 0 on

Oletetaan, että funktio f on määritelty jollakin välillä ]x 0 δ, x 0 + δ[. Sen derivaatta pisteessä x 0 on Derivaatta Erilaisia lähestymistapoja: geometrinen (käyrän tangentti sekanttien raja-asentona) fysikaalinen (ajasta riippuvan funktion hetkellinen muutosnopeus) 1 / 13 Derivaatan määritelmä Määritelmä

Lisätiedot

Aluksi. 2.1. Kahden muuttujan lineaarinen epäyhtälö

Aluksi. 2.1. Kahden muuttujan lineaarinen epäyhtälö Aluksi Matemaattisena käsitteenä lineaarinen optimointi sisältää juuri sen saman asian kuin mikä sen nimestä tulee mieleen. Lineaarisen optimoinnin avulla haetaan ihannearvoa eli optimia, joka on määritelty

Lisätiedot

Induktio kaavan pituuden suhteen

Induktio kaavan pituuden suhteen Induktio kaavan pituuden suhteen Lauselogiikan objektikieli määritellään kurssilla Logiikka 1B seuraavasti: 1. Lausemuuttujat p 1, p 2, p 3,... ovat kaavoja. 2. Jos A on kaava, niin A on kaava. 3. Jos

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna

Lisätiedot

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Sähköpostiohjeet. Tehokas ja huoleton sähköposti Sähköpostiohjeet 1 Uuden PST tiedoston luominen sähköposteille... 3 Tärkeää!... 3 Tiedoston luominen... 3 Kansioiden luominen datatiedostoon... 5 Pikatoimintojen luominen... 8 Odottaa vastausta allekirjoitus...

Lisätiedot

Matematiikan tukikurssi 3.4.

Matematiikan tukikurssi 3.4. Matematiikan tukikurssi 3.4. Neliömuodot, Hessen matriisi, deiniittisyys, konveksisuus siinä tämän dokumentin aiheet. Neliömuodot ovat unktioita, jotka ovat muotoa T ( x) = x Ax, missä x = (x 1,, x n )

Lisätiedot

MAA10 HARJOITUSTEHTÄVIÄ

MAA10 HARJOITUSTEHTÄVIÄ MAA0 Määritä se funktion f: f() = + integraalifunktio, jolle F() = Määritä se funktion f : f() = integraalifunktio, jonka kuvaaja sivuaa suoraa y = d Integroi: a) d b) c) d d) Määritä ( + + 8 + a) d 5

Lisätiedot

Käyttöjärjestelmät: Virtuaalimuisti

Käyttöjärjestelmät: Virtuaalimuisti Käyttöjärjestelmät: Virtuaalimuisti Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Muistinhallinta

Lisätiedot

Massaeditorikoulutus 8.12.2015. KANSALLISKIRJASTO - Kirjastoverkkopalvelut

Massaeditorikoulutus 8.12.2015. KANSALLISKIRJASTO - Kirjastoverkkopalvelut Massaeditorikoulutus 8.12.2015 Massaeditoinnin toimintaperiaate Kokoelman tai hakutuloksen tietueet (itemit) voidaan eksportoida CSV-tiedostona omalle työasemalle taulukkomuodossa CSV:tä muokataan Libre/OpenOfficen

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 3. Listankäsittelyä. 3.1 Listat Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat

Lisätiedot

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä. .. Käänteisunktio.. Käänteisunktio Mikäli unktio : A B on bijektio, niin joukkojen A ja B alkioiden välillä vallitsee kääntäen yksikäsitteinen vastaavuus eli A vastaa täsmälleen yksi y B, joten myös se

Lisätiedot

EUROOPAN YHTEISÖJEN KOMISSIO. Ehdotus: NEUVOSTON ASETUS. neljännesvuosittaista julkista velkaa koskevien tietojen laatimisesta ja toimittamisesta

EUROOPAN YHTEISÖJEN KOMISSIO. Ehdotus: NEUVOSTON ASETUS. neljännesvuosittaista julkista velkaa koskevien tietojen laatimisesta ja toimittamisesta EUROOPAN YHTEISÖJEN KOMISSIO Bryssel 9.12.2003 KOM(2003) 761 lopullinen 2003/0295 (CNS) Ehdotus: NEUVOSTON ASETUS neljännesvuosittaista julkista velkaa koskevien tietojen laatimisesta ja toimittamisesta

Lisätiedot

Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun

Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun 1. Kirjaudu IRMAan suunnistajana. 2. Valitse kilpailukalenterista se kilpailu, johon haluat ilmoittautua ja paina Ilmoittaudu. Vain niihin

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Esimerkki 8. Ratkaise lineaarinen yhtälöryhmä. 3x + 5y = 22 3x + 4y = 4 4x 8y = 32. 3 5 22 r 1 + r 3. 0 13 26 4 8 32 r 3 4r 1. LM1, Kesä 2014 47/68

Esimerkki 8. Ratkaise lineaarinen yhtälöryhmä. 3x + 5y = 22 3x + 4y = 4 4x 8y = 32. 3 5 22 r 1 + r 3. 0 13 26 4 8 32 r 3 4r 1. LM1, Kesä 2014 47/68 Esimerkki 8 Ratkaise lineaarinen yhtälöryhmä 3x + 5y = 22 3x + 4y = 4 4x 8y = 32. 3 5 22 r 1 + r 3 3 4 4 4 8 32 1 3 10 0 13 26 4 8 32 r 3 4r 1 1 3 10 3 4 4 r 2 3r 1 4 8 32 1 3 10 0 13 26 r 2 /13 0 4 8

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin 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ätiedot

Esimerkkejä derivoinnin ketjusäännöstä

Esimerkkejä derivoinnin ketjusäännöstä Esimerkkejä derivoinnin ketjusäännöstä (5.9.008 versio 1.0) Esimerkki 1 Määritä funktion f(x) = (x 5) derivaattafunktio. Funktio voidaan tulkita yhdistettynä funktiona, jonka ulko- ja sisäfunktiot ovat

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Lisätiedot

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ TWEAV510: WDSTOIMINTO KAHDEN TWEAV510 LAITTEEN VÄLILLÄ Alla kaksi vaihtoehtoista ohjetta WDSverkon luomiseksi Ohje 1: WDSyhteys käyttää WPAsalausta. Tässä ohjeessa WDSyhteys toimii vain, kun tukiasema

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

Funktion raja-arvo 1/6 Sisältö ESITIEDOT: reaalifunktiot

Funktion raja-arvo 1/6 Sisältö ESITIEDOT: reaalifunktiot Funktion raja-arvo 1/6 Sisältö Esimerkki funktion raja-arvosta Lauseke f() = 1 cos määrittelee reaauuttujan reaaliarvoisen funktion f, jonka lähtöjoukko muodostuu nollasta eroavista reaaliluvuista. Periaatteessa

Lisätiedot

Optimointi. Etsitään parasta mahdollista ratkaisua annetuissa olosuhteissa. Ongelman mallintaminen. Mallin ratkaiseminen. Ratkaisun analysointi

Optimointi. Etsitään parasta mahdollista ratkaisua annetuissa olosuhteissa. Ongelman mallintaminen. Mallin ratkaiseminen. Ratkaisun analysointi Optimointi Etsitään parasta mahdollista ratkaisua annetuissa olosuhteissa Ongelman mallintaminen Mallin ratkaiseminen Ratkaisun analysointi 1 Peruskäsitteitä Muuttujat: Sallittu alue: x = (x 1, x 2,...,

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut

Lisätiedot

Algoritmit 2. Luento 8 To Timo Männikkö

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

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

811120P Diskreetit rakenteet

811120P 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ätiedot

Muita linkattuja rakenteita

Muita linkattuja rakenteita 1 Muita linkattuja rakenteita Johdanto Aikaisemmin on käsitelty listan, jonon ja pinon toteutus dynaamisesti linkattuna rakenteena. Dynaamisella linkkauksella voidaan toteuttaa mitä moninaisimpia rakenteita.

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

Lisätiedot

11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa

11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa 11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa Tilavuusdatan katseluprosessi on käsitteellisesti yksinkertaista. Se pitää sisällään tilavuuden kierron katselusuuntaan ja sitten säteen

Lisätiedot

Johdatus yliopistomatematiikkaan, 2. viikko (2 op)

Johdatus yliopistomatematiikkaan, 2. viikko (2 op) Johdatus yliopistomatematiikkaan, 2. viikko (2 op) Jukka Kemppainen Mathematics Division Yhtälöt ja epäyhtälöt Jokainen osaa ratkaista ensimmäisen asteen yhtälön ax + by + c = 0. Millä parametrien a, b

Lisätiedot

Numeeriset menetelmät

Numeeriset menetelmät Numeeriset menetelmät Luento 1 Ti 6.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 1 Ti 6.9.2011 p. 1/28 p. 1/28 Numeriikan termejä Simulointi: Reaalimaailman ilmiöiden jäljitteleminen (yleensä)

Lisätiedot

Racket ohjelmointia I

Racket ohjelmointia I Racket ohjelmointia I Tiina Partanen 2015 Sisältö 1) Racket-kieli ja DrRacket 1.1 DrRacket esivalmistelut 1.2 Peruslaskutoimitukset 2) Piirtotyökalut 2.1 Peruskuvioiden piirtäminen 2.2 Määrittelyt (define)

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta Integrointi Integrointi on erivoinnin käänteistoimitus: jos funktion F(x) erivaatta on f (x), niin funktion f (x) integraali on F(x). Täten, koska esimerkiksi funktion

Lisätiedot

Teen koko ajan aktiivista mainontaa Googlessa. Tavoite on olla etusivulla, kun haetaan henkisiä tapahtumia, kursseja, yrittäjiä.

Teen koko ajan aktiivista mainontaa Googlessa. Tavoite on olla etusivulla, kun haetaan henkisiä tapahtumia, kursseja, yrittäjiä. 1 Palvelut ja Hinnasto 4.3.2016 Palvelut Ilmaisia sivuja ovat Tapahtumakalenteri, Yrityksiä ja Vuokrattavia tiloja. Näillä sivuilla on lomakkeet, joilla saat tapahtuman ja yrityksesi sivuille. Valokeilassa

Lisätiedot

JOENSUUN SEUDUN HANKINTATOIMI KOMISSIOMALLI 28.03.2014

JOENSUUN SEUDUN HANKINTATOIMI KOMISSIOMALLI 28.03.2014 JOENSUUN SEUDUN HANKINTATOIMI KOMISSIOMALLI 28.03.2014 KOMISSIO Komissio otetaan käyttöön kaikissa kilpailutuksissa, joiden hankintakausi alkaa 1.1.2012 tai sen jälkeen Raha liikkuu Joensuun seudun hankintatoimen

Lisätiedot

30 + x. 15 + 0,5x = 2,5 + x 0,5x = 12,5 x = 25. 27,5a + 27,5b = 1,00 55 = 55. 2,5a + (30 2,5)b (27,5a + 27,5b) = 45 55.

30 + x. 15 + 0,5x = 2,5 + x 0,5x = 12,5 x = 25. 27,5a + 27,5b = 1,00 55 = 55. 2,5a + (30 2,5)b (27,5a + 27,5b) = 45 55. RATKAISUT, Insinöörimatematiikan koe 1.5.201 1. Kahdessa astiassa on bensiinin ja etanolin seosta. Ensimmäisessä astiassa on 10 litraa seosta, jonka tilavuudesta 5 % on etanolia. Toisessa astiassa on 20

Lisätiedot

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Lue ohjeet huolellisesti ennen laitteen käyttöä. 1 Väliaikaisen tallennuskansion käyttö Lue ohjeet huolellisesti ennen laitteen käyttöä. Kun skannaat kuvia, dioja, asiakirjoja jne. sekä digitoit LP-levyjä tai C-kasetteja, sinulla on mahdollisuus tallentaa

Lisätiedot

Merkintöjen tekeminen pohjakuvaan Libre Officella v.1.2

Merkintöjen tekeminen pohjakuvaan Libre Officella v.1.2 v.1.2 Tämän ohjeen avulla voit piirtää omia merkintöjäsi olemassa olevan pohjakuvan päälle. Ohje on tehty käyttäen LibreOfficen versiota 5.0, mutta se toimii melko hyvin myös vanhempien versioiden kanssa.

Lisätiedot

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

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ätiedot

Ravintovartti, teemana lautasmalli

Ravintovartti, teemana lautasmalli Ravintovartti, teemana lautasmalli Ravintovartin tavoite ja toteutus Ravintovartin tavoitteena on tutustua lautasmalliin. Vartti sisältää lautasmallin lyhyen esittelyn, jonka jälkeen jokainen piirtää lautasmallin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim.

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim. Projektityö olioista. Projektityön ohjeistus: - Jokainen valitsee vain yhden aiheen projektityökseen. Projektityön tarkoitus on opetella tekemään hieman isompi, toimiva ohjelma olioita käyttäen. Ohjelmakoodi

Lisätiedot

Moodle HOPS-työskentelyn tukena

Moodle HOPS-työskentelyn tukena Moodle HOPS-työskentelyn tukena Ohjeita alueen tilaamiseen Tilatessasi Moodle-aluetta HOPS-ryhmällesi, voit tilata täysin tyhjän alueen, jonne rakennat itse kaikki tarvittavat työkalut ja materiaalit.

Lisätiedot

E-kirjat. ja uusi Ellibsin käyttöliittymä

E-kirjat. ja uusi Ellibsin käyttöliittymä E-kirjat ja uusi Ellibsin käyttöliittymä Miksi e-kirja? Tablettien yleistyessä luettavat kirjat kulkevat kätevästi mukana Tekstin kokoa voi säätää oman mieltymyksen mukaisesti, fonttiakin voi halutessaan

Lisätiedot

Merkkien ja merkkijonojen käsittelyä Javalla

Merkkien ja merkkijonojen käsittelyä Javalla 1 Merkkien ja merkkijonojen käsittelyä Javalla char String Merkkijonon lukeminen käyttäjältä String-luokan metodeja matches-metodi ja esimerkkejä säännöllisistä lausekkeista (engl. regular expressions)

Lisätiedot

TILASTOLLINEN LAADUNVALVONTA

TILASTOLLINEN LAADUNVALVONTA 1 Aki Taanila TILASTOLLINEN LAADUNVALVONTA 31.10.2008 2 TILASTOLLINEN LAADUNVALVONTA Tasalaatuisuus on hyvä tavoite, jota ei yleensä voida täydellisesti saavuttaa: asiakaspalvelun laatu vaihtelee, vaikka

Lisätiedot

Racket ohjelmointia. Tiina Partanen 2014

Racket ohjelmointia. Tiina Partanen 2014 Racket ohjelmointia Tiina Partanen 2014 Sisältö 1) Peruslaskutoimitukset 2) Peruskuvioiden piirtäminen 3) Määrittelyt (define) 4) Yhdistettyjen kuvien piirtäminen 5) Muuttujat ja funktiot 6) Animaatiot

Lisätiedot

(x 0 ) = lim. Derivoimissääntöjä. Oletetaan, että funktiot f ja g ovat derivoituvia ja c R on vakio. 1. Dc = 0 (vakiofunktion derivaatta) 2.

(x 0 ) = lim. Derivoimissääntöjä. Oletetaan, että funktiot f ja g ovat derivoituvia ja c R on vakio. 1. Dc = 0 (vakiofunktion derivaatta) 2. Derivaatta kuvaa funktion hetkellistä kasvunopeutta. Geometrisesti tulkittuna funktion derivaatta kohdassa x 0 on funktion kuvaajalle kohtaan x 0 piirretyn tangentin kulmakerroin. Funktio f on derivoituva

Lisätiedot

Diskreetit rakenteet

Diskreetit rakenteet Diskreetit rakenteet 811120P 5 op 7. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1 Mikä on verkko? verkko (eli graafi) koostuu solmuista ja väleistä, jotka yhdistävät solmuja

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Lisätiedot

Helmi-koulutus Tuen lomakkeet

Helmi-koulutus Tuen lomakkeet Helmi-koulutus Tuen lomakkeet Anna-Riikka Kivikoski Marika Korpinurmi 1 Tampere siirtyy sähköisiin lomakkeisiin syksyllä 2016 Helmi-toiminnanohjausjärjestelmässä avataan henkilökunnan käyttöön 31.8. sähköiset

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

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

Lisätiedot

Miten yliopiston teoriaopetus vastaa harjoittelussa tarvittaviin taitoihin? Opetusapteekkien neuvottelupäivä 23.4.2014 Liisa Niemi

Miten yliopiston teoriaopetus vastaa harjoittelussa tarvittaviin taitoihin? Opetusapteekkien neuvottelupäivä 23.4.2014 Liisa Niemi Miten yliopiston teoriaopetus vastaa harjoittelussa tarvittaviin taitoihin? Opetusapteekkien neuvottelupäivä 23.4.2014 Liisa Niemi Olen 3. vuoden proviisoriopiskelija, opiskellut v. 2011-2014 Kerron vanhasta

Lisätiedot

1 / 11. Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto. Pikaopas Maxwelliin. ARK-A2500 DA-alkeet Elina Haapaluoma, Heidi Silvennoinen Syksy 2015

1 / 11. Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto. Pikaopas Maxwelliin. ARK-A2500 DA-alkeet Elina Haapaluoma, Heidi Silvennoinen Syksy 2015 1 / 11 Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto Pikaopas Maxwelliin Miksi Maxwell? 2 / 11 Enemmän säätövaraa kuin Brazilissa. Varsinkin jos on harrastanut valokuvausta, Maxwell voi olla hyvä

Lisätiedot

Lyhyt kertaus osoittimista

Lyhyt kertaus osoittimista , syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin

Lisätiedot

Kenguru 2016 Mini-Ecolier (2. ja 3. luokka) Ratkaisut

Kenguru 2016 Mini-Ecolier (2. ja 3. luokka) Ratkaisut sivu 1 / 11 TEHTÄVÄ 1 2 3 4 5 6 VASTAUS E B C D D A TEHTÄVÄ 7 8 9 10 11 12 VASTAUS E C D C E C TEHTÄVÄ 13 14 15 16 17 18 VASTAUS A B E E B A sivu 2 / 11 3 pistettä 1. Anni, Bert, Camilla, David ja Eemeli

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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:

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

Hae Opiskelija käyttöohje

Hae Opiskelija käyttöohje Hae Opiskelija käyttöohje Yleistä Hae Opiskelija hakuikkunan toiminto on uudistettu tavoitteena saada selkeämpi ja helppokäyttöisempi rakenne. Käyttäjä valitsee ensin, kumpaa hakua haluaa käyttää, Perushaku

Lisätiedot

Tarjoajalla on oltava hankinnan kohteen laatu ja laajuus huomioon ottaen kokemusta seuraavilla alueilla:

Tarjoajalla on oltava hankinnan kohteen laatu ja laajuus huomioon ottaen kokemusta seuraavilla alueilla: Kysymykset ja vastaukset 1 (5) Avainkumppanin hankinta johtamisen kehittämisen projektiin Espoon kaupungin hankintapalveluun saapui kysymyksiä koskien Avainkumppanin hankinta johtamisen kehittämisen projektiin

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta 22. Taulukot 22.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.2 Yleistä

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

( ) ( ) ( ) ( ( ) Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 271 Päivitetty 19.2.2006. 701 a) = keskipistemuoto.

( ) ( ) ( ) ( ( ) Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 271 Päivitetty 19.2.2006. 701 a) = keskipistemuoto. Pyramidi Analyyttinen geometria tehtävien ratkaisut sivu 7 Päivitetty 9..6 7 a) + y = 7 + y = 7 keskipistemuoto + y 7 = normaalimuoto Vastaus a) + y = ( 7 ) + y 7= b) + y+ 5 = 6 y y + + = b) c) ( ) + y

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Asia T-237/00. Patrick Reynolds vastaan Euroopan parlamentti

Asia T-237/00. Patrick Reynolds vastaan Euroopan parlamentti Asia T-237/00 Patrick Reynolds vastaan Euroopan parlamentti Henkilöstö Tilapäinen siirto muihin tehtäviin yksikön edun mukaisesti Henkilöstösääntöjen 38 artikla Poliittinen ryhmä Siirron ennenaikainen

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 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ätiedot

Web-teknologiat. XML-datan kysely Topi Sarkkinen

Web-teknologiat. XML-datan kysely Topi Sarkkinen Web-teknologiat XML-datan kysely Topi Sarkkinen Sisältö XML (lyhyesti) XPath XQuery XSLT XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä

Lisätiedot

SMG-4200 Sähkömagneettisten järjestelmien lämmönsiirto Ehdotukset harjoituksen 4 ratkaisuiksi

SMG-4200 Sähkömagneettisten järjestelmien lämmönsiirto Ehdotukset harjoituksen 4 ratkaisuiksi SMG-400 Sähkömaneettisten järjestelmien lämmönsiirto Ehdotukset harjoituksen 4 ratkaisuiksi Jatkuvuustilan D-lämpötilajakauma: differenssimenetelmä Differenssimenetelmän käyttämen lämpötehtävien ratkaisemiseen

Lisätiedot

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

Lisätiedot

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta TW-EAV510: VALVONTAKAMERAN KYTKEMINEN VERKKOON OPERAATTORIN IP-OSOITE - Jotta valvontakameran käyttöä varten saadaan avattua tarvittavat portit, pitää operaattorilta saada julkinen IP-osoite, jotta kaikki

Lisätiedot

Tietorakenteet, laskuharjoitus 3, ratkaisuja

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

Lisätiedot

TimeEdit henkilökunnan ohje

TimeEdit henkilökunnan ohje TIMEEDIT-OHJE 1 (13) TimeEdit henkilökunnan ohje TIMEEDIT WEB... 2 TYÖJÄRJESTYKSET... 2 TYÖJÄRJESTYKSET NÄKYMÄT JA HAKUEHDOT... 4 VARAA TILA... 5 VARAA AUTO... 6 NÄYTÄ OMAT VARAUKSET... 6 TEE POISSAOLOILMOITUS...

Lisätiedot

Laboratoriotyön sisältö. Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti (1 raportti/työ)

Laboratoriotyön sisältö. Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti (1 raportti/työ) Päällystyksen ja pintakäsittelyn kemiaa laboratoriotyöt kevät 2012 n. 15 h labratyöskentelyä Laboratoriotyön sisältö Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti

Lisätiedot