TEK: Tekoäly kevät 2008

Koko: px
Aloita esitys sivulta:

Download "TEK: Tekoäly kevät 2008"

Transkriptio

1 TEK: Tekoäly kevät 2008 Matti Nykänen 13. maaliskuuta 2008 Sisältö 1 Mitä tekoäly on? Toimia inhimillisesti Ajatella inhimillisesti Ajatella rationaalisesti Toimia rationaalisesti Ongelmanratkaisu verkkohakuna Systemaattinen haku Leveyshaku Tasahintahaku Dijkstran algoritmi Syvyyshaku Toistava syventäminen Heuristinen haku Ahne haku A Heuristiikkoja rentouttamalla A muistia säästäen Rajoitteet ja niiden ratkonta Muuttujien käsittelyjärjestys Rajoitteiden levittäminen Älykäs peruutus Laajennuksia Pelit Pelipuun muodostaminen Pelipuun karsinta Pelipuun katkaisu Satunnaisuus ja epävarmuus Looginen päättely Erilaisista logiikoista Klassisuus Modaalisuus Monotonisuus

2 5.2 Lauselogiikka Totuustaulut Päättely lauselogiikassa Resoluutio Konjunktiivinen normaalimuoto Resoluutiosääntö Hornin klausuulit Predikaattilogiikka Syntaksi ja semantiikka Päättelyjärjestelmistä Konjuktiivinen normaalimuoto Yleistetty Modus Ponens Resoluutio Samastus Samuus Resoluution täydellisyydestä Esimerkki: Hemolia Prologilla Viitteet Ivan Bratko. Prolog Programming for Articial Intelligence. Addison-Wesley, 3rd edition, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliord Stein. Introduction to Algorithms. The MIT Press, 2nd edition, Rina Dechter. Constraint Processing. Morgan Kaufmann, Sara Negri and Jan von Plato. Structural Proof Theory. Cambridge University Press, Martti Penttonen. Tekoäly. Luentomoniste, Kuopion yliopiston tietojenkäsittelytieteen laitos, URL Benjamin C. Pierce. Types and Programming Languages. MIT Press, Veikko Rantala and Ari Virtanen. Johdatus modaalilogiikkaan. Gaudeamus, Stuart Russell. Ecient memory-bounded search methods. In 10th European Conference on Articial Intelligence (ECAI 92), pages 15, Stuart Russell and Peter Norvig. Articial Intelligence: a Modern Approach. Prentice- Hall, 2nd edition, Morten Heine Sørensen and Pawel Urzyczyn. Lectures on the Curry-Howard Isomorphism, volume 149 of Studies in Logic and the Foundations of Mathematics. Elsevier,

3 Luennoijan sähköposti: Luentokerran kotisivu: 1 Mitä tekoäly on? Miten tekoälyksi (Articial Intelligence) kutsutun tutkimusalan tavoitetta on yritetty määritellä? Tiedämmekö itsekään, mitä tarkkaan ottaen tarkoitamme sanalla äly(kkyys), kun käytämme sitä? Onko sillä edes olemassa yhtä ainoaa oikeaa tilanteesta riippumatonta merkitystä? Miten tekoäly liittyy muihin tieteenaloihin? Käsitteitä älykkyys ja rationaalisuus (= järkiperäisyys) on tarkasteltu jo aikaisemmin myös esim. losoassa, psykologiassa, taloustieteessä, säätöteoriassa,... Tekoälyn tavoitteena on luoda ohjelmia (tai robotiikassa laitteita), jotka osaisivat... inhimillisesti rationaalisesti. Automatisoidaan ihmisen ajatteluun Kaiken rationaalisuuden on liittyviä toimintoja: päätöksentekoa, noudatettava näitä lakeja ongelmanratkaisua, oppimista,... riippumatta siitä kuka tai mikä on ajatella toimia Jos minä tekisin samaa kuin tuo, niin minun pitäisi käyttää siihen omaa älyäni siispä tuokin on älykäs, koska pystyy samaan! 1.1 Toimia inhimillisesti Turingin testi: rationaalinen. Tuohan selvästi pyrkii johonkin päämäärään valiten itsenäisesti ja tilanteen mukaan joustavasti ne keinot, joilla se pyrkii tavoitteisiinsa! Haastattelija A (ihminen) keskustelee haastateltavan B kanssa. 5min. jälkeen A ilmoittaa, onko B hänestä ohjelma vai ihminen. Tehdään useita haastatteluja. Jos B on ohjelma, ja A tulee huijatuksi 30% niistä, niin B on älykäs. Vuosittain (1991-) tavoitellaan Loebner-palkintoa loebner-prize.html. Jos jokin ohjelma B joskus onnistuu, niin sen tekijä voittaa kultamitalin sekä $, ja kisa päättyy. Vuosittain jaetaan parhaalle yritykselle pronssimitali ja 3.000$ (aiemmin 2.000$). Parhaat tällaiset ns. chat(ter)bot-ohjelmat B pystyvät huijaamaan jonkin aikaa jopa tuomareita A... Sellaiseen voi törmätä myös Internetissä, jossa eri keskustelukumppanit antavat sille lisää aineistoa, josta se voi oppia paremmaksi.

4 Turingin testi ei silti ole keskeinen tekoälyn tutkimuksessa: Etsitään yleisiä periaatteita, ei yritetä toistaa yhtä niiden erikoistapausta. Eivät lentokoneetkaan matki lintuja enää! Tekoälyn losot ovat edelleen erotelleet kaksi kysymystä: Heikko (weak AI): Onko periaatteessa mahdollista luoda ohjelma (tai laite) B joka näyttää toimivan älykkäästi? Vahva (strong AI): Vaikka olisikin, niin onko B silti oikeasti älykäs vai pelkkä älykkyyden simulaatio? Tietojenkäsittelijän ei ole pakko ottaa kantaa ei väliä millä nimellä hänen tuotostaan kutsutaan, kunhan se vain toimii... Turingin määritelmässä (1950) taitaa näkyä sen ajan psykologian valtavirtaus behaviorismi (noin ). Se pyrki tarkastelemaan vain vasteita ärsykkeisiin (response, stimulus) kohteissaan määrittelemään tutkimuskohteensa (kuten juuri älykkyys) pelkästään sellaisena objektiivisesti mitattavana ulkoisena käyttäytymisenä hylkäämään sisäiset mentaaliset konstruktiot (tieto, uskomukset, tavoitteet,... ) epätieteellisinä. Turingin testin voittajaohjelman B pitäisi osata luonnollista kieltä keskustellakseen tuomarin A kanssa oppia uutta tietämystä jo tähänastisen keskustelun kulun muistamiseen ja aiheessa pysymiseen, tulevaisuudesta puhumattakaan tehdä johtopäätöksiä tietämyksensä pohjalta jotta voisi jatkaa keskustelua seuraavalla repliikillä tallentaa tietämyksensä joustavassa muodossa koska keskustelun kuluessa pitää voida käyttää samaa tiedonjyvästä eri asiayhteyksissä. Tuomari A kysyy: Wagnerin oopperassa Wolfram laulaa iltatähdelle... eli Venus-planeetalle... että se varjelisi hänen rakastamaansa Elisabethia. Venus-jumalatar taas on saman oopperan hahmo... joka on vietellyt turmioon Tannhäuserin... jota Elisabet puolestaan rakastaa... ja jonka aikoo pelastaa uhraamalla itsensä. Mitä Wolfram siis oikeastaan pyytää? Millainen B edes ymmärtäisi kysymyksen? Vastaisi? Alan M. Turingin ( ) henkilöhahmossa yhtyvät monet tietojenkäsittelyn syntytekijät: 2

5 Laskennan teoria 1936 määritteli Turingin koneet, mekaanisen laskennan abstraktin mallin, artikkelissa nimeltä On computable numbers... Logiikka... with an application to the entscheidungsproblem eli siis suhteutti koneensa myös Kurt Gödelin juhlittuihin logiikan epätäydellisyystuloksiin ( ). Laskukoneet 2. maailmansodan aikana hän kehitti sähkömekaanisen laskukoneen joka oli erikoistunut saksalaisten Enigma-salakirjoitusviestien purkuun. Tietokoneet Sodan jälkeen alkoi ohjelmoitavien koneiden (julkinen) kehitys. Turing kehitti ACE-koneen. Tekoäly oli näiden koneiden ensimmäisiä unelmoituja käyttöjä. Turingin testi oli ensimmäinen ehdotus sen määritelmäksi. 1.2 Ajatella inhimillisesti Kognitiotiede (Cognitive Science) yhdistää tekoälyn laskennalliset mallit kokeellisen psykologian ja neurotieteen tutkimusmenetelmiin pyrkii luomaan tarkkoja ja testattavia teorioita ihmismielen (eri osien) toiminnalle. Esimerkiksi konenäkö ja luonnollisen kielen käsittely ovat edistyneet tällaisella kognitiivisella mallinnuksella: 1. Tarkasteltava kyky analysoidaan pienempiin yksiköihin ja niiden väliseen informaationvälitykseen. Aivotutkimus kertoo esimerkiksi, että saman verkkokalvokuvan eri piirteet käsitellään eri puolilla aivoja vaurio tietyssä osassa aivoja tuhoaa jonkin kielenymmärrykseen tarvittavan taidon ja vihjaa näin luontevan yksikköjaon. 2. Joka yksikön toiminnalle kehitetään oma malli. Tekoälyssä riittää että malli on laskennallinen. Neurotieteessä mallin pitää myös olla biologisesti realistinen. Eräs kognitiivisen mallinnuksen keskeinen tuote ovat erilaiset hermoverkot (neural network): Mallinnetaan yksittäinen hermosolu (kuva 1) funktiona sen syötesignaaleiden voimakkuuksilta tulossignaalin voimakkuudelle monia eri funktioita. Simuloidaan tietokoneessa monen sellaisen keinosolun verkkoa monia eri kytkentätopologioita. Tällaisella verkolla on syötteitä eli signaaleja sen ulkopuolelta tulosteita eli signaaleja sen ulkopuolelle. 3

6 Axonal arborization Axon from another cell Synapse Dendrite Axon Nucleus Synapses Cell body or Soma Sähköiset syötesignaalit tulevat toisista hermosoluista sen useista tuojahaarakkeista (dendrite). Tämän solun tulossignaali lähtee sen ainoan viejähaarakkeen (axon) päässä oleviin synapseihin. Synapsissa tulossignaali siirtyy kemiallisesti vastaanottavan hermosolun tuojahaarakkeeseen. (Russell and Norvig, 2003, Figure 1.2) Kuva 1: Kaavakuva hermosolusta. Se voi oppia annetut syöte/tuloste-parit: Oppimisalgoritmi muokkaa kytkentöjen painoarvoja sopivasti. Näin saadaan assosiatiivinen muisti (associative memory): Syötteissä voi olla kohinaa tai puutteita. Tulosteena saadaan yhdistelmä sitä muistuttaneista opetuksista. Kognitiivinen mallinnus voi olla myös symbolista. Informaationa kulkeekin symboleita, ei signaaleita. Hermoverkot nähdään (eräänä mahdollisena) toteutusarkkitehtuurina. Tämä on luontevampi malli esim. kielitieteessä. 1.3 Ajatella rationaalisesti Logiikka oikean ajattelun lakeina on losoassa ja matematiikassa keskeinen ehdotus joustavaksi tavaksi esittää tietämys ja päätellä sen pohjalta. Tekoälyssä tämä lähestymistapa on: Esitä kaikki tietämys logiikalla. Päättele siitä tässä tilanteessa relevantti johtopäätös. (Esimerkiksi sen repliikin merkitys jonka kone B seuraavaksi muotoilee sanoiksi Loebner-tuomarille A kielitieteen termein se lauseen syvärakenne, jonka jokin pintarakenne aiotaan sanoa.) Ei skaalaudu kahdesta syystä: On hyvin työlästä kuvailla tarkasti ja kaikki tarvittava taustatietämys. 4

7 On hyvin vaikeaa ohjata loogista päättelyä ohittamaan tällä hetkellä epärelevantit harhapolut. Tätä skaalautuvuusongelmaa ei osattu ennakoida vielä kun logiikkaa kehitettiin matematiikan yhteydessä: Matemaattinen teoria koostuu tyypillisesti muutamasta aksioomasta (tai aksioomaskeemasta) mutta niitä käyttäen tehdään (kynällä ja paperilla, yrityksen ja erehdyksen kautta) pitkiäkin päättelyaskelketjuja. Ihmisen päättely taas on pikemminkin lyhyttä ja leveää: Lyhytkestoinen työmuistimme on pieni. (5 ± 2 asiaa kerrallaan?) Pitkäkestoinen muistimme taas palauttaa nopeasti ja alitajuisesti mieleemme nykytilanteen kanssa samankaltaisia asioita se on assosiatiivinen. Eräs tapa kiertää skaalautuvuusongelmia ovat erilaisten erikoistuneiden tietämyksenesityskielten (Knowledge Representation Languages) suunnittelu ja käyttö. Sellaisella voidaan ilmaista luontevasti tietynlaista tietämystä muttei kaikenlaista. Sen ilmaukset voitaisiin kääntää johonkin yleiskäyttöiseen logiikkaan jonka koko ilmaisuvoimaa ei siis hyödynnetäkään. Mutta juuri näitä ilmauksia käsittelemään voidaankin kehittää erikoistuneita algoritmeja jotka ovatkin tehokkaampia kuin yleiskäyttöisen logiikan algoritmin. Yleiskäyttöinen logiikka tarjoaa oikeellisuusehdon: Tuloksen pitää olla sisällöltään sama sekä erikoistuneella että yleiskäyttöisellä algoritmilla. Esimerkiksi olio-ohjelmoinnin periytymiskäsite (inheritance) on peräisin tietämyksenesitystavasta (Russell and Norvig, 2003, Chapter 10.6) jossa rakennetaan laatikoista taksonominen hierarkia / ontologia ylempään laatikkoon liitetty ominaisuus valuu myös kaikkiin sen alla oleviin laatikoihin tämä valuminen on hierarkian nopeaa selaamista. Esimerkiksi laatikko hauki on laatikon kala alla. Muistirakenteensa vuoksi ihminen suosiikin analogiapäättelyä: Tarvitsisin vasaran, mutta minulla on vain tämä lasipullo. Mutta se on samankaltainen kuin vasara, jos tartunkin siihen kaulasta väärinpäin. Voisikohan sillä... Analoginen päättely on hankalaa logiikassa. Esimerkiksi johtopäätökseen Kyllä lasipulloa voi käyttää vasarana tarvitaan joko faktoja X:ää voi käyttää Y :nä mutta niitä tulisi paljon tai sääntöjä X:ää voi käyttää Y :nä jos φ mutta ehdon φ tarkka muotoilu on vaikeaa eli törmätään uudelleen skaalautuvuusongelmaan. 5

8 Se kestää todennäköisyydellä p Yritän lyödä pullolla Se särkyy todennäköisyydellä 1 p? OK Siivoan lasinsirut. Siihen kuluu X minuuttia Haen vasaran. Siihen kuluu Y minuuttia Kuva 2: Kun tavoitteena on yrittää minimoida kokonaisaikaa, niin rationaalinen valinta riippuu ajoista X ja Y sekä todennäköisyydestä p. Logiikassa on hankalaa myös käsitellä sattumanvaraisuutta.... mutta se voi myös särkyä. On kehitetty ns. modaali logiikoita, joissa voi ilmaista myös on mahdollista/- varmaa, että ψ. Mutta rationaalinen päätöksenteko tarvitsee enemmän: Eri vaihtoehtojen todennäköisyydet (kuva 2). Tällaisia ehdollisia todennäköisyyksiä voidaan esittää ja käsitellä ns. Bayes-verkkona (kuva 3) (Russell and Norvig, 2003, luvut ). Kun looginen tulos on kertaalleen todistettu yhdellä tavalla, niin ei ole enää tarpeen etsiä muita tapoja todistaa se. Se voidaan siis irrottaa perusteluistaan. Todennäköisyyttä tarkasteltaessa pitää päinvastoin huomioida kaikki ne tekijät, jotka voisivat vaikuttaa siihen. Sitä ei siis voikaan irrottaa taustastaan. Bayes-verkolla voidaan esittää edes se, mitkä tekijät eivät riipu toisistaan (ainakaan suoraan). Bayes-verkko on suunnattu ja syklitön (eli DAG) jossa solmu X edustaa yhtä satunnaismuuttujaa, ja ilmaisee millä todennäköisyydellä se saa arvon X = x kun siihen suoraan vaikuttavat solmut saavat arvot Y 1 = y 1, Y 2 = y 2, Y 3 = y 3,... kaari Y i X ilmaisee, että solmun Y i arvo voi vaikuttaa tällä tavoin suoraan solmun X arvoon. 6

9 Burglary P(B).001 Earthquake P(E).002 Alarm B t t f f E t f t f P(A) JohnCalls A t f P(J) MaryCalls A t f P(M) Talosi murtohälytin voi hälyttää (Alarm) ei vain oikean murtovarkauden (Burglary) vaan myös maanjäristyksen (Earthquake) vuoksi. Naapurisi John soittaa sinulle töihin (Calls) hälytyksen kuullessaan, mutta hän voi myös erehtyä luulemaan soivaa puhelinta hälytykseksi. Toinenkin naapurisi Mary soittaa, mutta hän taas ei aina kuule hälytystä. Kuinka todennäköistä murtovarkaus on, jos John soittaa mutta Mary ei? (Russell and Norvig, 2003, Figure 14.2) Kuva 3: Tyypillinen Bayes-verkko. syy-seuraussuhde: hälyttimen vikataso Pr(Burglary Alarm) = 5.998% > 0! Epäsuorat vaikutukset kulkevat verkon kaaria pitkin (myös takaperin) ns. Bayesin säännöllä. Kaaren puuttuminen ilmaisee tiiviisti sen tavallisimman tapauksen, että solmut eivät riipu toisistaan suoraan. Verkolta voi kysyä Jos asetan ne solmut Z 1 = z 1, Z 2 = z 2, Z 3 = z 3,... jotka itse pystyn niin millä todennäköisyydellä saan X = x jonka haluaisin? Verkon todennäköisyyksiä voi myös päivittää Bayesin säännöllä vastaamaan uutta informaatiota: Mikä on uusi käsitykseni vikatasosta, jos asuntooni murtaudutaan eikä John soittanut? 1.4 Toimia rationaalisesti Kumpi olisi rationaalisempaa: yrittää ensin lyödä pullolla vai heti suosiolla hakea vasara (kuva 2)? Kylmän rationaalista on maksimoida hyötyään (utility). Tässä esimerkissä se tarkoittaa minimoida haittaansa eli työhön kuluvaa aikaa. Todennäköisyyslaskennalla voimme selvittää kuluvan ajan odotusarvot (expected value) eri vaihtoehdoissa: E(hae) = 1 (Y + Z) E(lyö) = p Z }{{} kesti + (1 p) (Z + X + Y + Z) } {{ } särkyi 7

10 missä Z = itse lyöntiin kuluva aika. Kannattaa hakea vasara eikä lyödä pullolla jos joka sievenee muotoon joka voidaan tulkita E(hae) < E(lyö) p Y < (1 p) (X + Z) E(turhan haun lisäaika) < E(särkyvän pullon lisäaika). Tämä on rationaalista valintaa matemaattisessa taloustieteessä (Russell and Norvig, 2003, luvut ): Maailmalla on mahdolliset tilat S = {s 0, s 1, s 2,... }. Toimijan päämäärä(t) ilmoitetaan hyötyfunktiona f : S R siten, että sen tavoitteena on saada maailma tilaan s S jonka f(s) olisi mahdollisimman korkea. (Ei vain e!) Toimija voi yrittää sitä valitsemalla jonkin sille mahdollisista teoista A = {a 0, a 1, a 2,... }. Maailman tila ei kuitenkaan ole täysin toimijan omassa kontrollissa: sen omat teot a k (kuten pullolla vasarointi) ovat tuloksiltaan sattumanvaraisia, maailmassa on siitä riippumattomia asioita (kuten säätila),... Kaikki sellainen ilmaistaan ehdollisina todennäköisyyksinä Pr(maailma siirtyy tilaan s kun tilassa s tehdään teko a). } {{ } merkitään Pr(s s, Do(a)) Niistä suurin osa lienee 0, joten Bayes-verkot (kuva 3) ovat hyvä esitys. Tilassa s toimijan kannattaa maksimoida funktion f odotusarvoa, eli valita teko (Russell and Norvig, 2003, Equation (17.4)) arg max Pr(s s, Do(a)) f(s ). a A s S Tällä periaatteella älykkään toimijan (Intelligent Agent) elinkaari on sen tekojen ja niiden seurausten sarja s 0 π(s 0 ) s 1 π(s 1 ) s 2 π(s 2 ) s 3 π(s 3 ) jossa π : S A on sen oma politiikka (policy): funktio jolla se valitsee seuraavan tekonsa. 8

11 Sensors State How the world evolves What the world is like now What my actions do Utility What it will be like if I do action A How happy I will be in such a state Environment What action I should do now Agent Actuators (Russell and Norvig, 2003, Figure 2.14) Kuva 4: Hyötypohjainen agentti. suunnittelija pyrkii antamaan sille mahdollisimman hyvän π eli että sen koko elinaikanaan keräämän kokonaishyödyn oletusarvo f (s 0) olisi mahdollisimman suuri. Se määritellään toistona (Russell and Norvig, 2003, Equation (17.5)) f (s) = f(s) + γ Pr(s s, Do(π(s))) f (s ). s S vakio 0 < γ 1 (discount factor) diskonttaa tulevaisuuden kuten ihmisillä ja eläimillä tapana on: usein valitaan pienempi hyöty heti kuin suurempi jota joutuisi odottamaan. Tällaisen hyödynmaksimoijarobotin arkkitehtuuri sisältää seuraavanlaisia osia (kuva 4): Mallit sekä sitä ympäröivälle maailmalle että sen omille teoille: Bayes-malli, jonka solmuista osan se voi havaita suoraan sensoreillaan (esim. ilman lämpötila ja kosteus,... ) päätellä vain epäsuorasti muiden solmujen perusteella (esim. 'onko pyörieni alla jäätä?') asettaa aktuaattoreillaan (esim. vasemman pyöränsä pyörimisnopeus). Hyötyfunktio jota maksimoimalla se pyrkii tekemään mitä sen rakentaja halusi. Oppiminen tapahtuu päivittämällä havaintojen pohjalta mallien todennäköisyyksiä (ja/tai hermoverkkojen kytkentäpainoja). Niitä säilytetään sisäisessä tilassa. (Sitä ei ole kaavassa f (s). Esimerkiksi politiikka π voisi tuottaa sen ja maailman tilan pohjalta seuraavan teon ja sisäisen tilan.) Matemaattisesti kyse on ns. Markov-päätösprosessista (Markov Decision Process, MDP) (Russell and Norvig, 2003, Chapter 17.1): Sattumanvarainen ympäristö on esitetty Markov-mallina eli koostuu tiloista ja niiden välisistä siirtymätodennäköisyyksistä. 9

12 Toimija ei kuitenkaan ajelehdi passiivisesti ympäristönsä sattumanvaraisuuksien armoilla, vaan pyrkii aktiivisesti maksimoimaan keräämäänsä hyötyä f tekemällä päätöksiä. Hankalimmassa tapauksessa toimija ei kuitenkaan tunne täydellisesti ympäristönsä todellista tilaa. Tätä epävarmuutta ( sattumanvaraisuus) voidaan mallintaa vielä yhdellä todennäköisyysjakaumalla b: S R jossa b(s) = toimijan käsitys siitä todennäköisyydestä, että sen ympäristön todellinen tila olisi s. Tämä b esittää toimijan uskomukset (beliefs) ympäristönsä tilasta. Tämäkin b on toimijan sisäisessä tilassa. Tämä b voi päivittyä kahdella tavalla. Update: Toimija huomaa ympäristönsä tilan muuttuneen. Revision: Ympäristön tila ei muuttunut, mutta toimija saa siitä lisää informaatiota. Näin saadaan vain osittain havainnoitavissa oleva MDP (Partially Observable, POMDP) (Russell and Norvig, 2003, Chapter 17.4). Tällaisen arkkitehtuurin yhteyksiä aikaisempiin tekoälyn määritelmiin ja sukulaisaloihin: Kognitiivisessa pysykologiassa (luku 1.3) esitettiin vastoin behaviorismia (luku 1.1) että tietämyspohjainen agentti 1. muuntaa kokemansa ärsykkeen omaan sisäiseen esitysmuotoonsa 2. käsittelee tällaisia sisäisiä esitysmuotojaan 3. kääntää käsittelyn tuloksen toiminnaksi. Tämä on arkkitehtuurimme takaisinkytkentäsilmukka (feedback loop) agentin ja ympäristön välillä. Ärsykkeen muuntoon (esimerkiksi erilaisten objektien tunnistamiseen digitaalikameran kuvasta) on luontevaa soveltaa hermoverkolla toteutettua assosiatiivista muistia (luku 1.3). Logiikkaa (luku 1.3) voidaan käyttää kun ympäristön todennäköisyyksiä ei tarkastella. Esimerkiksi toimijan uskomukset b voidaan esittää loogisina kaavoina: Uskon että ympäristön tila on jokin niistä, joissa nämä kaavat ovat totta. Myös säätöteoria (control theory, aiemmin cybernetics) pyrkii suunnittelemaan laitteita, jotka maksimoisivat tavoitefunktiota (tai minimoisivat virhefunktiota) f ajan yli takaisinkytkennässä. Siinä analysoidaan ympäristö matemaattisesti jo etukäteen. Tekoälyä pyritään soveltamaan myös silloin kun se ei onnistu. Kurssikirja (Russell and Norvig, 2003) päätyykin määrittelemään tekoälyn kaikeksi sellaiseksi tietojenkäsittelyn tutkimukseksi, josta voi olla apua tällaisten agenttien luomisessa. K: Eikö matemaattisen taloustieteen älykkyys ole liian kova kriteeri? Ennen ensimmäistäkään tekoa pitäisi miettiä omassa päässään läpi kaikki mahdolliset tulevaisuudet! 10

13 V: Käytännössä tarvitsemmekin algoritmeja, jotka toimivat realistisin resurssein, ja päätyvät niissä rajoissa mahdollisimman hyvään tekoon. K: Eikö eksplisiittistä tavoitefunktiota f ole liian vaikea johtaa käytännössä? V: Sellainen f riittää, joka antaa plussaa eri osatavoitteiden saavuttamisesta; kokonaistavoitetta ei tarvitse johtaa. Agentti pyrkii itse keräämään niin paljon plussaa kuin pystyy. Loppuosa tästä kurssista käsittelee erilaisia algoritmeja joita voi käyttää tällaisessa agentissa. 2 Ongelmanratkaisu verkkohakuna Olkoon älykäs toimijamme (luku 1.4) autolomalla Romaniassa. Se on nyt Aradin kaupungissa, mutta sen pitää päästä seuraavaksi suoraan Bucharestiin, jotta se ehtisi paluulennolleen takaisin omaan kotimaahansa. Niinpä se levittää auki Romanian tiekartan (kuva 5) ja alkaa hakea reittiä kartan esittämässä tieverkossa. Tämä on esimerkki ongelman hierarkisesta käsittelystä joka on usein käytännössä välttämätöntä. Ylemmän hierarkiatason ongelma on Miten pääsisin suoraan Bucharestiin? Kartan tasolla etsitään ratkaisua ylemmän tason ongelmaan: Aja reittiä Arad Sibiu Rimnicu Vilcea Pitesti Bucharest!. Alemmilla tasoilla valittu ajoreitti purkautuu edelleen osatavoitteiksi etsi Aradin kartalta ajoreitti tästä paikasta Sibiuun vievän valtatien liittymään ja niiden ratkaisuiksi,... Hierarkian välitasolla (kuten kartan tasolla) yksinkertaistamme älykkään toimijamme rakennetta. Ylemmän tason näkökulmasta tämän tason mutkikaskin vastaus (kuten Aja reittiä Arad Bucharest!) on vain yksittäinen iso teko. Tällä tasolla emme siis välitä kertoimesta γ, koska ylempi taso diskonttaa tällaiset sen näkökulmasta yksittäiset teot. Tällä tasolla emme myöskään maksimoi hyötyfunktiota f: Ylempi taso tietää, mikä sen antaman tavoitteen (kuten olla Bucharestissa) f-arvo on. Päätöksentekoaan varten ylempi taso haluaa kuitenkin saada myös tämän tason ehdottaman yksittäisen teon kustannukset (kuten ehdotetun reitin Arad Bucharest pituuden). Välitasolla emme toisaalta tiedä matalamman tason tekojen (kuten käännä auto vasemmalle) onnistumistodennäköisyyksiä. Oletetaan siis, että tämän tason ehdottaman ratkaisun osat (kuten aja Arad Sibiu) onnistuvat. Näin tällä välitasolla oikean politiikan π valinta palautuu lyhyimmän polun etsintään verkossa (kuten tiekartalla). 11

14 71 Oradea Neamt Arad Zerind 140 Timisoara 151 Sibiu 99 Fagaras 80 Rimnicu Vilcea 87 Iasi 92 Vaslui 111 Lugoj 97 Pitesti Dobreta Mehadia Urziceni 138 Bucharest 90 Craiova Giurgiu Hirsova 86 Eforie (Russell and Norvig, 2003, Figure 3.2) Kuva 5: Yksinkertaistettu Romanian tiekartta. Toisin kuin Tietorakenteet ja algoritmit -kurssilla, tämä verkko G voi yleisessä tapauksessa olla hyvin suuri (jopa ääretön!) ja siksi annettu vain implisiittisenä syötteenä: alkusolmuna n 0 V (G) josta haku lähtee. (Romania-esimerkissämme siis n 0 = Arad.) lopputestinä maali(n) = onko tämä solmu n V (G) sallittu ratkaisupolun π päätepisteeksi? (Esimerkissä Onko n = Bucharest?) vierusfunktiona seuraajat(n) = niiden solmujen n joukko, joihin tästä solmusta n V (G) on kaari n n E(G). Oletamme, että nämä joukot ovat aina äärellisiä. (Esimerkissä ne kaupungit, joihin on suora tie kaupungista n.) kustannusfunktiona joka antaa jokaiselle kaarelle pituuden n kustannus(n,n ) n. Oletamme, että jokainen kustannus(n, n ) 0. (Esimerkissä kaupunkien n ja n välisen suoran tien pituus kilometreinä.) Tällaiselle hakuongelmalle on omat vakiintuneet terminsä (jotka valitettavasti menevät osin päällekkäin POMDP-termien kanssa). Solmuja n V (G) kutsutaan myös tiloiksi (state). Koko solmujoukkoa V (G) kutsutaan vastaavasti tila-avaruudeksi (state space). Lopputesti voidaan antaa lopputilojen joukkona F V (G). Vierusfunktio voidaan antaa kokoelmana operaattoreita (operator) o 1, o 2, o 3,..., o m. Jokainen o i : V (G) V (G) on osittaisfunktio siten, että o i (n) on määritelty joss n o i (n) E(G). Silloin korostetaan yhteyttä tekoihin: Jos o i (n) on määritelty, niin silloin tilassa n voidaan suorittaa operaatio o i jonka tuloksena saadaan tila o i (n). 12

15 Start State Goal State (Russell and Norvig, 2003, Figure 3.4) Kuva 6: 8-puzzle. (Russell and Norvig, 2003, Figure 24.7(a)) Kuva 7: Rubikin kuutio. Silloin ongelma on löytää sellainen operaatiojono, jolla annetusta alkutilasta päästään johonkin lopputiloista (ja jonka kokonaiskustannuskin olisi matala). Tätä kutsutaan tila-avaruushauksi (state space search). Esimerkiksi lasten 8-puzzle (kuva 6) (tavallisempi on 15-): Tilat: Kaikki 3 3 ruudukot, joihin on kirjoitettu numerot 1, 2, 3,..., 8. Operaattorit: o yllä, o alla, o vasemmalla, o oikealla. Sellainen o i soveltuu jos tyhjällä ruudulla on naapuri i. Tuloksena on ruudukko, jossa nämä naapurukset ovat vaihtaneet sisältöjään. Lopputila: Kuvan oikea puolisko. Kustannus: 1 yksikkö/operaattori, eli halutaan jokin mahdollisimman lyhyt siirtosarja. Tai Rubikin kuutio (kuva 7): Tilat: Kuution liikkuvat osat ovat 8 nurkka- ja 12 reunapalaa, joilla on eri väriyhdistelmät, joten niiden eri asennot toisiinsa nähden. Operaattorit: Sen 6 sivutahkon kierrot ±90. Lopputila: Jokainen sivu saman värinen kuin keskiruutunsa. Kustannus: 1/kierto. 13

16 Tila-avaruushakumenetelmät jaotellaan sen mukaan, käyttävätkö ne tehtäväkohtaista lisäinformaatiota. Systemaattinen haku ei käytä, vaan tutkii verkkoa G tuttujen verkkoalgoritmien tapaan, mutta sovellettuna implisiittiselle G. Heuristinen haku saa lisäinformaationa arvion siitä, kuinka lähellä nykyinen tila on lopputestin toteuttamista paljon sillä on matkaa jäljellä lähimpään lopputilaan ja hakeutuu kohden maaliaan tämän lämpenee, lämpenee,... / kylmenee, kylmenee,... -informaation avulla. Heuristinen haku on sitä tehokkaampaa mitä tarkempi sen käyttämä heuristinen mitta on tehokkaampaa kuin systemaattinen jo silloin, kun sen mitta ei ole kovinkaan tarkka. Nämä menetelmät kasvattavat hakupuuta (search tree) (kuva 8). Hakupuu esittää tähän mennessä löydetyt polut seuraavasti: Jokaiseen puusolmuun t liittyy jokin etsintäavaruuden tila t. tila = se, johon tätä polkua seuraamalla lopulta päädyttäisiin. Koko puun juuressa tämä tila = koko haun alkutila. Jokaisessa puusolmussa t on osoitin t. seuraa sen isäsolmuun. Puu onkin siis linkitetty lapsisolmusta isäsolmuun eli alhaalta ylös. Juuressa tämä linkki =. Silloin linkkiketju puusolmusta t takaisin juureen t t. seuraa t t. seuraa t esittää takaperin yhden löydetyn polun t. seuraa t t. seuraa juuri t. tila t. tila t. tila t. tila alkutila. Tämän polun pituus on solmun kenttänä t. hinta = kustannus(t, t) + kustannus(t, t ) Abstraktisti hakupuun kasvattaminen (kuva 9) alkaa juurisolmusta r (rivi 1). valitsee käsiteltäväkseen jonkin vielä keskeneräisen puusolmun t (rivi 3). Eri konkreettiset menetelmät valitsevat tämän t eri tavoin. Koodissa näillä eri menetelmillä on eri tietorakenne joukon kesken toteutuksena. löytää ratkaisun jos tämä valittu t täyttää maali ehdon (rivi 4). Ehtoa ei testata heti kun solmu luodaan, vaan vasta kun se valitaan: sillä välin voi näet löytyä parempiakin vaihtoehtoja! 14

17 PARENT-NODE STATE Node ACTION = right DEPTH = 6 PATH-COST = Ympyrät ovat hakupuun solmuja. State on tämän solmun Node. tila. Parent-Node on sen Node. seuraa. Path-Cost on sen Node. hinta. Puusolmuun Node voi tallettaa myös muita hyödyllisiä lisätietoja: Sen operaattorin (Action) jolla edellisestä Node. seuraa. tilasta saatiin tämä Node. tila, sen syvyyden hakupuussa (Depth) = kuinka monen linkin päässä se on juuresta,... (Russell and Norvig, 2003, Figure 3.8) Kuva 8: Hakupuun solmu. 1 r new hakupuusolmu; r. tila haun alkutila; r. seuraa ; r. hinta 0; alusta tietorakenne kesken alkiolla r; 2 valmiit 3 repeat valitse ja poista jokin t tietorakenteesta kesken 4 if maali(t. tila) then return ratkaisuna solmuun t päättyvä polku 5 if t. tila valmiit then continue silmukkaa riviltä 10 6 valmiit valmiit {t. tila} 7 for each s seuraajat(t. tila) 8 do u new hakupuusolmu; u. tila s; u. seuraa t; u. hinta t. hinta + kustannus(t. tila, s); 9 lisää u tietorakenteeseen kesken 10 until tietorakenne kesken on tyhjä 11 return ratkaisua ei ole olemassa (Russell and Norvig, 2003, Figures 3.9 and 3.19) Kuva 9: Hakupuun kasvatusmenetelmä. 15

18 (a) The initial state Arad Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Arad Lugoj Arad Oradea (b) After expanding Arad Arad Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Arad Lugoj Arad Oradea (c) After expanding Sibiu Arad Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Arad Lugoj Arad Oradea Kehystetyt puusolmut ovat vielä keskeneräisiä. Tummennetut on jo laajennettu. Muita ei ole vielä edes luotu. (Russell and Norvig, 2003, Figure 3.6) Kuva 10: Esimerkki hakupuun kasvusta. laajentaa (expands) valitun solmun t valmiiksi luomalla sille kaikki mahdolliset lapsisolmut u (rivi 7) keskeneräisinä (rivi 9). Sama tila s voi siis olla useassa yhtä aikaa keskeneräisessä solmussa, koska ne edustavat eri polkuja tilaan s. lopettaa haun turhana jos tällaista t ei enää voi valita (rivi 10). Joukko valmiit koostuu niistä tiloista joiden seuraajat on jo kerran tuotettu (rivit 2 ja 6) varmistaa ettei niitä tuoteta enää toiste (rivi 5). Siis kun esimerkin (kuva 10) kohdassa (c) valitaan puusolmu t = Arad, niin sitä ei laajennetakaan, koska puussa on jo solmu Arad. Tämä onkin järkevää, koska vastaavia ajoreittejäkään ei kannata tutkia. Arad Sibiu Arad Toiston poisto vähentää yleensä selvästi (jopa eksponentiaalisesti) haun työtaakkaa (kuva 11). Joskus kuitenkin luovumme joukosta valmiit (eli jätämme pois sen käsittelyrivit 2, 5 ja 6). 16

19 A A B B B A C C C C C D (a) (b) (c) Esimerkiksi ristikossa (grid) (c) on 4 d erilaista d askeleen mittaista polkua jotka lähtevät samasta alkutilasta A. Niillä kuitenkin esiintyy vain 2 d d + 1 erilaista tilaa. Arvolla d = 20 eri polkuja on mutta eri tiloja niissä vain 841. (Russell and Norvig, 2003, Figure 3.18) Kuva 11: Tila-avaruuksia, joissa sama tila toistuu eksponentiaalisen usein. Itse tila-avaruus voi olla puumainen eli tilat eivät edes voi toistua (kuva 12). Tila-avaruus kannattaakin suunnitella sellaiseksi jos mahdollista. Käytössämme ei ehkä ole muistia tarpeeksi tallettamaan kaikki aikaisemmin tehty hakutyö. Sen sijaan meidän täytyykin tehdä samankaltaista hakua yhä uudelleen samassa muistitilassa. Voimme tarkastella tila-avaruushakumenetelmän täydellisyyttä (completeness) eli löytääkö se ratkaisun, jos sellainen on olemassa? Se ei ole varmaa: menetelmähän voi vaikka jäädä kiertämään kehää. optimaalisuutta (optimality) eli löytääkö se mahdollisimman halvan ratkaisun? Sekään ei ole varmaa: menetelmähän voi valita maaliehdon kyllä täyttävän mutta huonon t (rivillä 3) vaikka parempiakin olisi tarjolla. ajan tarvetta. Luonteva yksikkö on tehtyjen hakupuusolmun luontiaskelten new kokonaismäärä suhteessa syötteen kokoon. Siis ei mitata aputietorakenteiden kesken ja valmiit käsittelyyn kuluvaa aikaa. muistin tarvetta eli yhtä aikaa muistissa pidettyjen hakupuusolmujen maksimimäärää suhteessa syötteen kokoon. Nyt syöte onkin implisiittinen verkko G, ja sellaisen kokoa on hankala määritellä. Käytämme seuraavaa yksinkertaistusta: G onkin puu(mainen tila-avaruus). Unohdamme siis joukon valmiit tehostavan vaikutuksen; se riippuisi hyvin paljon kunkin tila-avaruuden sisäisestä rakenteesta. b on sen haarautumisaste, eli montako seuraajaa tilalla voi enintään olla. Oletamme b > 1. Voi olla myös keskimääräinen: jos 80% tiloista on 2 seuraajaa ja lopuilla 3, niin koko avaruuden b =

20 (Russell and Norvig, 2003, Figure 3.5) Miten sijoittaisit 8 8 (tai yleistettynä N N) ruudun shakkilaudalle 8 (tai N) kuningatarta siten, etteivät ne uhkaa toisiaan? Ei siis aivan näin... Jos päätetään täyttää lauta ylhäältä alas eli valitaan operaattoreiksi valitse laudan ylimmältä vielä tyhjältä riviltä jokin ruutu jota ei uhata niin tila-avaruudesta tulee puu. Kuva 12: 8 kuningattaren ongelma. d on halkaisija (diameter) eli pienin syvyys (= kuinka monta kaarta on polulla juuresta tänne?) jolta löytyy maaliehdon täyttävä tila. Siis jokaisessa ratkaisussa on d + 1 tilaa. m on sen korkeus (= suurin syvyys), joka voi olla myös ääretön. Siis jokaisella tarkasteltavalla polulla on m + 1 tilaa. 2.1 Systemaattinen haku Leveyshaku Leveyshaku (breadth-rst search, BFS) valitsee aina sen puusolmun t joka on odottanut kauimmin käsittelyä. Se toteutetaan säilyttämällä keskeneräiset puusolmut jonossa (queue) (esimerkiksi Cormen et al., 2001, Chapter 10.1). Siis perusmenetelmästä (kuva 9) tehdään versio, jossa rivillä 1 luodaan jono, jossa on aluksi vain yksi alkio, eli juurisolmu r 3 otetaan jonon alusta sen ensimmäinen alkio t 9 liitetään jonon loppuun uusi alkio u 10 testataan onko jono tyhjä vaiko ei. Se etenee puumaisessa tila-avaruudessa systemaattisesti kokonainen syvyystaso kerrallaan (kuva 13). Täydellinen? Kyllä! Käy läpi myös koko matalimman ratkaisutason d. Optimaalinen? Ei koska ei ota huomioon kaarten kustannuksia. 18

21 A A A A B C B C B C B C D E F G D E F G D E F G D E F G Nuoli osoittaa valitun solmun. (Russell and Norvig, 2003, Figure 3.10) Kuva 13: Leveyshakuesimerkki. Aika? Käy läpi puun jonka haarautumisaste = b ja korkeus = d ja sellaisessa on b d+1 1 b 1 O(b d ) (1) solmua (kun b > 1). Tila? = aika, koska jokainen jo laajennettu solmu on yhä jonkin keskeneräisen solmun seuraa-listassa, eikä sitä voi siis tuhota. Käytännössä vakava ongelma: Syvin mahdollinen d O(log b (muistin määrä))! Tasahintahaku Tasahintahaku (uniform-cost search) valitsee aina jonkin sellaisen puusolmun t jonka t. hinta on pienin. Se toteutetaan keskeneräisten puusolmujen minimikekona (heap) (esimerkiksi Cormen et al., 2001, Chapters ). Erityisesti rivillä 3 (kuva 9) poistetaan keosta sen päällimmäinen alkio t. Täydellinen? Kyllä jos tila-avaruudessa ei ole ääretöntä polkua e n 1 e 1 2 e n2 3 n3 (2) jonka kokonaishinta e 1 + e 2 + e 3 + pysyisi silti äärellisenä. (Näinhän voi käydä esimerkiksi jos e i = 1 2 i.) Tämä ehto täyttyy esimerkiksi jos on sellainen vakioalaraja ε > 0 että jokainen kustannus(n, n ) ε. Optimaalinen? Kyllä! Koska kun valitaan ensimmäinen maalisolmu, niin muut keskeneräiset ovat ainakin yhtä hintavia. Aika? Siihen vaikuttaa myös erilaisten kustannusten suuruus ja sijainti syöteverkossa G. Näitä vaikutuksia voidaan arvioida joka osoittaa menetelmän ongelman: Jos on jokin halpa kaari O ( (parhaan ratkaisun b kokonaishinta)/ε) nyt valittu t. tila ε sen seuraaja s (3) niin varsin luultavasti kohta valitaan myös s. 19

22 Menetelmä juuttuu siis nysväämään halpojen kaarten kanssa. Intuitiivisesti: Ollakseen varma vastauksensa optimaalisuudesta ei tämä systemaattinen menetelmä uskalla olla tarkistamatta ensin kaikkia mahdollisia halpoja kaaria. Tila? = aika, koska käyttäytyy samoin kuin leveyshaku (luku 2.1.1) eli ongelmallisesti Dijkstran algoritmi Klassisessa algoritmiikassa suositaan (Edsger W.) Dijkstran algoritmia (esimerkiksi Cormen et al., 2001, Chapter 24.3) silloin kun pitää löytää verkossa halvimmat polut annetusta lähtösolmusta alkaen ja jokainen kustannus(n, n ) 0. Tila-avaruushakumentelmänä se voidaan nähdä tasahintahaun (luku 2.1.2) varianttina. Asetamme tavoitteeksemme, että jokaisella tähän mennessä kohdatulla hakuavaruuden tilalla s on vain yksi sitä vastaava puusolmu t. (Eli sellainen jolla t. tila = s.) Siispä meidän on muistettava kaikki valmiit tilat jotta emme tee niistä uusia kopioita kekoon kesken päivitettävä keossa kesken olevan puusolmun t muita kenttiä aina kun löydämme vielä halvemman polun tilaan t. tila. Dijkstran algoritmin keskeinen oivallus onkin, että koska jokainen kustannus(n, n ) 0, niin silloin emme enää voi löytää halvempia polkuja sellaisiin tiloihin, jotka on laajennettu jo aikaisemmin. Jos negatiiviset kustannukset sallitaan, niin se pitääkin korvata jollakin hitaammalla algoritmilla, kuten Bellmanin ja Fordin (esimerkiksi Cormen et al., 2001, Chapter 24.1). Tämä oivallus = tasahintahaun optimaalisuusperustelu sovitettuna solmujen päivityksiin. Dijkstran algoritmi tarvitsee tietorakenteen, johon talletetaan jokainen tähän mennessä kohdattu tila. Siis kohdattuihin kuuluvat kaikki valmiit tilat sekä keskeneräisten solmujen keko. Keon kesken pitää tukea siihen kuuluvan alkion nostoa sen avaimen pienentyessä. Se on hakurakenne (hakupuu tai hajautustaulu (esimerkiksi Cormen et al., 2001, Chapters 1113)) jossa { t jos sitä vastaava puusolmu t on jo luotu kohdattu(s) = jos tilaa s ei olekaan vielä kohdattu. 20

23 1 alusta keko kesken kuten rivillä 1 (kuva 9) sekä myös kohdattu juurella r 2 repeat poista keosta kesken sen pienin alkio t 3 if maali(t. tila) then return ratkaisuna solmuun t päättyvä polku 4 for each s seuraajat(t. tila) do t kohdattu(s) 5 if t = 6 then luo uusi puusolmu u ja alusta sen kentät kuten rivillä 8 (kuva 9), ja lisää se sekä kekoon kesken että rakenteeseen kohdattu 7 elseif t. hinta > t. hinta + kustannus(t. tila, s) } {{ } 8 merkitään δ then t. hinta δ; t. seuraa t 9 nosta myös keossa kesken oleva solmu t kutistuneen avaimensa δ mukaiselle paikalle 10 until keko kesken on tyhjä 11 return ratkaisua ei ole olemassa Kuva 14: Dijkstran algoritmi sovitettuna tila-avaruushakuun. Rivillä 7 (kuva 14) on löydetty jo aikaisemmin kohdattuun tilaan t. tila uusi polku, joka tuleekin siihen tilasta t. tila ja jonka hinta onkin δ. Jos se onkin tilan nykyistä polkua halvempi, niin sitten tehdäänkin vastaava päivitykset, jotta keon kesken eheysehdot (invariantit) saadaan takaisin voimaan. 8: keskeneräisen puusolmun t polku on aina halvin niistä, jotka kulkevat jo laajennettujen tilojen kautta. 9: seuraavaksi valitaan aina sellainen keskeneräinen puusolmu jonka t. hinta on pienin. Tämä ehto oli jo tasahintahaussa (luku 2.1.2). Dijkstran menetelmä luo vähemmän uusia hakupuusolmuja u kuin tasahintahaku (koska keskeneräisissäkään ei ole kopioita) mutta vaatii mutkikkaamman kekorakenteen, koska sen täytyy pystyä myös nostamaan solmuja rivillä 9. Kääntäen, tasahintahaku onkin mielekäs Dijkstran algoritmin toteutus jos muistia on riittävästi, ja valmiina on kekorakenne (esimerkiksi jossakin tietorakennekirjastossa) joka ei tarjoakaan nosto-operaatiota, tai ei voi muokata kertaalleen alustettua muistia. Näin on esimerkiksi ns. funktionaalisessa ja logiikkaohjelmoinnissa. Molemmilla menetelmillä on kuitenkin samat ongelmat: 21

24 leveyshaun (luku 2.1.1) mukainen muistintarve (koska se riippuu kohdattujen tilojen kokonaismäärästä, ei kopioista) ε-kaaret (3) Syvyyshaku Syvyyshaku (Depth-First Search, DFS) käy läpi nykyisen solmun t jälkeen sen lapset u ja niistä alkavat alipuut systemaattisesti. Se saadaan perusmenetelmästä (luku 9) toteuttamalla keskeneräisten solmujen kokoelma pinona (stack) (esimerkiksi Cormen et al., 2001, Chapter 10.1). Syvyyshaku säästää muistia koska sen tarvitsee muistaa vain nykyinen polku (kuva 15) (+ sen jokaisen solmun t vielä käsittelemättömät lapset u). Tila? Vain O(b m)! Jos lisäksi seuraajat(t) voidaan tuottaa inkrementaalisesti eli yksi kerrallaan (kuva 16), niin silloin tilaa tarvitaan enää O(m) koska edes sen keskeneräisiä lapsia ei vielä ole. Aika? O(b m ) kuten yhtälössä (1). Täydellinen? Ei! Jos m = niin eksyy äärettömään haaraan (ellei löydä ensimmäistä ratkaisua ennen sitä). Optimaalinen? Ei koska ei ota huomioon kaarten kustannuksia. Syvyyshaun voi tunnetusti toteuttaa myös rekursiolla (kuva 16). Silloin sitä kutsutaan peruuttavaksi (backtracking) hauksi. Syvyyshaussa ei muistetakaan valmiita tiloja, vaan laajennetaankin ne yhä uudestaan muutenhan se ei säästäisikään muistia! Toistava syventäminen Leveyshaku (luku 2.1.1) on täydellinen mutta muistisyöppö, syvyyshaku (luku 2.1.4) taas päinvastoin. Toistava syventäminen (Iterative Deepening) on tekniikka joka yhdistää niiden hyvät puolet. Se lieneekin suositeltavin systemaattinen hakumenetelmä silloin kun tila-avaruus on liian suuri mahtuakseen muistiin, ja lähimmän ratkaisun syvyyttä d ei tunneta etukäteen. Ensimmäiseksi lisäämme syvyyshakuun uutena parametrina syvyysrajan l. Se ilmoittaa, kuinka monta tasoa syvemmälle haku saa vielä edetä. Haku katkaistaan kesken kun l = 0. Tämä katkaisee äärettömät polut ilman että pitäisi muistaa valmiita tiloja. Nyt syvyyshaku voi epäonnistua kahdella eri tavalla: joko laajennettavien tilojen loppumiseen, kuten ennenkin 22

25 A A A B C B C B C D E F G H I J K L M N O D E F G H I J K L M N O D E F G H I J K L M N O A A A B C B C B C D E F G H I J K L M N O D E F G H I J K L M N O D E F G H I J K L M N O A A A B C B C B C D E F G H I J K L M N O D E F G H I J K L M N O D E F G H I J K L M N O A A A B C B C B C D E F G H I J K L M N O D E F G H I J K L M N O D E F G H I J K L M N O Koko puun korkeus on 3. Nuoli osoittaa valitun solmun. Kun solmulla ei ole enää yhtään keskeneräistä (= valkoista) jälkeläistä, niin se voidaan poistaa muistista (= värjätä mustaksi). (Russell and Norvig, 2003, Figure 3.12) Kuva 15: Esimerkki syvyyshausta. dfs(t : tila) 1 if maali(t) then return ratkaisuna rekursiopinossa olevat solmut päinvastaisessa järjestyksessä 2 while seuraajat(t) sisältää lisää tiloja 3 do s ota niistä seuraava 4 if dfs(s) palauttaa jonkin ratkaisun then return se sama ratkaisu 5 return ratkaisua ei ole olemassa Kuva 16: Syvyyshaku rekursiolla. 23

26 dls(t, l) 1 if maali(t) then return ratkaisuna rekursiopinossa olevat solmut päinvastaisessa järjestyksessä 2 if l = 0 then return katkaisu 3 w loppu 4 while seuraajat(t) sisältää lisää tiloja 5 do s ota niistä seuraava 6 if dls(s, l 1) palautti jonkin ratkaisun then return se sama ratkaisu 7 elseif se palauttikin katkaisun then w katkaisu 8 return w Kuva 17: Syvyysrajoitettu haku. tai katkaisuun. Näin saadaan syvyysrajoitettu (Depth-Limited) haku (kuva 17). Jos kutsun dls(s, k) tulos on ratkaisu niin se on löytänyt alkutilalle s jonkin sellaisen ratkaisun, jossa on k kaarta katkaisu niin yhtään k kaaren ratkaisua ei ole olemassa loppu niin ratkaisua ei yleensäkään ole olemassa, ei edes vaikka sallittaisiin > k kaarta. Tila? Sama O(k) tai O(b k) kuten rajoittamattomassakin syvyyshaussa. Aika? O(b k ) yhtälöstä (1). Optimaalinen? Samoin ei. Täydellinen? Kyllä jos (ε-ehto (2) pätee ja) osaamme antaa kutsussa tarpeeksi suuren alkuarvon k d... mutta miten? Jos osaamme laskea annetusta alkutilasta s alkavan tila-avaruuden halkaisija(lle yläraja)n, niin riittää kutsua 1 dls(s, halkaisija(s)) Tavallisesti emme kuitenkaan osaa. Sen sijaan voimme toistaa syvyysrajoitettuja hakuja eri alkuarvoilla k 0, 1, 2,... kunnes (tai jos) jokin niistä tärppää. (kuva 18) 24

27 1 k 0 2 repeat v dls(s, k) (kuva 17) k k + 1 until v katkaisu 3 return v Kuva 18: Toistavan syventämisen pääohjelma. Tila? Vain O(d) tai O(b d) koska eri dls-kutsut käyttävät saman muistin yhä uudelleen! Optimaalinen? Ei koska tehdään syvyyshakua. Täydellinen? Kyllä (jos ε-ehto (2) pätee): Aikanaan k d ja silloin tärppää. Aika? Näyttää pahalta, sama työ toistuu yhä uudelleen... Mutta ei ole! Intuitiivinen perustelu: Kun (rekursiokutsu)puun jokaisella muulla solmulla on täydet b > 1 lasta, niin lehtisolmuja on enemmän kuin muita. Esimerkiksi jo täydellisessä binääripuussa (b = 2) on aina yksi lehti enemmän kuin sisäsolmuja. Siis jokaisen rekursiokutsun dls(s, k) aikaa dominoi alimman syvyystason k solmujen määrä. Siis koko toistamisen aikaa dominoikin sen viimeisen kutsun dls(s, d) aika! Käytännössä jopa nopeampaa kuin leveyshaku koska sen ei tarvitse luoda syvyystason d + 1 turhia solmuja. Formaalimpana perusteluna voidaan laskea d k=0 b k+1 1 b 1 } {{ } yhtälö (1) = b b 1 } {{ } vakio O(b d ) edelleen b d+1 1 d + 1 } b {{ 1 } b 1 dls(s,d):n aika (4) josta nähdään: Kokonaisaika on vain vakiokertoimen päässä viimeisen kutsun dls(s, d) ajasta. Siis aikaisemmat kutsut eivät juurikaan vaikuta. dls(s, 0), dls(s, 1), dls(s, 2),..., dls(s, d 1) Tämä vakiokerroin on sitä pienempi mitä suurempi haarautumisaste b on. Siis aikaisempien kutsujen osuus on sitä pienempi mitä enemmän tiloissa on etenemisvaihtoehtoja. Perusteluissa oletettiin, että jokainen (muu kuin lehti)solmu saa kaikki b lasta. Jos näin ei ole, niin pitääkin käyttää keskimääräistä b. Jos se taas on pieni ( 2) niin menetelmä hidastuu vastaavasti. 25

28 Limit = 0 A A Limit = 1 A A A A B C B C B C B C Limit = 2 A A A A B C B C B C B C D E F G D E F G D E F G D E F G A A A A B C B C B C B C D E F G D E F G D E F G D E F G Limit = 3 A A A A B C B C B C B C D E F G D E F G D E F G D E F G H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O A A A A B C B C B C B C D E F G D E F G D E F G D E F G H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O A A A A B C B C B C B C D E F G D E F G D E F G D E F G H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O (Russell and Norvig, 2003, Figure 3.15) Kuva 19: Esimerkki toistavasta syventämisestä. Toistavan syventämisen ideaa voi soveltaa myös optimaaliseen hakuun: Eksplisiittisen syvyysaskelluksen k 0, 1, 2,..., d sijaan kasvatetaankin joka kierroksella hintarajaa j seuraavaan suurempaan arvoon, jolla haku olisi edennyt nykyistä syvemmälle. Siirtyminen vain juuri seuraavaan j (eikä yhtään pidemmälle) takaa optimaalisuuden. Ehdotukset i seuraavaksi j voidaan palauttaa rekursiossa osana katkaisutulosta. Silloin lopputulos on katkaisu jonka j =. Näin saadaan toistavasti pidentävä (lengthening) haku (kuva 20). Toistava pidentäminen on kuitenkin paljon hitaampi kuin (muistia tuhlaava mutta optimaalinen) tasahintahaku (luku 2.1.2). Hintarajan j varovainen kasvattaminen merkitsee, että seuraava kutsu rekursiokutsu dls2(s, 0) ei tuotakaan kokonaista uutta hakupuun syvyystasoa, vaan ainoastaan muutamia uusia solmuja pahimmassa tapauksessa vain yhden! 26

29 1 j 0 joka on myös rekursion (kuva 21) globaali parametri. 2 repeat v dls2(s, 0) 3 if v = katkaisu i then j i until v katkaisu 4 return v Kuva 20: Toistavan pidentämisen pääohjelma. dls2(t, l) 1 if l > j then i l 2 elseif maali(t) then return ratkaisuna rekursiopinossa olevat solmut päinvastaisessa järjestyksessä 3 else i 4 for each s seuraajat(t) 5 do w dls2(s, l + kustannus(t, s)) 6 if w = katkaisu i then i min(i, i ) else return w 7 return katkaisu i Kuva 21: Toistavan pidentämisen rekursio. 27

30 Tämän vuoksi emme voikaan vedota samaan perusteluun (4) jonka mukaan toistava syventäminen ei ollut juurikaan hitaampaa kuin (muistia tuhlaava mutta täydellinen) syvyyshaku (luku 2.1.1). Tämä ongelma on sitä vakavampi mitä enemmän erilaisia mahdollisia arvoja kustannusfunktiolla on. Sitä enemmän on näet myös niiden erilaisia mahdollisia summia, ja jokainen sellainen hinta j käsitellään omana rekursiokutsunaan. Joudummekin palaamaan vielä myöhemmin siihen, miten optimaalista hakua voitaisiin tehdä vähemmällä muistilla. 2.2 Heuristinen haku Heuristisessa haussa käytössämme on siis todellisten kustannusten ohella myös lisäinformaatiota joka neuvoo, mihin suuntaan haun kannattaisi ehkä edetä ja mihin taas ei. Heuristiset hakumenetelmät pyrkivät suuntautumaan näiden neuvojen mukaisesti. Tämä lisäinformaatio esitetään heuristisena funktiona 0 heuristiikka(s) matka tilasta s sitä lähimpään maali tilaan. } {{ } luvallisuusehto Annettu heuristiikka on luvallinen (admissible) jos se ei ole pessimistinen eli ei arvioi vielä jäljellä olevaa matkaa suuremmaksi kuin se on. Keskitymme vain luvallisiin heuristiikkoihin, koska muunlaisilla on vaikea tehdä optimaalista hakua nehän voivat vaikkapa väittää parasta polua pahimmaksi... Erityisesti: jos maali(s) niin luvallinen heuristiikka(s) = 0. Aradista Bucharestiin -esimerkissämme eräs luvallinen heuristiikka on, että mitataan viivoittimella suoran viivan pituus kartalla (kuva 5) sieltä Bucharestiin ja muunnetaan tulos kilometreiksi kartan mittakaavalla (kuva 22) Ahne haku Ahne (Greedy, Best-First) haku luottaa sokeasti vain heuristiikkaansa: valitsee aina sellaisen hakupuusolmun t jonka on mahdollisimman pieni. heuristiikka(t. tila) Menetelmän voi toteuttaa tasahintahakuna (kuva 2.1.2) jossa keskeneräisten puusolmujen t keossa avaimena käytetäänkiin tätä arvoa. Menetelmä etenee nykyistä polkua niin kauan kuin heuristiikka pienenee, ja aina siihen suuntaan jossa se pienenee eniten (kuva 23). 28

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? 2013-2014 Lasse Lensu 2 Ongelma 2: Milloin ongelmat muuttuvat oikeasti hankaliksi? 2013-2014 Lasse Lensu 3 Ongelma 3: Miten hankalia ongelmia

Lisätiedot

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? 2012-2013 Lasse Lensu 2 Ongelma 2: Milloin ongelmat muuttuvat oikeasti hankaliksi? 2012-2013 Lasse Lensu 3 Ongelma 3: Miten hankalia ongelmia

Lisätiedot

Kognitiivinen mallintaminen 1

Kognitiivinen mallintaminen 1 Kognitiivinen mallintaminen 1 Uutta infoa: Kurssin kotisivut wikissä: http://wiki.helsinki.fi/display/kognitiotiede/cog241 Suorittaminen tentillä ja laskareilla (ei välikoetta 1. periodissa) Ongelmanratkaisu

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

13 Lyhimmät painotetut polut

13 Lyhimmät painotetut polut TIE-20100 Tietorakenteet ja algoritmit 297 13 Lyhimmät painotetut polut BFS löytää lyhimmän polun lähtösolmusta graafin saavutettaviin solmuihin. Se ei kuitenkaan enää suoriudu tehtävästä, jos kaarien

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

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit 811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

Nollasummapelit ja bayesilaiset pelit

Nollasummapelit ja bayesilaiset pelit Nollasummapelit ja bayesilaiset pelit Kristian Ovaska HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Seminaari: Peliteoria Helsinki 18. syyskuuta 2006 Sisältö 1 Johdanto 1 2 Nollasummapelit 1 2.1

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä

Lisätiedot

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

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

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

4 Heuristinen haku. Eero Hyvönen Helsingin yliopisto

4 Heuristinen haku. Eero Hyvönen Helsingin yliopisto 4 Heuristinen haku Eero Hyvönen Helsingin yliopisto Strategioita: - Breath-first - Uniform-cost - Depth-first - Depth-limited - Iterative deepening - Bidirectional Tekoäly, Eero Hyvönen, 2004 2 Heuristisen

Lisätiedot

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

5. Rajoitelaskenta (Constraint Satisfaction)

5. Rajoitelaskenta (Constraint Satisfaction) 5. Rajoitelaskenta (Constraint Satisfaction) Eero Hyvönen Helsingin yliopisto Solution = An assignment of values for the variables satifying the contraints Some CSPs: optimal solution is the best solution

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017

Lisätiedot

Kognitiivinen mallintaminen I

Kognitiivinen mallintaminen I Kognitiivinen mallintaminen I Symbolinen mallintaminen: 2. luento Ongelmanratkaisu Ongelmanratkaisu Rationaalinen agentti Ongelma-avaruus Hakustrategiat ongelma-avaruudessa sokea haku tietoinen haku heuristiikat

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

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella

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

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 3: 16.1.2017-3.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, 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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen) TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

Lisätiedot

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

Lisätiedot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

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

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

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

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

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on

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

Peliteoria Strategiapelit ja Nashin tasapaino. Sebastian Siikavirta sebastian.siikavirta@helsinki.fi

Peliteoria Strategiapelit ja Nashin tasapaino. Sebastian Siikavirta sebastian.siikavirta@helsinki.fi Peliteoria Strategiapelit ja Nashin tasapaino Sebastian Siikavirta sebastian.siikavirta@helsinki.fi Helsinki 11.09.2006 Peliteoria Tomi Pasanen HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö

Lisätiedot

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen) 58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 12.9.2018 ratkaisuja (Jyrki Kivinen) 1. [10 pistettä] Iso-O-merkintä. (a) Pitääkö paikkansa, että n 3 + 5 = O(n 3 )? Ratkaisu: Pitää paikkansa.

Lisätiedot

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille

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

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin. 3. Hakupuut Hakupuu on listaa tehokkaampi dynaamisen joukon toteutus. Erityisesti suurilla tietomäärillä hakupuu kannattaa tasapainottaa, jolloin päivitysoperaatioista tulee hankalampia toteuttaa mutta

Lisätiedot

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat

Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat Luento 2. Kieli merkitys ja logiikka 2: Helpot ja monimutkaiset Helpot ja monimutkaiset ongelmat Tehtävä: etsi säkillinen rahaa talosta, jossa on monta huonetta. Ratkaisu: täydellinen haku käy huoneet

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

isomeerejä yhteensä yhdeksän kappaletta.

isomeerejä yhteensä yhdeksän kappaletta. Tehtävä 2 : 1 Esitetään aluksi eräitä havaintoja. Jokaisella n Z + symbolilla H (n) merkitään kaikkien niiden verkkojen joukkoa, jotka vastaavat jotakin tehtävänannon ehtojen mukaista alkaanin hiiliketjua

Lisätiedot

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Graafin 3-värittyvyyden tutkinta T-79.165 Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Mikko Malinen, 36474R 29. maaliskuuta, 2005 Tiivistelmä Artikkelissa käydään läpi teoriaa, jonka avulla

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

Lisää pysähtymisaiheisia ongelmia Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti

Lisätiedot

1 Puu, Keko ja Prioriteettijono

1 Puu, Keko ja Prioriteettijono TIE-20100 Tietorakenteet ja algoritmit 1 1 Puu, Keko ja Prioriteettijono Tässä luvussa käsitellään algoritmien suunnitteluperiaatetta muunna ja hallitse (transform and conquer) Lisäksi esitellään binääripuun

Lisätiedot

TIE Tietorakenteet ja algoritmit 261

TIE Tietorakenteet ja algoritmit 261 TIE-20100 Tietorakenteet ja algoritmit 261 12 Graafit Seuraavaksi tutustutaan tietorakenteeseen, jonka muodostavat pisteet ja niiden välille muodostetut yhteydet graafiin. Keskitymme myös tyypillisimpiin

Lisätiedot

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja

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

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

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

Miten käydä läpi puun alkiot (traversal)?

Miten käydä läpi puun alkiot (traversal)? inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu

Lisätiedot

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 19.4.2018 Timo Männikkö Luento 10 Peruutusmenetelmä Osajoukon summa Verkon 3-väritys Pelipuut Pelipuun läpikäynti Algoritmit 2 Kevät 2018 Luento 10 To 19.4.2018 2/34 Algoritmien

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen Luento omatoimisen luennan tueksi algoritmiikan tutkimusseminaarissa 23.9.2002. 1 Sisältö Esitellään ongelmat Steiner-puu Kauppamatkustajan

Lisätiedot

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint. Yleiset hakupuut 4 Monitiehakupuu: Binäärihakupuu 0 1 3 5 6 7 8 v k 1 k k 3 v v 3 v 4 k 1 k 3 k 1 k k k 3 d lapsisolmua d 1 avainta Yleinen hakupuu? Tietorakenteet, syksy 007 1 Esimerkki monitiehakupuusta

Lisätiedot

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen

Lisätiedot

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Approbatur 3, demo 1, ratkaisut 1.1. A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Käydään kaikki vaihtoehdot läpi. Jos A on rehti, niin B on retku, koska muuten

Lisätiedot

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly Bayesin pelit Kalle Siukola MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly 12.10.2016 Toistetun pelin esittäminen automaatin avulla Ekstensiivisen muodon puu on tehoton esitystapa, jos peliä

Lisätiedot

4 Tehokkuus ja algoritmien suunnittelu

4 Tehokkuus ja algoritmien suunnittelu TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin

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

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

Harjoitus 6 ( )

Harjoitus 6 ( ) Harjoitus 6 (21.4.2015) Tehtävä 1 Määritelmän (ks. luentomoniste s. 109) mukaan yleisen, muotoa min f(x) s. t. g(x) 0 h(x) = 0 x X olevan optimointitehtävän Lagrangen duaali on missä max θ(u, v) s. t.

Lisätiedot

Todistusmenetelmiä Miksi pitää todistaa?

Todistusmenetelmiä Miksi pitää todistaa? Todistusmenetelmiä Miksi pitää todistaa? LUKUTEORIA JA TO- DISTAMINEN, MAA11 Todistus on looginen päättelyketju, jossa oletuksista, määritelmistä, aksioomeista sekä aiemmin todistetuista tuloksista lähtien

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta 811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta jälkiosasta IV Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden aikakompleksisuus

Lisätiedot

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys

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

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen

Lisätiedot

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2 Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,

Lisätiedot

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n)) Määritelmä: on O(g(n)), jos on olemassa vakioarvot n 0 > 0 ja c > 0 siten, että c g(n) kun n > n 0 O eli iso-o tai ordo ilmaisee asymptoottisen ylärajan resurssivaatimusten kasvun suuruusluokalle Samankaltaisia

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

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun: Tietorakenteet ja algoritmit, kevät 201 Kurssikoe 1, ratkaisuja 1. Tehtävästä sai yhden pisteen per kohta. (a) Invariantteja voidaan käyttää algoritmin oikeellisuustodistuksissa Jokin väittämä osoitetaan

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

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme geneeristä painamiskorotusalgoritmia Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi

Lisätiedot

T : Max-flow / min-cut -ongelmat

T : Max-flow / min-cut -ongelmat T-61.152: -ongelmat 4.3.2008 Sisältö 1 Määritelmät Esimerkki 2 Max-flow Graafin leikkaus Min-cut Max-flow:n ja min-cut:n yhteys 3 Perusajatus Pseudokoodi Tarkastelu 4 T-61.152: -ongelmat Virtausverkko

Lisätiedot

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu

Lisätiedot

LAUSELOGIIKKA (1) Sanalliset ilmaisut ovat usein epätarkkoja. On ilmaisuja, joista voidaan sanoa, että ne ovat tosia tai epätosia, mutta eivät molempia. Ilmaisuja, joihin voidaan liittää totuusarvoja (tosi,

Lisätiedot

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä 1 1. Etsi lukujen 4655 ja 12075 suurin yhteinen tekijä ja lausu se kyseisten lukujen lineaarikombinaationa ilman laskimen

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia

Lisätiedot

Sovellettu todennäköisyyslaskenta B

Sovellettu todennäköisyyslaskenta B Sovellettu todennäköisyyslaskenta B Antti Rasila 14. syyskuuta 2007 Antti Rasila () TodB 14. syyskuuta 2007 1 / 21 1 Kokonaistodennäköisyys ja Bayesin kaava Otosavaruuden ositus Kokonaistodennäköisyyden

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

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta 811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden

Lisätiedot

Verkon värittämistä hajautetuilla algoritmeilla

Verkon värittämistä hajautetuilla algoritmeilla Verkon värittämistä hajautetuilla algoritmeilla 5 12 30 19 72 34 Jukka Suomela 15 77 18 4 9. tammikuuta 2012 19 2 68 Verkko 2 Verkko solmu 3 Verkko solmu kaari 4 Hajautettu järjestelmä solmu (tietokone)

Lisätiedot

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista 811312A Tietorakenteet ja algoritmit 2016-2017 III Lajittelualgoritmeista Sisältö 1. Johdanto 2. Pikalajittelu 3. Kekolajittelu 4. Lajittelualgoritmien suorituskyvyn rajoista 811312A TRA, Lajittelualgoritmeista

Lisätiedot

Informaation arvo. Ohjelmistotekniikan laitos OHJ-2550 Tekoäly, kevät

Informaation arvo. Ohjelmistotekniikan laitos OHJ-2550 Tekoäly, kevät 259 Informaation arvo Öljykenttään myydään porausoikeuksia, palstoja on n kappaletta, mutta vain yhdessä niistä on C euron edestä öljyä Yhden palstan hinta on C/n euroa Seismologi tarjoaa yritykselle tutkimustietoa

Lisätiedot

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö Algoritmit 2 Luento 12 Ke 26.4.2017 Timo Männikkö Luento 12 Rajoitehaku Kauppamatkustajan ongelma Lyhin virittävä puu Paikallinen etsintä Vaihtoalgoritmit Geneettiset algoritmit Simuloitu jäähdytys Algoritmit

Lisätiedot