.. X JOHDATUS TEKOÄLYYN TEEMU ROOS

Samankaltaiset tiedostot
JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

Kognitiivinen mallintaminen 1

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

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

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

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

13 Lyhimmät painotetut polut

Kognitiivinen mallintaminen I

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

T : Max-flow / min-cut -ongelmat

Johdatus tekoälyyn (T. Roos) Kurssikoe ARVOSTELUPERUSTEET

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

4 Heuristinen haku. Eero Hyvönen Helsingin yliopisto

Ohjelmistotekniikan laitos OHJ-2550 Tekoäly, kevät

Algoritmit 1. Luento 8 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

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.

JOHDATUS TEKOÄLYYN TEEMU ROOS

Johdatus graafiteoriaan

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

JOHDATUS TEKOÄLYYN TEEMU ROOS

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Lyhin kahden solmun välinen polku

JOHDATUS TEKOÄLYYN TEEMU ROOS

811312A Tietorakenteet ja algoritmit, , Harjoitus 6, Ratkaisu

Määrittelydokumentti

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

a. (2 p) Selitä Turingin koe. (Huom. ei Turingin kone.) Minkälainen tekoäly on saavutettu, kun Turingin koe ratkaistaan?

A* Reitinhaku Aloittelijoille

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Mat Lineaarinen ohjelmointi

Algoritmit 1. Luento 12 Ke Timo Männikkö

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö

Kaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

S BAB ABA A aas bba B bbs c

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

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

Algoritmit 1. Luento 13 Ma Timo Männikkö

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

A TIETORAKENTEET JA ALGORITMIT

Haku osittaisen informaation vallitessa

1. Primitiivirekursiiviset funktiot muodostetaan kolmesta perusfunktiosta käyttäen. succ(n) = n + 1

Kokeessa piti vastata viiteen (5) tehtävään kuudesta (6). Jokaisen tehtävän maksimipistemäärä on 8.

j n j a b a c a d b c c d m j b a c a d a c b d c c j

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

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

Englannin lausekerakenteita ja taulukkojäsentäminen

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

Algoritmit 2. Demot Timo Männikkö

Tietorakenteet ja algoritmit

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku

Johdatus tekoälyyn (T. Roos) Kurssikoe

Algoritmit 1. Demot Timo Männikkö

JOHDATUS TEKOÄLYYN TEEMU ROOS

Algoritmit 2. Luento 10 To Timo Männikkö

10. Painotetut graafit

Algoritmit 2. Luento 6 To Timo Männikkö

Rationaalinen agentti. Kognitiivinen mallintaminen I. Rationaalinen agentti. Rationaalinen agentti. Kognitiivinen mallintaminen I, kevät /1/08

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Luento 12 Ke Timo Männikkö

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

811312A Tietorakenteet ja algoritmit, , Harjoitus 6, Ratkaisu

Diskreetin matematiikan perusteet Esimerkkiratkaisut 3 / vko 10

811120P Diskreetit rakenteet

1. Mitä tehdään ensiksi?

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

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

Johdatus graafiteoriaan

8. Yhteenvetoa. abstrakti tietotyyppi: mitä datalle halutaan tehdä tietorakenne: miten se tehdään (talletusrakenne, operaatioden toteutus)

Algoritmit 1. Luento 2 Ke Timo Männikkö

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

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

Algoritmit 2. Demot Timo Männikkö

Syötteen ensimmäisellä rivillä on kokonaisluku n, testien määrä (1 n 10). Tämän jälkeen jokaisella seuraavalla rivillä on kokonaisluku x (0 x 1000).

811120P Diskreetit rakenteet

Algoritmit 2. Luento 2 Ke Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

811120P Diskreetit rakenteet

Algoritmit 1. Demot Timo Männikkö

Transkriptio:

1 3 1 3 4 3 2 3 4 3 2 3 1 2 3 4 122 31 4 3 1 4 3 1 122 31........ X.... X X 2 3 1 4 1 4 3 2 3 2 4 1 4 JOHDATUS TEKOÄLYYN TEEMU ROOS

2. ETSINTÄ JA PELIT LEVEYSSUUNTAINEN HAKU 1 9 3 2 5 4 6 7 11 16 8 12 10 15 17 14 13 18

2. ETSINTÄ JA PELIT SYVYYSSUUNTAINEN HAKU 1 10 2 9 3 8 12 13 4 7 11 14 6 5

2. ETSINTÄ JA PELIT ETSINTÄ(Alkusolmu) Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [A] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [B,C,D] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [C,D] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [D] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [D,F] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [F] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [E] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT [] ETSINTÄ(Alkusolmu) A B Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) C Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) D F E LEVEYSSUUNTAINEN HAKU: LISÄÄ(Solmulista1, Solmulista2) return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT ETSINTÄ(Alkusolmu) Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) LISÄÄ(Solmulista1, Solmulista2) JONO ( FIRST-IN-FIRST-OUT ) LEVEYSSUUNTAINEN HAKU: return(peräkkäin(solmulista2, UUDET(Solmulista1))) # LISÄÄ([a,f],[d]) => [d,a,f]

2. ETSINTÄ JA PELIT ETSINTÄ(Alkusolmu) Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista) Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) LISÄÄ(Solmulista1, Solmulista2) PINO ( LAST-IN-FIRST-OUT ) SYVYYSSUUNTAINEN HAKU: return(peräkkäin(uudet(solmulista1), Solmulista2)) # LISÄÄ([a,f],[d]) => [a,f,d]

ETSINTÄ ONGELMANRATKAISUNA I KU M HA RIT GO AL

ETSINTÄ ONGELMANRATKAISUNA

ETSINTÄ ONGELMANRATKAISUNA KOLME KANNIBAALIA JA KOLME LÄHETYSSAARNAAJAA HALUAA YLITTÄÄ JOEN VENEELLÄ, JOHON MAHTUU VAIN KAKSI HENKILÖÄ. JOS JOMMALLA KUMMALLA RANNALLA ON ENEMMÄN KANNIBAALEJA KUIN LÄHETYSSAARNAAJIA (MUTTA KUITENKIN VÄHINTÄÄN YKSI LÄHETYSSAARNAAJA), KANNIBAALIT SYÖVÄT HEIDÄT. MITEN JOKI SAADAAN YLITETTYÄ ILMAN, ETTÄ KETÄÄN SYÖDÄÄN? VOIT KOKEILLA KLIKKAAMALLA TÄSTÄ.

YKSINKERTAINEN SUDOKU-ALGORITMI: 1. ALOITA VASEMMASTA YLÄKULMASTA. 2. JOS RUUTU ANNETTU, SIIRRY SEURAAVAAN. 3. LISÄÄ NUMERO 0 RUUTUUN. 4. KASVATA NUMEROA YHDELLÄ. 5. JOS LISÄTTY NUMERO SOPII, SIIRRY SEURAAVAAN RUUTUUN JA JATKA ASKELEESTA 2. 6. JOS NUMERO LIIAN SUURI, PERUUTA YKSI RUUTU. 7. JATKA ASKELEESTA 4.

3

1 3

1 3 1

1 3 2

1 3 3

1 3 4

1 3 4 2

1 3 4 2 2

1 3 4 2 2 4

1 3 4 2 2 4 1

1 3 4 2 2 4 1?

1 3 4 2 2 4 3

1 3 4 2 2 4 3?

1 3 4 2 2 4?

1 3 4 2 2?

1 3 4 2 4

1 3 4 2 4?

1 3 4 2?

1 3 4?

1 3?

2 3

2 3 1

2 3 1 4

2 3 1 4 1

2 3 1 4 1 4

2 3 1 4 1 4 3

2 3 1 4 1 4 3 2

2 3 1 4 1 4 3 2 3

2 3 1 4 1 4 3 2 3 2 4 1

2 3 1 4 1 4 3 2 3 2 4 1 4

3 1 3 2 3 4 3 1 3 4 2 3 1 2 3 4 1 2 2 3 1 4 3 1 4 3 1 1 2 2 3 1............ X...... X X ALGORITMI VASTAA 2 3 1 4 1 4 3 2 3 2 4 1 4 SYVYYSSUUNTAISTA HAKUA!

HEURISTIIKAT KUSTANNUSARVIO: f(n) - ARVIO SOLMUN N KAUTTA KULKEVAN POLUN KUSTANNUKSESTA HEURISTIIKKA : h(n) - ARVIO SOLMUSTA N LÄHTEVÄN POLUN KUSTANNUKSESTA POLKUKUSTANNUS: g(n) - SOLMUUN N PÄÄTTYVÄN POLUN KUSTANNUS f(n) = g(n) + h(n)

HEURISTINEN HAKU ETSINTÄ(Alkusolmu) Solmulista = [Alkusolmu] while Solmulista ei tyhjä Solmu = EKA(Solmulista); Solmulista = LOPUT(Solmulista) if MAALI(Solmu) return( ratkaisu, Solmu) Solmulista = LISÄÄ(NAAPURIT(Solmu),Solmulista) return( ei ratkaisua ) LISÄÄ(Solmulista1, Solmulista2) PARAS-ENSIN-HAKU: A*-HAKU: f(n) = g(n) + h(n) return(järjestä(solmulista1,solmulista2)) # [(a,5),(b,3),(c,1)], [(a,2),(c,3),(f,5)] => [(c,1),(a,2),(b,3),(f,5)]

A* OLETUS: HEURISTIIKKA h(n) ANTAA AINA ENINTÄÄN YHTÄ SUUREN ARVON KUIN TODELLINEN KUSTANNUS SOLMUSTA N MAALIIN. TÄLLÖIN A* TUOTTAA AINA OPTIMAALISEN RATKAISUN TODISTUKSEN IDEA: JONON EKAKSI EI VOI PÄÄSTÄ MAALISOLMU, JONKA KUSTANNUS ON SUUREMPI KUIN OPTIMAALISEN MAALISOLMUN. JOS HEURISTIIKKA HYVÄ, SUURIMMASSA OSASSA HUONOJA SOLMUJA EI KÄYDÄ OLLENKAAN.

REITTIOPAS

REITTIOPAS TILA: (PYSÄKKI, KLO) SIIRTYMÄT: (LINJANRO, SUUNTA) TEHTÄVÄ: ETSI NOPEIN REITTI PYSÄKILTÄ A PYSÄKILLE B (EI KÄVELYÄ) MENETELMÄ: A*-HAKU