pseudcode for MinMax algoritmen

stemmer
3

Jeg ønsker å få pseudokode for MinMax algoritme. Jeg har å gjøre 2 funksjoner, def maxAgent (gameState, dybde) og minAgent. Er det noen kroppen som har rett og lett pseudokode for det.

Publisert på 29/07/2010 klokken 04:13
kilden bruker
På andre språk...                            


2 svar

stemmer
2

MinMax Algoritmen forsøker å maksimalisere stillingen for spilleren A og minimalisere stillingen for spilleren B. Gitt en node, kan man finne det endelige resultatet fra optimalt spill ved å ta max (for A) eller min (for B) til stillingen for etterfølger noder.

Forutsatt at de bladnoder har en tilordnet vinner (1 for A, -1 for B), mens alle andre noder har en score på 0. kan deretter beregne den endelige vinner utfall for A med noe som

  getMaxScore(node) {
    score = node.score;
    for each child node 
       score = max(score, getMaxScore(node))  
    next

    return score;
  }

Dette er den grunnleggende algoritme. Du kan kortslutte evalueringen så snart resultatet blir en da har du et kjent seier for A.

Algoritmen er den samme for B, getMinScore, bare du bruker min funksjon, og hvis kortslutning, se etter -1.

Svarte 29/07/2010 kl. 04:43
kilden bruker

stemmer
2

To spillere, A og B, bytter på å spille.

Vi får en scoring funksjon f som evaluerer en gitt styreverv, P. Større verdier av f (P) er bedre for A og verre for B (dvs. f (P) er et anslag på hvor "godt" P er for A uten å gjøre noen ytterligere lookahead).

Tenk styreverv P.

Hvis P er en bladnode (dvs. er P en vinnende posisjon eller vi har sett så langt fremover som vi vil) så vi tilbake f (P) som utlignet for denne noden.

Ellers P er ikke en bladnode og har barn C1, ..., Cn. Vi rekursivt beregne resultatet for barna, gi S1, ..., Sn.

Hvis en spiller ved P deretter utlignet for P er max {S1, ..., Sn} ettersom En spiller alltid å maksimere sin fordel.

Dersom B spiller ved P deretter utlignet for P er min {S1, ..., Sn} ettersom B alltid vil spille for å minimalisere en fordel.

Det burde være nok til å slå inn kode.

Når du har gjort det, ta en titt på alfa-beta beskjæring, som bør (drastisk) redusere mengden søket du trenger å gjøre. Alfa-beta beskjæring er basert på ideen om at hvis A utleder at B kan spille for å tvinge En maksimale fordel å være M, så det er ingen vits i å vurdere eventuelle undertreet hvis resultatet er større enn M siden B vil aldri tillate A som alternativ!

Svarte 29/07/2010 kl. 06:39
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more