Pelin tekoäly. Aleksi Vuorela IIO14S1. Tietorakenteet ja algoritmit harjoitustyö Joulukuu 2015

Save this PDF as:
 WORD  PNG  TXT  JPG

Koko: px
Aloita esitys sivulta:

Download "Pelin tekoäly. Aleksi Vuorela IIO14S1. Tietorakenteet ja algoritmit harjoitustyö Joulukuu 2015"

Transkriptio

1 Pelin tekoäly Aleksi Vuorela IIO14S1 Tietorakenteet ja algoritmit harjoitustyö Joulukuu 2015 Ohjelmistotekniikan koulutusohjelma Tekniikan ja liikenteen ala

2 1 1 Johdanto Harjoitustyön aiheena oli tutustua pelin tekoälyn toteuttamiseen vaadittaviin tietorakenteisiin ja algoritmeihin. Tein olio-ohjelmointi 2 kurrsin harjoitustyönä oman pelin C++ ohjelmointikielellä ja toteutin tekoälyn tähän peliin. Pelini on ylhäältäpäin kuvattu toimintapeli tai käytännössä ammuntapeli jonka kenttä rakentuu tiilistä. Tarkemmin tekemäni peli on käsitelty olio-ohjelmointi 2 kurssin harjoitustyöni dokumentaatiossa: Tekoäly oli siis tarkoitus tehdä pelin vihollisille eli zombeille, jotka yrittävät tietysti tappaa pelaajan. Lähdin miettimään pelini kannalta kaikista tärkeimpiä ominaisuuksia mitä tekoälyltä halusin ja kolme keskeistä asiaa nousi pinnalle. Kaikista tärkein asia oli, että vihollisilla olisi erilaisia tiloja, joiden välillä siirrytään vihollisen havaintojen perusteella. Vihollinen käyttäytyisi tietysti eri tavalla riippuen siitä, missä tilassa se on. Tähän ratkaisuksi löytyi finite state machine eli äärellinen tilakone niminen tekniikka. Toinen keskeinen asia pelini kannalta oli se, että viholliset eivät näkisi pelaajaa pelikentän seinien läpi. Tähän avuksi löytyi Bresenhamin algoritmi. Viimeinen asia oli jo kurssilta tutuksi tullut lyhimmän reitin etsiminen eli etsitään lyhin reitti vihollisen sijainnista pelaajan luokse. Tähän käytin A*-algoritmia. Näillä tekniikoilla sain aikaiseksi pelini vihollisille simppelin tekoälyn ja seuraavissa luvuissa käsittelen kunkin kyseisistä tekniikoista sekä selitän, kuinka ohjelmoin ne C++ ohjelmointikielellä.

3 2 2 Finite state machine Finite state machine on yksi eniten käytetyistä tekoälytekniikoista peleissä. Tilakone koostuu äärellisestä määrästä tiloja, joiden välillä on tilasiirtymiä. Pelien tekoälyssä käytetään termiä agentti oliosta, joka tekee havaintoja pelimaailmasta ja suorittaa itsenäisesti niistä riippuvia toimintoja. Kun jatkossa käytän termiä agentti, se tarkoittaa siis pelin vihollista eli zombia. Pelissäni tilasiirtymät aiheutuvat agentin havainnoista. Agentin käyttäytyminen määräytyy tilakoneen tilan mukaan. Tilakoneessani on kolme eri tilaa: normal, alert ja evasion. Normal-tila on oletustila, josta kaikki agentit aloittavat. Tässä tilassa agentti vain seisoskelee paikallaan odotellen jostain havainnosta aiheutuvaa tilasiirtymää. Alert-tilaan siirrytään, kun agentti havaitsee pelaajan. Havaitsemiseen on kaksi ehtoa: pelaajan on ensinnäkin oltava näköetäisyydellä, ja toiseksi näköyhteyttä ei voi estää mikään, esimerkiksi seinä. Tämä näköyhteyden testaaminen tehdään Bresenhamin algoritmilla, josta lisää myöhemmässä luvussa. Mikäli pelaaja on tarpeeksi lähellä ja mikään ei estä näkemistä, siirrytään alert-tilaan. Tässä tilassa agentti yrittää jatkuvasti päästä pelaajan lähelle hyökkäys etäisyydelle. Mikäli agentti on tarpeeksi lähellä pelaajaa, se hyökkää ja pelaaja menettää terveyspisteitä. Evasion-tilaan siirrytään silloin, jos alert-tilan aikana agentti menettää näköyhteyden pelaajaan, esimerkiksi kun pelaaja piiloutuu seinän taakse tai pääsee liian kauas pakoon. Tässä tilassa aluksi kirjataan ylös pelaajan viimeisin tunnettu sijainti ja mennään sinne. Viimeisimmän sijainnin ympäriltä etsitään pelaajaa jonkin aikaa, ja mikäli pelaajaa ei löydetä, siirrytään normal-tilaan. Jos pelaaja löydetään, palataan takaisin alert-tilaan. Seuraavalla sivulla on kuvassa 1 esitetty tilakaavio, joka havainnollistaa tiloja ja siirtymiä niiden välillä.

4 3 Kuva 1. Tilakaavio. Tilakoneen toteuttamiseen on monia vaihtoehtoja, mutta tämän homman kannalta parhaaksi vaihtoehdoksi katsoin stack-based finite state machinen eli pinorakenteeseen pohjautuvan äärellisen tilakoneen. Pino tietorakenne on jo kurssilta tuttu käsite, ja tässä sitä pystyi hyödyntämään nerokkaasti käytännössä. Pinon päällimmäisenä on siis sen hetkinen aktiivinen tila, jonka perusteella tehdään jotain toimintoja. Kun tilasiirtymä tapahtuu, esimerkiksi normal- ja alert-tilan välillä, lyödään uusi tila (alert) pinon päällimmäiseksi, jolloin siitä tulee sen hetkinen aktiivinen tila. Jos halutaan siirtyä aikaisempaan tilaan, esimerkiksi ollaan evasiontilassa ja löydetään pelaaja, voidaan pinon päällimäinen tila (evasion) heittää pois, jolloin edellinen tila (alert) tulee taas aktiiviseksi. Pino rakenteen avulla tilojen hallinta saadaan siis hyvin simppeliksi ja vain yksi tila voi olla aktiivinen kerrallaan, mikä on koko finite state machinen idea!

5 4 Toteutus C++:lla Sitten koko homman varsinaiseen toteutukseen C++:lla. En nyt lähde kaikkea koodia avaamaan tässä tarkasti, sillä tämä ei ole ohjelmoinnin kurssi, vain keskeiset asiat finite state machinen toiminnan kannalta. Kuva 2. Keskeiset funktiot ja muuttujat. Kuvassa 2 esitellään Enemy header-tiedostossa olevien keskeisten funktioiden ja muuttujien nimet sekä kommentit siitä, mitä ne tekevät. Kuvan ylimmässä kohdassa näkyvät siis tilakoneen eri tilat tallennettuna enum luokkaan nimeltä State. Updatefunktiota kutsutaan jokaisella framella, joka siis päivittää agenttia kokoajan. Tämä on varmasti finite state machinen toiminnan kannalta kaikkein tärkein funktio, joten katsotaan sen toteutusta tarkemmin seuraavalla sivulla. Seuraavaksi tulevat eri tiloille ominaiset funktiot eli idle, attack ja search. Idlefunktiota kutsutaan kun aktiivinen tila on normal, attackia kun tila on alert ja searchia kun tila on evasion. Funktio getcurrentstate kertoo sen hetkisen aktiivisen tilan. Viimeisenä on pino nimeltä statestack, jonne siis tilat tallennetaan ja pinon päällimmäinen elementti on sen hetkinen aktiivinen tila. Kuten huomataan, C++:ssa on pino tietorakenne jo valmiiksi toteutettu standardikirjastossa, joten sitä ei onneksi tarvitse itse koodata.

6 5 Kuva 3. Update-funktio. Sitten update-funktiosta tarkemmin. Se tsekkaa aina aluksi etäisyyden pelaajan ja agentin välillä sekä piirtää viivan Bresenhamin algoritmilla, jonka avulla testataan ettei mikään ole estämässä näköyhteyttä pelaajaan, tämän toteutuksesta seuraavassa luvussa. Seuraavaksi tulee switch-rakenne, jossa aluksi katsotaan mikä tila on tällä hetkellä aktiivinen getcurrentstate-funktiolla. Aktiivisen tilan perusteella kutsutaan joko idle-, attack- tai search-funktiota. Esimerkiksi jos aktiivinen tila on normal, kutsutaan idle-funktiota joka näyttää seuraavalta. Kuva 4. Idle-funktio.

7 6 Idle-funktiossa aluksi katsotaan, onko pelaaja näköetäisyydellä ja nähdäänkö häntä (eli mikään ei estä näköyhteyttä, checklos niminen funktio). Mikäli nämä ehdot toteutuvat, pelaaja on nähty, jolloin pinoon statestack pusketaan päällimmäiseksi elementiksi alert-tila. Nyt kun seuraavalla framella update-funktio pyörähtää alusta taas, agentin tilaksi muuttuu alert ja kutsutaan attack-funktiota. Jos taas ehdot eivät toteudu, eli pelaaja on liian kaukana tai seinän takana, agentti ei tee mitään muuta kuin seisoskelee paikallaan sillä tekoäly on (vielä) hyvin simppeli ja tyhmä. Kuten aiemmin totesin, finite state machinet ovat yksi eniten käytetyistä tekoälytekniikoista peleissä, ja niiden avulla saadaan aikaiseksi hyvinkin monimutkaisia kokonaisuuksia. Alla olevassa kuvassa 5 on esitelty vanhan klassikko pelin Quaken (1996) Shambler hirviön tilakone, joka on toteutettu täysin samalla tavalla, mutta siinä on lisäksi käytetty alemman tason tilakoneita, eli Attack State ja Melee Attack jakautuvat alitiloihin. Kuva 5. Quaken Shambler hirviön tilakone.

8 7 3 Bresenhamin algoritmi Toinen keskeinen asia pelini kannalta oli se, että agentit eivät näkisi pelaajaa pelikentän seinien läpi. Tähän avuksi löytyi Bresenhamin algoritmi. Homman ideana on siis piirtää jana pelaajan ja agentin välille Bresenhamin algoritmin avulla ja katsoa, ettei mikään janan pisteistä osu esteeseen, kuten seinään. Janaa ei kannata piirtää tavallisen suoran yhtälön y = kx + b mukaan, koska laskemisessa tarvitaan silloin runsaasti prosessoriaikaa vieviä kertolaskuja. DDA-algoritmi käyttää kertolaskujen tilalla yhteenlaskuja. DDA-algotimin heikkous on kuitenkin siinä, että sitä käytettäessä joudutaan tekemään jatkuvasti pyöristyksiä. Parempi vaihtoehto janan piirtämiseksi on Bresenhamin algoritmi, joka käyttää pelkästään kokonaislukuaritmetiikkaa. Algoritmi on vanha, vuodelta 1962 peräisin, mutta sitä käytetetään yhä paljon grafiikkaohjelmoinnissa vaikka monia uusia, moderneja algoritmejä on kehitetty, sillä se on nopea ja yksinkertainen. Sitä voidaankin pitää grafiikkaohjelmoinnin alkeisoperaationa. Algoritmin perusideana on iteroida janan x- ja y-komponenteista pidempää ja korottaa sopivin välein piirtokorkeutta. Sopiva väli ei ole kokonaisluku, joten murtolukua simuloidaan virhemuuttujan avulla. Enempää on varmaan turha selittää, sillä se menee enemmän matematiikan puolelle, mutta yksinkertaistettuna lasketaan kokonaislukujen jakolaskua dy/dx. Algoritmi löytyy valmiiksi toteutettuna netistä joka ikiselle ohjelmointikielelle, ja pienellä soveltamisella sain sen omaan peliinikin toimimaan. Kooditasolla janan piirtämistä on varmaan turha alkaa tarkemmin käymään läpi, mutta oleellinen pointti on tekemäni checklos (check line of sight) funktio.

9 8 Kuva 6. Check line of sight funktio. Bresenhamin algoritmilla siis lasketaan omassa funktiossaan janan kaikkien pisteiden koordinaatit, ja ne tallennetaan vektoriin nimeltä points. For-loopissa käydään sitten jokainen janan pisteistä läpi, ja katsotaan levelin toucheswall-funktiolla, osuuko mikään janan pisteistä pelikentän seiniin. Tämän tuloksena siis tiedetään, onko näköyhteyden tiellä seinää estämässä. Bresenhamin algoritmi toimii hyvin line of sightin toteuttamiseen simppeleissä, ylhäältäpäin kuvatuissa peleissä, mutta esimerkiksi 3D-peleissä tarvitaan hyvinkin monimutkaisia menetelmiä line of sightin toteuttamiseen. 4 A*-algoritmi A*-algoritmi on kaikkein suosituin lyhimmän reitin hakualgoritmi pelien tekoälyssä. Se yhdistää kurssilta tutuksi tulleen Dijkstran algoritmin sekä greedy best-first searchin parhaimmat puolet, joka johtaa parhaimpaan tulokseen kun etsitään lyhintä reittiä yhteen kohteeseen. Dijkstran algoritmi toimii hyvin lyhimmän reitin löytämiseen, mutta kuluttaa turhaan resursseja etsiessään reitin kaikkiin mahdollisiin solmuihin, myös sellaisiin, jotka eivät vaikuta lupaavilta lyhimmän reitin kannalta päämäärään. Greedy best-first search taas toimii siten, että tehdään funktio, joka laskee jatkuvasti kuinka kaukana päämäärästä ollaan, ja priorisoidaan niitä reittejä, jotka ovat lähempänä päämäärää. Tämä on kaikista nopein tapa, jos kentässä ei ole mitään esteitä, kuten seiniä. Ongelma tässä tulee tietysti siinä, jos reitillä vastaan tulee jokin este ja joudutaan lähteä etsimään kiertotietä.

10 9 A*-algoritmi käyttää hyödykseen näitä molempia: Dijkstran tapaa laskea lyhin reitti lähtösolmusta ja greedy best-first searchin tapaa priorisoida reittejä, jotka ovat lähimpänä päämäärää. Kuva 7. Dijkstra vs greedy best-first vs A*.

11 10 Kuten kuvasta 7 nähdään hyvin, A* etsii lyhintä reittiä aluksi vain siltä alueelta, joka on lähimpänä päämäärää ja laskee lyhimmän reitin lähtösolmusta päämäärään. Haku aluetta kasvatetaan kauemmaksi päämäärästä, jos reittiä ei löydetä lähialueelta esteen takia, mutta kaikissa mahdollisissa solmuissa ei käydä turhaan, kuten Dijkstran algoritmissa, joten lyhin reitti löydetään paljon nopeammin. Valitettavasti en kerennyt vielä toteuttaa peliini A*-algoritmia C++:lla, sillä sen koodaamisessa on melkoinen työ. Se on kyllä hyvin jo vauhdissa, mutta kooditasolla on tullut törmättyä ongelmallisiin tilanteisiin. 5 Yhteenveto Aluksi harjoitustyön piti käsitellä pelkästään finite state machineja, mutta asia oli hyvin mielenkiintoista ja tuli innostuttua vähän liikaa, tunteja vierähti melkoisesti. Paljon enemmän aikaahan tässä meni asioiden toteuttamiseen kooditasolla omaan peliini kuin algoritmien toimintaan perehtymiseen. Aion varmasti saada peliini A*- algoritmin toimintakuntoon vapaa-ajallani ja tulen parantelemaan tekoälyä uusilla ominaisuuksilla. Minulla on jo paljon ideoita, esimerkiksi: kun vihollinen huomaa pelaajan, se hälyttää myös muut lähialueella olevat viholliset, vihollinen kuulisi askelten äänistä jos pelaaja lähestyy takaapäin tai jos se kuulisi ammuskelua lähettyvillä, ennalta-arvattavuuden parantamista, uusia tiloja, kokonaan uudenlaisia, uniikkeja tekoälyjä eri tyyppisille vihollisille kuten pomo taisteluille. Tulen päivittelemään peliäni GitHubiin aina kun saan siihen jotain uutta esittely kuntoon. Lopuksi laitan vielä linkin videoon, josta näkee tekoälyn toiminnassa pelissäni (videon toimivuus testattu vain Chromella):

12 11 Lähteet 1. Tekoäly tietokonepeleissä. Tampereen teknillisen yliopiston luentokalvot. Viitattu Bevilacqua, F Finite-State Machines: Theory and Implementation. Artikkeli sivustolla Tuts+. Viitattu Nystrom, R Game Programming Patterns. Genever Benning. 4. Bresenhamin algoritmi. Artikkeli Wikipediassa. Viitattu Https://fi.wikipedia.org/wiki/Bresenhamin_algoritmi. 5. Savioja, L Viivan toteutus. TKK:n luentokalvot. Viitattu /2007/lectures/tg2c_viivantoteutus.pdf. 6. Introduction to A*. Artikkeli sivustolla Red Blob Games. Liitteet Https://github.com/vuoale/GHOST.git Lähdekoodit ovat luettavissa varmaan helpommin GitHub repostani kuin että alkaisin koodeja tähän raporttiin laittamaan. Keskeiset koodit tekoälyn kannalta löytyvät GHOST kansion alta tiedostoista Enemy.cpp ja Enemy.h.

KODU. Lumijoen peruskoulu

KODU. Lumijoen peruskoulu KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.

Lisätiedot

Luento 2: Viivan toteutus

Luento 2: Viivan toteutus Tietokonegrafiikan perusteet T-111.4300 3 op Luento : Viivan toteutus Lauri Savioja 11/07 Primitiivien toteutus / 1 GRAAFISTEN PRIMITIIVIEN TOTEUTUS HUOM! Oletuksena on XY-koordinaatisto Suorien viivojen

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Supremum ja inmum Tarkastellaan aluksi avointa väliä, Tämä on joukko, johon kuuluvat kaikki reaaliluvut miinus yhdestä yhteen Kuitenkaan päätepisteet eli luvut ja

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 6 Sarjojen suppeneminen Kiinnostuksen kohteena on edelleen sarja a k = a + a 2 + a 3 + a 4 +... k= Tämä summa on mahdollisesti äärellisenä olemassa, jolloin sanotaan

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 4 OP PERIODI 1: 6.9.2012-12.10.2012 (6 VIIKKOA) LUENNOT (B123, LINUS TORVALDS -AUDITORIO): TO 10-12, PE 12-14 LASKUHARJOITUKSET

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 3: 18.1.2016-6.3.2016 (7 VIIKKOA+KOE) LUENNOT (CK112): MA 14-16, TI 14-16 LASKUHARJOITUKSET: RYHMÄ

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 1: 4.9.2014-17.10.2012 (7 VIIKKOA+KOE) LUENNOT (B123, LINUS TORVALDS -AUDITORIO): TO 10-12, PE 12-14

Lisätiedot

Turingin koneen laajennuksia

Turingin koneen laajennuksia Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k

Lisätiedot

Algoritmit 1. Luento 9 Ti Timo Männikkö

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIEA24 Automaatit ja kieliopit, syksy 206 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 206 Sisällys Kolme laskennan mallia kuvitteellisia (abstrakteja) koneita eli automaatteja lukevat syötteen

Lisätiedot

Aluksi. 1.1. Kahden muuttujan lineaarinen yhtälö

Aluksi. 1.1. Kahden muuttujan lineaarinen yhtälö Aluksi Matematiikan käsite suora on tarkalleen sama asia kuin arkikielen suoran käsite. Vai oliko se toisinpäin? Matematiikan luonteesta johtuu, että sen soveltaja ei tyydy pelkkään suoran nimeen eikä

Lisätiedot

L9: Rayleigh testi. Laskuharjoitus

L9: Rayleigh testi. Laskuharjoitus L9: Rayleigh testi Laskuharjoitus Data on tiedoston Rayleighdata.dat 1. sarake: t = t i Ajan hetket ovat t = t 1, t 2,..., t n, missä n = n = 528 Laske ja plottaa välillä f min = 1/P max ja f max = 1/P

Lisätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin

Lisätiedot

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet Sukelluskeräily 1 Tässä pelissä keräilet erilaisia aarteita ja väistelet vihollista. Tämän lisäksi pelaajan pitää käydä välillä pinnalla hengittelemässä. Peliin lisätään myös häiriötekijäksi esim. parvi

Lisätiedot

T Harjoitustyöluento

T Harjoitustyöluento 29. syyskuuta 2010 Luennon sisältö 1 2 3 Simulaatiopalvelin Moodle Harjoitustyön demoaminen 4 Aikataulu Kysyttävää? Harjoitustyössä toteutetaan ohjelma, joka simuloi reititintä: ohjelma vastaanottaa reititysdataa

Lisätiedot

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

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti. 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ätiedot

OHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki

OHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki OHJ-2710 Peliohjelmointi Syksy 2012 Timo Kellomäki timo.kellomaki@tut.fi Käytännön juttuja Kurssihenkilökunta koostuu Timo Kellomäestä Luennot torstaisin salissa TB223 klo 12-14 2. viikko harkkatyöinfo,

Lisätiedot

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto) 811 Tietorakenteet (kevät 9) Harjoitus 11, ratkaisuja (Topi Musto) 1. Bellmanin-Fordin algoritmin alustusvaiheen jälkeen aloitussolmussa on arvo ja muissa solmuissa on arvo ääretön. Kunkin solmun arvo

Lisätiedot

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut

Lisätiedot

Alkuun HTML5 peliohjelmoinnissa

Alkuun HTML5 peliohjelmoinnissa Paavo Räisänen Alkuun HTML5 peliohjelmoinnissa www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida ja levittää ei kaupallisissa tarkoituksissa. Sisällysluettelo 1: Alkusanat 2: Alkuun 3: Pelinäkymä

Lisätiedot

Sudenkuoppia, yllätyksiä, pään vaivaa

Sudenkuoppia, yllätyksiä, pään vaivaa Aika Rahoitus Sudenkuoppia, yllätyksiä, pään vaivaa Odotukset: Tilaaja(t), toteuttaja(t) Osaaminen: Liikaa tietoa/liian vähän tietoa Sopimusasiat (tekijänoikeus, tilauksen toimitussopimus, yhteistyösopimus)

Lisätiedot

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen

Lisätiedot

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen. Tietorakenteet, kevät 2012 Kurssikoe 2, mallivastaukset 2. (a) Järjestämistä ei voi missään tilanteessa suorittaa nopeammin kuin ajassa Θ(n log n), missä n on järjestettävän taulukon pituus. Epätosi: Yleisessä

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

Labyrintti. Pelihahmon toiminta. Piirrä pelihahmo (älä piirrä esim. sivusta, ettei hahmon tarvitse

Labyrintti. Pelihahmon toiminta. Piirrä pelihahmo (älä piirrä esim. sivusta, ettei hahmon tarvitse Labyrintti 1 Kerää aarteita labyrintista samalla kuin siellä liikkuu haamu. Seiniksi käyvät mm. vaaralliset laserit ja lava, mutta pienellä lisävaivalla niistä voi tehdä myös kiinteät ja vaarattomat Mallipeli

Lisätiedot

Tehtävänanto oli ratkaista seuraavat määrätyt integraalit: b) 0 e x + 1

Tehtävänanto oli ratkaista seuraavat määrätyt integraalit: b) 0 e x + 1 Tehtävä : Tehtävänanto oli ratkaista seuraavat määrätyt integraalit: a) a) x b) e x + Integraali voisi ratketa muuttujanvaihdolla. Integroitava on muotoa (a x ) n joten sopiva muuttujanvaihto voisi olla

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 3 Supremum ja infimum Tarkastellaan aluksi avointa väliä, ) = { : < < }. Tämä on joukko, johon kuuluvat kaikki reaaliluvut miinus yhdestä yhteen. Kuitenkaan päätepisteet

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

S09 04 Kohteiden tunnistaminen 3D datasta

S09 04 Kohteiden tunnistaminen 3D datasta AS 0.3200 Automaatio ja systeemitekniikan projektityöt S09 04 Kohteiden tunnistaminen 3D datasta Loppuraportti 22.5.2009 Akseli Korhonen 1. Projektin esittely Projektin tavoitteena oli algoritmin kehittäminen

Lisätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden

Lisätiedot

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen: Tasohyppelypeli 1 Pelissä ohjaat liikkuvaa ja hyppivää hahmoa vaihtelevanmuotoisessa maastossa tavoitteenasi päästä maaliin. Mallipelinä Yhden levelin tasohyppely, tekijänä Antonbury Piirrä grafiikat Pelaajan

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015 TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen

Lisätiedot

Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012

Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012 Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012 Teemu Saarelainen, lehtori teemu.saarelainen@kyamk.fi GameLab gamelab.kyamk.fi & facebook.com/kyamk.gamelab Sisältö Miksi pelimatematiikkaa?

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

Tiina Partanen. Koodaamassa Matikantunnilla

Tiina Partanen. Koodaamassa Matikantunnilla Koodaamassa Matikantunnilla Racket-iskuryhmä? Ryhmä Tamperelaisia ja Ylöjärveläisiä opettajia, jotka testaavat ja kehittävät Racket-ohjelmointimateriaalia yläkoulun matematiikan (tietotekniikan ja fysiikan)

Lisätiedot

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

Mitä on konvoluutio? Tutustu kuvankäsittelyyn Mitä on konvoluutio? Tutustu kuvankäsittelyyn Tieteenpäivät 2015, Työohje Sami Varjo Johdanto Digitaalinen signaalienkäsittely on tullut osaksi arkipäiväämme niin, ettemme yleensä edes huomaa sen olemassa

Lisätiedot

Kommunikaatio Visa Linkiö. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Kommunikaatio Visa Linkiö. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly Kommunikaatio MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly 2.11.2016 Visa Linkiö The document can be stored and made available to the public on the open internet pages of Aalto University.

Lisätiedot

1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen.

1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen. Joukko-oppia Matematiikan mestariluokka, syksy 2010 Harjoitus 1, vastaukset 20.2.2010 1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi asettele

Lisätiedot

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

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

Taso 1. Yhden pelaajan pallokontrollitemput SORMILYÖNTI HIHALYÖNTI

Taso 1. Yhden pelaajan pallokontrollitemput SORMILYÖNTI HIHALYÖNTI Taso 1 Yhden pelaajan pallokontrollitemput SORMILYÖNTI 1. Heitä pallo, tee 1 sormilyönti ja ota koppi x 10 3. Heitä pallo, tee 2 sormilyöntiä ja ota koppi x 10 5. Heitä pallo, tee 3 sormilyöntiä ja ota

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

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

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann

Lisätiedot

Johdatus tekoälyn taustalla olevaan matematiikkaan

Johdatus tekoälyn taustalla olevaan matematiikkaan Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3. luento 17.11.2017 Neuroverkon opettaminen (ohjattu oppiminen) Neuroverkkoa opetetaan syöte-tavoite-pareilla

Lisätiedot

A* Reitinhaku Aloittelijoille

A* Reitinhaku Aloittelijoille A* Reitinhaku Aloittelijoille Alkuperäisen artikkelin kirjoittanut Patrick Lester, suomentanut Antti Veräjänkorva. Suom. huom. Tätä kääntäessäni olen pyrkinyt pitämään saman alkuperäisen tyylin ja kerronnan.

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä. MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä. Antti Rasila Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kevät 2016

Lisätiedot

MAB3 - Harjoitustehtävien ratkaisut:

MAB3 - Harjoitustehtävien ratkaisut: MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla

Lisätiedot

Matematiikan tukikurssi, kurssikerta 4

Matematiikan tukikurssi, kurssikerta 4 Matematiikan tukikurssi, kurssikerta 4 1 Raja-arvo äärettömyydessä Tietyllä funktiolla f() voi olla raja-arvo äärettömyydessä, jota merkitään f(). Tämä tarkoittaa, että funktio f() lähestyy jotain tiettyä

Lisätiedot

= 2 L L. f (x)dx. coshx dx = 1 L. sinhx nπ. sin. sin L + 2 L. a n. L 2 + n 2 cos. tehdään approksimoinnissa virhe, jota voidaan arvioida integraalin

= 2 L L. f (x)dx. coshx dx = 1 L. sinhx nπ. sin. sin L + 2 L. a n. L 2 + n 2 cos. tehdään approksimoinnissa virhe, jota voidaan arvioida integraalin BMA7 - Integraalimuunnokset Harjoitus 9. Määritä -jaksollisen funktion f x = coshx, < x < Fourier-sarja. Funktion on parillinen, joten b n = kun n =,,3,... Parillisuudesta johtuen kertoimet a ja a n saadaan

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi Äärellisten automaattien ja säännöllisten lausekkeiden minimointi Timi Suominen, Riia Ohtamaa ja Pessi Moilanen Helsinki..01 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Äärellisten automaattien

Lisätiedot

MAB3 - Harjoitustehtävien ratkaisut:

MAB3 - Harjoitustehtävien ratkaisut: MAB3 - Harjoitustehtävien ratkaisut: 1 Funktio 1.1 Piirretään koordinaatistoakselit ja sijoitetaan pisteet: 1 1. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä.

Lisätiedot

Insinöörimatematiikka D

Insinöörimatematiikka D Insinöörimatematiikka D M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi Matematiikan ja tilastotieteen laitos Turun yliopisto 2015 M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi Luentokalvot

Lisätiedot

v 8 v 9 v 5 C v 3 v 4

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

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

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

Yhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5.

Yhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5. Tekijä Pitkä matematiikka 5 7..017 31 Kirjoitetaan yhtälö keskipistemuotoon ( x x ) + ( y y ) = r. 0 0 a) ( x 4) + ( y 1) = 49 Yhtälön vasemmalta puolelta nähdään, että x 0 = 4 ja y 0 = 1, joten ympyrän

Lisätiedot

Kertausta: avaruuden R n vektoreiden pistetulo

Kertausta: avaruuden R n vektoreiden pistetulo Kertausta: avaruuden R n vektoreiden pistetulo Määritelmä Vektoreiden v R n ja w R n pistetulo on v w = v 1 w 1 + v 2 w 2 + + v n w n. Huom. Pistetulo v w on reaaliluku! LM2, Kesä 2014 164/246 Kertausta:

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

Lisätiedot

Käy vastaamassa kyselyyn kurssin pedanet-sivulla (TÄRKEÄ ensi vuotta ajatellen) Kurssin suorittaminen ja arviointi: vähintään 50 tehtävää tehtynä

Käy vastaamassa kyselyyn kurssin pedanet-sivulla (TÄRKEÄ ensi vuotta ajatellen) Kurssin suorittaminen ja arviointi: vähintään 50 tehtävää tehtynä Käy vastaamassa kyselyyn kurssin pedanet-sivulla (TÄRKEÄ ensi vuotta ajatellen) Kurssin suorittaminen ja arviointi: vähintään 50 tehtävää tehtynä (vihkon palautus kokeeseen tullessa) Koe Mahdolliset testit

Lisätiedot

Avainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku

Avainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku Pasi Leppäniemi OuLUMA, sivu 1 POLYNOMIPELI Avainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku Luokkataso: 8-9 lk Välineet: pelilauta, polynomikortit, monomikortit, tuloskortit,

Lisätiedot

Luento 6: Tulostusprimitiivien toteutus

Luento 6: Tulostusprimitiivien toteutus Tietokonegrafiikan perusteet T-111.4300 3 op Luento 6: Tulostusprimitiivien toteutus Lauri Savioja 11/07 Primitiivien toteutus / 1 ntialiasointi Fill-algoritmit Point-in-polygon Sisältö Primitiivien toteutus

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

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

Google Forms / Anna Haapalainen. Google Forms Googlen lomake-työkalu

Google Forms / Anna Haapalainen. Google Forms Googlen lomake-työkalu Google Forms Googlen lomake-työkalu Google Forms / Anna Haapalainen Googlen lomaketyökalulla on helppoa tehdä sähköisiä kyselyitä, tehtäviä tai kokeita. Voidaksesi luoda Googlen lomakkeita, sinulla tulee

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Yleistä vektoreista GeoGebralla

Yleistä vektoreista GeoGebralla Vektoreita GeoGebralla Vektoreilla voi laskea joko komentopohjaisesti esim. CAS-ikkunassa tai piirtämällä piirtoikkunassa. Ensimmäisen tavan etuna on, että laskujen tueksi muodostuu kuva. Tästä on varmasti

Lisätiedot

6.4. Järjestyssuhteet

6.4. Järjestyssuhteet 6.4. Järjestyssuhteet Joukon suhteilla voidaan kuvata myös alkioiden järjestystä tietyn ominaisuuden suhteen. Järjestys on myös kaksipaikkainen suhde (ja on monia erilaisia järjestyksiä). Suhde R joukossa

Lisätiedot

Harjoitustyö 5: 2D-animointi verkkosivuilla (HTML5 Canvas)

Harjoitustyö 5: 2D-animointi verkkosivuilla (HTML5 Canvas) Harjoitustyö 5: 2D-animointi verkkosivuilla (HTML5 Canvas) Kurssin viidennessä harjoitustyössä tutustutaan 2D-animoinnin toteuttamiseen verkkosivuille HTML5 Canvas -elementin ja JavaScriptin (HTML Canvas

Lisätiedot

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut T-79.148 Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S tuottama

Lisätiedot

T-110.4100 Harjoitustyöluento

T-110.4100 Harjoitustyöluento 1. lokakuuta 2009 Yhteenveto 1 2 3 Linkkitilaprotokolla 4 5 6 DL! Ensimmäinen deadline lähestyy: harjoitustyön suunnitelma pitäisi palauttaa 15.10 klo 12 mennessä. Itse harjoitustyöstä lisää tuota pikaa..

Lisätiedot

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, 652013, vastauksia 1 [6 pistettä] Vastaa jokaisesta alla olevasta väittämästä onko se tosi vai epätosi ja anna lyhyt perustelu Jokaisesta kohdasta

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely) Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely) Jari Hast xx.12.2013 Ohjaaja: Harri Ehtamo Valvoja: Hari Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Mat Lineaarinen ohjelmointi

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

S BAB ABA A aas bba B bbs c

S BAB ABA A aas bba B bbs c T-79.148 Kevät 2003 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S) tuottama

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 9 1 Implisiittinen derivointi Tarkastellaan nyt yhtälöä F(x, y) = c, jossa x ja y ovat muuttujia ja c on vakio Esimerkki tällaisesta yhtälöstä on x 2 y 5 + 5xy = 14

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Neljän alkion kunta, solitaire-peli ja

Neljän alkion kunta, solitaire-peli ja Neljän alkion kunta, solitaire-peli ja taikaneliöt Kalle Ranto ja Petri Rosendahl Matematiikan laitos, Turun yliopisto Nykyisissä tietoliikennesovelluksissa käytetään paljon tekniikoita, jotka perustuvat

Lisätiedot

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013 TIEA24 Automaatit ja kieliopit, kesä 3 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. toukokuuta 3 Sisällys Äärellisiä automaatteja ON PUSH PUSH OFF Q T J Q C C H S C,Q C,Q 0 40 60 80 00, 70 90 Deterministinen

Lisätiedot

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio. 21.11.2008 Harri Laine 1

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio. 21.11.2008 Harri Laine 1 Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio 21.11.2008 Harri Laine 1 Joidenkin järjestelmien sisältömallissa on erotettavissa luokkia, joiden ilmentymien käyttäytymisen kuvaaminen, kirjaus

Lisätiedot

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

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

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on 13 Pistetulo Avaruuksissa R 2 ja R 3 on totuttu puhumaan vektorien pituuksista ja vektoreiden välisistä kulmista. Kuten tavallista, näiden käsitteiden yleistäminen korkeampiulotteisiin avaruuksiin ei onnistu

Lisätiedot

Kontrollilaitteet. Arsenaali

Kontrollilaitteet. Arsenaali Arsenaali Kontrollilaitteet Tietokonepeleissä käytettäviä kontrollilaitteita on valtava määrä Kaikilla alustoilla, joilla pelejä pelataan on jokin vakio kontrolleri PC: Hiiri ja näppäimistö Konsolit: Controller

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 6 1 Korkolaskentaa Oletetaan, että korkoaste on r Jos esimerkiksi r = 0, 02, niin korko on 2 prosenttia Tätä korkoastetta käytettään diskonttaamaan tulevia tuloja ja

Lisätiedot

Tasogeometriaa GeoGebran piirtoalue ja työvälineet

Tasogeometriaa GeoGebran piirtoalue ja työvälineet Tasogeometriaa GeoGebran piirtoalue ja työvälineet Näissä harjoituksissa työskennellään näkymässä Näkymät->Geometria PIIRRÄ (ja MITTAA) a) jana toinen jana, jonka pituus on 3 b) kulma toinen kulma, jonka

Lisätiedot

WINDOWS 10 -kurssi. petri.kiiskinen@wellamo-opisto.fi

WINDOWS 10 -kurssi. petri.kiiskinen@wellamo-opisto.fi WINDOWS 10 -kurssi petri.kiiskinen@wellamo-opisto.fi Yleistä kurssista Keskiviikkoisin 9.9. 30.9. (15 oppituntia) 16:45 20:00 (viimeinen kerta 16:45 19:15) Puolivälissä 15 minuutin kahvitauko Materiaali

Lisätiedot

Demokoodaus Linuxilla, tapaus Eternity

Demokoodaus Linuxilla, tapaus Eternity Demokoodaus Linuxilla, tapaus Eternity Tuomo Sipola tuomo.sipola@iki.fi Linkin lanit 9.4.2010 Tuomo Sipola tuomo.sipola@iki.fi () Demokoodaus Linuxilla, tapaus Eternity Linkin lanit 9.4.2010 1 / 17 Sisältö

Lisätiedot

Numeeriset menetelmät

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

Tekijä Pitkä matematiikka

Tekijä Pitkä matematiikka K1 Tekijä Pitkä matematiikka 5 7..017 a) 1 1 + 1 = 4 + 1 = 3 = 3 4 4 4 4 4 4 b) 1 1 1 = 4 6 3 = 5 = 5 3 4 1 1 1 1 1 K a) Koska 3 = 9 < 10, niin 3 10 < 0. 3 10 = (3 10 ) = 10 3 b) Koska π 3,14, niin π

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

L9: Rayleigh testi. Laskuharjoitus

L9: Rayleigh testi. Laskuharjoitus L9: Rayleigh testi Laskuharjoitus Data on tiedoston H7binput.dat 1. sarake: t = t i Ajan hetket ovat t = t 1, t 2,..., t n, missä n n = 528 Laske ja plottaa välillä f min = 1/P max ja f max = 1/P min z(f

Lisätiedot