Shakkialgoritmeista Minmax ja Alpha beta pruning

  • 120 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
120
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ShakkialgoritmitMinmax ja Alpha beta karsinta
  • 2. Minmax• Shakissa paras kaikista siirtovaihtoehdoista ei ole välttämättä voittava kombinaatio tai todennäköisin siirtopolku• On oletettavaa, että pelissä on vastapuoli joka omalla siirtovuorollaan pyrkii tekemään parhaansa ja siten estämään vastustajan parhaat siirrot• Minmax on algoritmi jolla löydetään optimaalisin siirto
  • 3. Minmax ja pelipuu• Shakkiengine arvioi siirtoa evaluointifunktion avulla joka mittaa pelitilanteen hyvyyttä• Mutta evaluointifunktio antaa hyvyyden vain yhdelle pelitilanteelle, eika näe, mikä tilanne voi olla kahden siirron jälkeen. • Esimerkki: evaluointifunktio pitää vastustajan Daamia ehdottomasti hyvänä saaliina eikä tiedä, että vastapelaaja voi oman Daamin uhrauksella tehdä seuraavalla siirrolla shakkimatin. Tätä kutsutaan ns. Horisontaaliseksi seuraukseksi.• Ratkaisuna on pelipuu joka luodaan siten, etta aloitustilanne asetetaan juurisolmuksi ja lapsisolmuiksi laitetaan kaikki ne pelitilanteet, joihin päästään pelaajan tehtyä yhden sallitun siirron. Lapsisolmuille laitetaan edelleen lapsisolmuiksi vastapelaajan kaikki sallitut siirrot. Lapsisolmujen lisäämistä jatketaan rekursiivisesti, kunnes kaikissa haaroissa tullaan lopputiloihin. Talllöin pelipuu sisältää kaikki mahdolliset siirrot.• Pelipuu on siis rakenne jolla kuvataan siirtovaihtoehtoja• Minmax-algoritmi käy rekursiivisestä läpi tiettyyn syvyyteen asti kaikki siirtovaihtoehdot ja valitsee parhaan siirtovuorossa olevalle• Pelitilanteen hyvyys arvioidaan jokaisessa pelitilanteessa kokonaisluvulla. – valkoisilla nappuloilla positiiviset luvut – mustilla negatiiviset – Tasapelitilanteessa minmax palauttaa arvon 0• Valkoisen siirrot ovat ns. Max-siirtoja ja mustan siirrot min-siirtoja. Tästä nimi Minmax.
  • 4. Alpha-beta karsinta• Minmaxin hakua voidaan nopeuttaa karsimalla pelipuusta kokonaisia haaroja• Alpha-beta toimii kuten Minmax mutta karsii haarat jotka eivät voi vaikuttaa lopulliseen arvoon• Deep blue käyttii Alpha-beta karsintaa pelatessaan kuuluisat pelit Kasparovia vastaan• Deep bluen kehitystiimi laski, että Alpha-betaa käyttäessä ns. Puun haarautumiskerroin oli 6 kun pelkällä Minmaxilla se oli 35.• Nyrkkisääntö on, että Alpha-betalla engine voi laskea kaksi kertaa syvemmälle kuin Minmax samalla kustannuksella
  • 5. Minmaxin workflow• Minmax laskee maxille optimaalisen strategian. Shakkiengine toteuttaa tämän seuraavasti: 1. generoidaan koko pelipuun lopputiloihin asti 2. lasketaan jokaiselle lopputilalle BoardScoren 3. lasketaan lopputilojen boardscoren avulla kerrosta ylempänä olevien solmujen arvo 4. jatketaan samaan tapaan ylöspäin 5. Lopulta ollaan puun juuressa (huipulla) ja MAX valitsee siirron joka johtaa korkeimpaan arvoon eli BoardScoreen
  • 6. 0 1 2 3 4 5 6 7 MinmaxR 63 1. shakkiengine generoi pelipuun tietylle siirtosyvyydelle asti (ply). Tässä esimerkissä puun MAX syvyys on vain yksi siirto (2 plytä eli puolisiirtoa) MIN 2. Evaluointifunktio laskee lopputiloille BoardScoret. Puussa lopputiloja ovat alimmat nodet • Kuvassa on esitetty ruudulla a1 eli shakkilaudan indeksissä 56 olevan ratsun yksinkertaistettu pelipuu yhden siirron siirtosyvyydelle. Eli puun kaksi solmukohtaa kuvaavat valkoisen kahta siirtovaihtoehtoa ja lopputilojen arvot mustan siirron tuottamia arvoja (Boardscore)
  • 7. 0 1 2 3 4 5 6 7 MinmaxR 63 3. Lasketaan lopputilojen avulla kerrosta ylempänä MAX oleville nodeille arvo. • Kuvan oikeassa reunassa olevat MAX ja MIN kuvaa siirtovuoroa. MIN • Minmax algoritmi olettaa, että MAX tekee kaikkensa maksimoidakseen hyödyn ja MIN vastaavasti tekee parhaansa sen minimoimiseksi. • MIN-siirtovuoro siis valitsee lopputilojen arvoista pienimmän ja MAX suurimman. MAX • MIN eli vastustaja valitsee lopputiloista 30 ja 6 pienimmän eli arvon 6. MAX tässä vaiheessa valitsee ylimmälle tasolle arvon 6. MIN
  • 8. 0 1 2 3 4 5 6 7 MinmaxR 63 3. Lasketaan edelleen lopputilojen avulla kerrosta ylempänä oleville solmuille arvo. MAX • Edellisestä tilasta on siirrytty seuraavaan solmuun. Tavallisesti MIN valitsisi pienimmän arvon lopputiloista -18 ja -22. MIN • Kuvassa käytetään kuitenkin hyväksi ns. Alpha-beta karsinta- algoritmia (AB Pruning). • Alpha-beta karsinnalla voidaan jättää kokonaan huomioitta haara jonka lopputilan arvo on -22 vaikka kaikkein suurimmalla todennäköisyydellä MIN eli vastustaja valitsisi juuri tämän vaihtoehdon. • Karsinta voidaan tehdä, koska seuraavalla tasolla valitaan kaikkien tämän tason solmujen Alpha-beta algoritmi: MAX arvo ja tällä solmulla on jo Jos α >= β niin hylkää haara. nyt tarjota arvo -18. Ts. Karsinnalla Kuvassa α = 6 ja β=-18 tiedetään, että MIN valinnalla ei voida saada solmulle arvoa joka olisi suurempi kuin ylimmällä tasolla oleva arvo 6.
  • 9. 0 1 2 3 4 5 6 7 MinmaxR 63 4. Lasketaan edelleen lopputilojen avulla kerrosta ylempänä oleville solmuille arvo. MAX 5. Lopulta ollaan puun huipulla ja tehdään siirtovalinta ruutuun jolle MIN on Minmax ja Alpha-beta karsinnalla laskettu paras arvo.
  • 10. Daamin uhraus • Palataan vielä alun esimerkkiin missä kerrottiin että evaluaatiofunktio ei voi tietää ilman pelipuuta ja Minmax- tyyppistä algoritmia vastustajan Daamin uhrauksen olevan ansa joka johtaa mattiin. • Vasemmalla Minmax toteutus MAX samassa tilanteessa. Pelipuu on generoitu ja lopputiloille on laskettu arvot. • Vasemmanpuoleisen solmun MIN lopputilan arvo 100 kuvastaa Daamin syöntiä ja arvo -999 on shakkimatti • oikealla puolella on toinen solmu joku kuvaa jotain muuta siirtovaihtoehtoa. • Suoritetaan Minmax • MIN valitsi arvot -999 ja 2 joista MAX on 2 ja siirtovalinta on selvä. Daamin uhrausta ei vastaanoteta ja vältytään shakkimatilta.
  • 11. Peliteho• Kun shakkiengineen on toteutettu Minmax kohtuullisella evaluointifunktio ja katkaisufunktiolla niin tavallisella PC:llä voidaan tutkia n. 1000 000 solmua sekunnissa.• Turnausshakissa on keskimäärin aikaa n. 3 minuuttia per siirto joten voidaan tutkia n. 200 miljoonaa tilaa per siirto.• Minmaxin haarautumiskerroin on 35 ja 35^5 on 50 000 000 joten nähdään n. 5 puolisiirtoa eteenpäin ja shakkiohjelmamme on aloittelijan tasolla.• Alpha-beta karsinnalla päästään samassa turnauksessa n. 10 puolisiirron syvyydelle ja ohjelma olisi jo taitava shakinpelaaja.• Kehittyneemmillä tekniikoilla voidaan koti-PC:llä päästä 14 puolisiirtoon saakka.