Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

6.1 Epädeterministiset ongelmat

Samankaltaiset esitykset


Esitys aiheesta: "6.1 Epädeterministiset ongelmat"— Esityksen transkriptio:

1 6.1 Epädeterministiset ongelmat
luvuissa 1-5 tarkastellut ongelmat ovat olleet deterministisiä suorituksen jokaisessa vaiheessa on tarkkaan tiedetty, millä tavalla suoritusta jatketaan sama syöte aiheutti aina samojen valintojen tekemisen vaihtoehtoiset suorituspolut ovat siis riippuneet vain syötteestä ja näin ovat olleet deterministisiä monet tehtävät ovat kuitenkin luonteeltaan epädeterministisiä hakuongelmissa toimenpiteiden joukko etukäteen tiedossa mutta on epäselvä, mistä vastaus löytyy (mihin suuntaan haussa edetään)

2 Epädeterministiset ongelmat
esim. shakki: sallitut siirrot hyvin tiedossa, mutta niiden kokeilujärjestys tavoitteeseen pääsemiseksi (voiton saavuttamiseksi) on epäselvä esim. labyrintti: käytettävissä olevat toimenpiteet: eteneminen etelään, länteen, pohjoiseen tai itään ei tiedetä, missä järjestyksessä ilmansuuntia pitää kokeilla sokkelosta ulos pääsemiseksi (mahdollisimman suoraa reittiä)

3 6.1.1 Hakuongelmat epädeterministiset ongelmat voidaan muodollisesti kuvata hakuongelmina. hakuongelma kuvataan tilaesityksen avulla: tilojen joukko S alkutila s0S lopputilojen joukko FS siirrot t: SS, sisj Ongelman ratkaisu alkaa alkutilasta s0. Kussakin tilassa on joukko sallittuja siirtoja, jotka vievät uuteen tilaan sk-1sk. hakuavaruus = graafi, jossa on kaikki mahdolliset tilat ja niitä yhdistävät siirrot hakupuu = siihen talletetaan ne siirrot, joita kokeillaan hakuavaruudessa lopputilaa haettaessa ratkaisupolku = hakupuun polku puun juuresta (alkutilasta) puun lehteen, jossa on lopputila. paras ratkaisupolku = lyhyin ratkaisupolku paras lopputila = se tila, joka vie parhaaseen mahdolliseen tilanteeseen haun tekijän (tai tehtävän, esim. pelin) kannalta.

4 Äärelliset hakuongelmat:
hakuavaruus äärellinen graafi voidaan muodostaa kokonaisuudessaan haun aikana ratkaisu löytyy varmasti, ennemmin tai myöhemmin ongelmana löytää nopein/paras ratkaisu esim aarteen haku suljetusta ruudukosta hakija #, alkutila s10 aarre $, lopputila F=s18 tilojen joukko s1-s25 siirrott hakuavaruudessa: suuntiin etelä, itä, länsi, pohjoinen, koillinen ja lounas s2-s11,s2-s25,s2-s3,s2-s9, s2-s1, s2-s10 hakugraafin kärjet ja kaaret merkitty punaisella 22 21 20 19 18 $ 23 8 7 6 17 24 9 1 5 16 25 2 3 4 15 10 # 11 12 13 14

5 Äärettömät hakuongelmat:
hakuavaruus ääretön graafia ei koskaan pystytä muodostamaan kokonaan ratkaisua ei välttämättä löydetä koskaan, kun väärä hakustrategia on valittu tai ratkaisu lopulta löydetään, mutta hakuaika on kelvoton esim aarteen haku avoimesta ruudukosta tilojen joukko s1-s jos lähdetään etenemään yhteen suuntaan (paitsi koilliseen) niin kauan kun mahdollista syvyyshaku (ja aina koska seiniä ei ole), aarretta ei löydetä koskaan ratkaisuna eteneminen ”laajenevissa ympyröissä” jokainen korkeintaan n askeleen päässä oleva ruutu tutkitaan ennen siirtymistä n+1 askeleen päähän leveyshaku 22 21 20 19 18 $ 23 8 7 6 17 24 9 1 5 16 25 2 3 4 15 10 # 11 12 13 14

6 Leveyshaku (breadth first search)
Syvyys- ja leveyshaku Leveyshaku (breadth first search) varovainen ja pessimistinen menetelmä haku etenee leveänä rintamana joka suuntaan yhtä pitkälle (vrt. laajenevat ympyrät- edellinen kalvo) käyttää jonoa tilojen säilyttämiseksi (FIFO) täydellinen käy tarvittaessa läpi koko hakugraafin (mikäli mahdollista) hidas menetelmä varma täydellisyyden vuoksi raktaisu löydetään aina (jos se on ylipäätään olemassa) myös äärettömässä haussa optimaalinen äärellisessä haussa löydetään paras ratkaisu käymällä koko hakugraafi tarvittaessa pitää olla kyky tunnistaa ratkaisun paremmuus muihin ratkaisuihin nähden

7 WHILE jono ei ole tyhjä AND lopputilaa ei ole saavutettu DO
Leveyshakualgoritmi MODULE leveyshaku Pane alkutila jonoon WHILE jono ei ole tyhjä AND lopputilaa ei ole saavutettu DO Ota jonosta tila s Olkoot s1,...,sk ne vielä tutkimattomat tilat, joihin s:stä pääsee yhdellä siirrolla Aseta osoittimet tiloista s1,...,sk tilaan s Lisää tilat s1,...,sk jonoon ENDWHILE IF lopputila saavutettu THEN osoitinketju lopputilasta alkutilaan antaa ratkaisun (käänteisessä järjestyksessä) ELSE ratkaisua ei löydy ENDIF ENDMODULE

8 Syvyyshaku (depth first search)
rohkea ja optimistinen menetelmä haku lähtee parhaana pidettyyn suuntaan (vrt. eteneminen pohjoiseen avoimessa ruudukossa) suuntaa muutetaan ainoastaan, jos joudutaan perääntymään käyttää pinoa tilojen säilyttämiseksi (LIFO) epätäydellinen ei käydä läpi koko hakugraafia, mistä syystä menetelmä on onnistuessaan nopea; epävarma epätäydellisyyden vuoksi äärettömässä haussa ratkaisu voi jäädä kokonaan löytymättä, vaikka sellainen olisi lähelläkin suboptimaalinen: äärellisessäkään haussa ei välttämättä löydetä parasta ratkaisua suoritus lopetetaan heti ensimmäisen ratkaisun löydyttyä

9 Syvyyshakualgoritmi (vrt. leveyshakuun)
MODULE syvyyshaku Pane alkutila pinoon WHILE pino ei ole tyhjä AND lopputilaa ei ole saavutettu DO Ota pino tila s Olkoot s1,...,sk ne vielä tutkimattomat tilat, joihin s:stä pääsee yhdellä siirrolla Aseta osoittimet tiloista s1,...,sk tilaan s Lisää tilat sk,...,s1 pinoon (* huom Lukumonisteessa virhe *) ENDWHILE IF lopputila saavutettu THEN osoitinketju lopputilasta alkutilaan antaa ratkaisun (käänteisessä järjestyksessä) ELSE ratkaisua ei löydy ENDIF ENDMODULE syvyyshaku eroaa leveyshausta vain käyttämässään lista-abstraktiossa (pino vs. jono)

10 Heuristiikka missä järjestyksessä tutkimattomat tilat s1..sk viedään listaan? sen määrää heuristiikka järjestys, jossa siirrot kokeillaan esim. sokkelossa siirtoja voidaan kokeilla niiden ilmansuunnissa sijaitsemisen mukaan tässä järjestyksessä: p, i, e, l H. vaikuttaa siihen, missä järjestyksessä tilat viedään listaan heuristiikan merkitys leveyshaussa mitätön jokaisessa haun vaiheessa tutkitaan kaikki tilat, joihin tästä tilasta päästään syvyyshaussa ratkaiseva seuraavaksi tutkitaan vain tärkeimmäksi määriteltyä tilaa, johon tästä tilasta pääse, niin kauan kuin mahdollista vasta kun pääsuunta ei ole käytettävissä, kokeillaan muita etenemisen suuntia

11 Esim. Ulospääsy sokkelosta
ratkaistaan: leveyshaulla p, i, e, l syvyyshaulla e, i, l, p piirretään muodostuva hakupuu 1 2 3 4 5 6 7 8 9

12 Esim. vähiten välilaskuja reitillä LA - Miami
alkutila: Los Angeles lopputila: Miami heuristikka: pohjoinen, sitten myötäpäivään ratkaistaan 1)leveys- 2)syvyyshaulla piirtäen hakupuun => syvyyshaussa heursitiikka on ratkaiseva!

13 6.1.3 Pelien pelaaminen epädeterministinen hakuongelma:
mahdolliset siirrot tiedetään, mutta järjestys on epäselvä (ja riippuu vastustajan siirroista) hakuavaruus äärellinen mutta valtava: shakissa ! => sen muodostaminen käytännössä mahdotonta tarkastellaan kahden osapuolen nollasummapelejä pelaajat siirtävät vuorotellen toisen voitto on toisen häviö siirron valintaan vaikuttaa vastustajan tekemä siirto leveys- tai syvyyshakualgoritmit eivät ota huomioon vastustajaa suoritetaan heuristinen haku: heuristiikkaa muokataan jokaisessa uudessa tilassa arviofunktion avulla lasketaan pelinilanteen hyvyyttä jokaiselle mahdolliselle siirrolle tästä nykyisestä tilasta ja valitaan se siirto, joka johtaa parhaaseen tilaan heuristinen haku pyrkii löytämään lyhyimmän ratkaisupolun hakuavaruudesta nykyiselle pelitilanteelle

14 Heuristinen pelialgoritmi
Olkoon f: S arviofunktio. MODULE pelaa Olkoon alkutila s REPEAT Olkoot ssi(i=1..k) mahdolliset siirrot Valitse siirto siihen tilaan si, jolle f(si) on suurin Odota, kunnes vastustaja on siirtänyt Merkitse uutta tilaa s:llä UNTIL voitto OR tappio OR tasapeli ENDMODULE s s1 s2 s3 s4

15 Tarkastellaan peliä pelaajan X kannalta. Numeroidaan ruudukko: 1 2 3 4
Jätkänshakki Pelaajat sijoittavat vuorotellen 3x3-ruudukkoon oman merkkinsä (X tai O). Se voittaa, kumpi ensinnä saa kolme omaa merkkiä samaan linjaan pystysuoraan, vaakasuoraan tai vinoittain. Tarkastellaan peliä pelaajan X kannalta. Numeroidaan ruudukko: 1 2 3 4 5 6 7 8 9 X:n arviofunktio: fx(s) = X:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään X:llä – O:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään O:lla.

16 Jätkänshakki fx(5) = 8-4 = 4 x 8 o 4 x x
X siirtää ruutuun, jossa funktio saa maksiminsa. Merkitään uutta tilaa sen ruudun numerolla, johon X siirtää. Tarkoituksena on siis löytää sellainen uusi tila s, että fx(s) on mahdollisimman suuri. Jos X aloittaa, hänen kannattaa siirtää keskimmäiseen ruutuun (5), koska fx(5) = 8-4 = 4; muut siirrot johtavat huonompaan tilanteeseen fx(1) = 8-5 = 3 fx(2) = 8-6 = 2 enempää ei tarvitse laskea, koska arvot ovat samat muille ruuduille symmetrian vuoksi Uusi tila on: X:n arviofunktio: fx(s) = X:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään X:llä – O:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään O:lla. kun X siirtää ruutuun 5: fx(5) = 8-4 = 4 3- rivit x 8 3- rivit o 4 x x

17 Oletetaan, että pelaaja O käyttää samaa arviofunktiota.
Jätkänshakki Oletetaan, että pelaaja O käyttää samaa arviofunktiota. Koska fx arvioi hyvyyttä X:n kannalta, O pyrkii minimoimaan sen arvon. fx(1) = fx(3) = fx(7) = fx(9) = 5-4 = 1 fx(2) = fx(4) = fx(6) = fx(8) = 6-4 = 2 O:n kannattaa siirtää johonkin nurkkaan. Siirtäköön hän vasempaan ylänurkkaan: X:n arviofunktio: fx(s) = X:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään X:llä – O:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään O:lla. Esim. fx(1) = 5 – 4 = 1 s1 o x 5 s1 o o 4 x o x

18 Seuraavaksi myös X laskee parhaan siirron itsellensä:
Jätkänshakki Seuraavaksi myös X laskee parhaan siirron itsellensä: fx(3) = fx(7) = fx(9) = 5-2 = 3 fx(2) = fx(4) = fx(6) = fx(8) = 2. Valitkoon X oikean ylänurkkaan (se maksimi laskettiin ensimmäisenä): X:n arviofunktio: fx(s) = X:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään X:llä – O:n kolmen suorien lukumäärä, kun tilassa s tyhjät ruudut täytetään O:lla. Esim. fx(8) = 5 – 3 = 2 s8 x 5 o s8 o o 2 x o x

19 täytyy keksiä parempi pelitekniikka! parempi algoritmi!
Jätkänshakki Nyt O:n tulisi ehdottomasti valita vasen alanurkka (s7), muutoin hän häviää. Käytetty arviofunktio ei kuitenkaan pysty tätä yksikäsitteisesti osoittamaan, sillä arviofunktio tuottaa kahdessa tapauksessa s2 ja s4 arvon 2, ja 4 tapauksessa (s6,s7,s8 ja s9) arvon 1 ja kun pyritään valitsemaan minimi, tapaukset s6,s7,s8 ja s9 ovat tämän menetelmän mukaan yhtäpätevät: x3r 4 o3r 2 f2 2 o x x3r 4 o3r 2 f4 2 o x x3r 3 o3r 2 f6 1 o x x3r 3 o3r 2 f7 1 o x x3r 3 o3r 2 f8 1 o x x3r 3 o3r 2 f9 1 o x täytyy keksiä parempi pelitekniikka! parempi algoritmi!

20 Minmax-tekniikka Pelin parantamiseksi on kaksi vaihtoehtoa:
keksitään parempi arviofunktio tarkastellaan tilannetta pidemmälle kuin vain yhden siirron päähän 2. vaihtoehto vaatii vähemmän luovuutta, joten se sopii koneelle hyvin. Menetelmää kutsutaan minmax-tekniikaksi. oletetaan vastustajan pelaavan hyvin se valitsee omalta kannaltaan parhaan siirron lasketaan pelitilanteet ei yhden, vaan kahden siirron päähän minä olen siirtänyt + vastustaja on siirtänyt = paras tilanne sen jälkeen? minun mahdolliset siirrot ssi sen jälkeen vastustajalla mahdolliset siirrot sisij lasken tilanteen hyvyyden minun kannalta sen jälkeen kun vastustaja on tehnyt oman siirtonsa jokaiselle ssi ja sisij valitsen siis siirron, joka on kannaltani paras vastustajan seuraavan siirron jälkeen

21 s11..s34 – vastustajan siirrot s23 s1
edellinen algoritmi: MODULE pelaa s s1 s2 s3 s4 uusi algoritmi: minmax-tekniikka MODULE pelaaparemmin s34 s33 s3 s32 s s31 s2 s24 s1..s3 – minun siirrot s11..s34 – vastustajan siirrot s23 s1 tilanne on paras vastustajan siirron s22 jälkeen, joten valitsen sen! s22 s21 s11 s14 s13 s12

22 MODULE pelaaparemmin Olkoon alkutila s REPEAT Olkoot ssj (i = 1... k) mahdolliset siirrot Laske kullekin si:lle luku g(si) = min {fx(sij) | sisjj on vastustajan mahdollinen siirto} Valitse siirto siihen tilaan si, jolle g(si) on suurin Odota kunnes vastustaja on siirtänyt Merkitse uutta tilaa s:llä UNTIL voitto OR tappio OR tasapeli ENDMODULEs

23 Minmax-pelaaparemmin esim.
x:n on siirrettävä s7:ään jotta se ei hävisi x:llä on vaihtoehtoina siirrot ruutuihin 2,4,6,7,8,9 kun x on siirtänyt vaikka ruutuun 2, o laskee itselleensä parhaan siirron käyttäen samaa arviofunktiota merkitään j:llä ne ruudut, johon o voi siirtää sen jälkeen: 4,6,7,8,9 o valitsee sellaisen siirron sj, jolle fx(s2j) on pienin = luku g(si) ero X:n 3-suorien ja O:n 3-suorien määrä on silloin pienin koska halutaan tutkia kaikki mahdolliset x:lle olemassaolevat vaihtoehdot, lasketaan myös tilanteet, kun x siirtyy ruutuihin 4,6,7,8,9 ja O tekee vastaavat siirrot sij x o

24 g(s2)=-4 g(s4)=-4 g(s6)=-3 g(s7)=-2 g(s8)=-3 g(s9)=-3 x3r 1 o3r 4
f24 -3 x o x3r 2 o3r 4 f26 -2 x o x3r 0 o3r 4 f27 -4 x o x3r 1 o3r 4 f28 -3 x o x3r 1 o3r 4 f29 -3 x o g(s2)=-4 x3r 2 o3r 4 f42 -2 x o x3r 2 o3r 4 f46 -2 x o x3r 0 o3r 4 f47 -4 x o x3r 1 o3r 4 f48 -3 x o x3r 1 o3r 4 f49 -3 x o g(s4)=-4 x3r 2 o3r 3 f62 -1 x o x3r 1 o3r 3 f64 -2 x o x3r 0 o3r 3 f67 -3 x o x3r 1 o3r 3 f68 -2 x o x3r 1 o3r 3 f69 -2 x o g(s6)=-3 x3r 1 o3r 3 f72 -2 x o x3r 1 o3r 3 f74 -2 x o x3r 2 o3r 3 f76 -1 x o x3r 1 o3r 3 f78 -2 x o x3r 1 o3r 3 f79 -2 x o g(s7)=-2 x3r 2 o3r 3 f82 -1 x o x3r 1 o3r 3 f84 -2 x o x3r 2 o3r 3 f86 -1 x o x3r 0 o3r 3 f87 -3 x o x3r 1 o3r 3 f89 -2 x o g(s8)=-3 x3r 2 o3r 3 f92 -1 x o x3r 1 o3r 3 f94 -2 x o x3r 2 o3r 3 f96 -1 x o x3r 0 o3r 3 f97 -3 x o x3r 1 o3r 3 f98 -2 x o g(s9)=-3

25 siksi kannattaa siirtää ruutuun 7 o x
kun siirretään ruutuun 7, vastustajan paras siirto antaa tilanteen -2, kun muihin ruutuihin siirrettäessä vastustajan siirto aiheuttaa huonompia tilanteita siksi kannattaa siirtää ruutuun 7 ja se onkin ainoa järkevä siirto Minmax-tekniikka toimii! mutta ei aina  (ks. kuva ): ratkaisuksi: 1. lasketaan useamman askelen päähän minmaxn .-tekniikka käytetään shakissa tai 2. parannetaan arviofunktio f’x(s)=100, jos X:llä on tilassa s todellinen 3-suora f’x(s)=-100, jos O:lla on tilassa s todellinen 3-suora f’x(s)=fx(s) muulloin o x


Lataa ppt "6.1 Epädeterministiset ongelmat"

Samankaltaiset esitykset


Iklan oleh Google