CMD + K

Introduksjon til kunstig intelligensMotstandersøk: minimax og alfa-betaBegreper & formler20
13 min lesing

Motstandersøk: minimax og alfa-beta

I et spill for to må agenten regne med en motstander som svarer så godt den kan. Regn ut minimax-verdier i et spilltre, spor alfa-beta-beskjæring, og se hvordan god trekkordning kutter enda flere grener. Når treet er for stort, stopper du søket på en fast dybde og lar en evalueringsfunksjon anslå verdien.

Læringsmål
  • 01Formaliser et tospillers nullsumspill med starttilstand, trekk, terminaltest og nyttefunksjon
  • 02Regn ut minimax-verdien til hver indre node i et spilltre og finn trekket MAX velger
  • 03Spor alfa-beta-beskjæring og oppgi de øverste ikke-besøkte nodene med begrunnelse for hvert kutt
  • 04Forklar hvorfor trekkordning avgjør hvor mye alfa-beta kutter, og regn med
  • 05Forklar evalueringsfunksjoner, cutoff, horisonteffekten og rosøk
  • 06Bruk nyttevektorer til å regne ut verdier i spill med flere enn to spillere
0 av 16 aktiviteter
Kjerneidé

I et spill for to holder det ikke å finne en vei til målet: motstanderen velger annethvert trekk og gjør sitt beste for å stoppe deg. Minimax regner derfor med at motstanderen alltid svarer best mulig, og velger trekket som gir best resultat i verste fall. Tenk på en trener som planlegger kampen mot det beste laget motstanderen kan stille, ikke mot laget hun håper på. Alfa-beta gjør det samme regnestykket, men slutter å se på trekk som uansett ikke kan endre valget.

Steg 1 av 7

Spill som søkeproblem

Konsept

Et søkeproblem fra kapittel 2 har én agent som styrer alt. I et brettspill for to deler agenten makta med en motstander, og da kalles søket motstandersøk (adversarial search). Vi ser på den mest studerte typen: to spillere trekker etter tur, begge ser hele brettet, ingen terninger avgjør noe, og det den ene vinner, taper den andre. Et slikt nullsumspill (zero-sum game) beskrives med seks deler:

  • : starttilstanden.
  • : hvem som trekker i , MAX eller MIN.
  • : de lovlige trekkene i .
  • : tilstanden etter trekket .
  • : terminaltesten, sann når spillet er slutt.
  • : en nyttefunksjon (utility function) som gir tallverdien av sluttilstanden for spilleren .

MAX er spilleren vi regner for, og MIN er motstanderen. I sjakk er nytten , eller for seier, tap og remis, og summen for de to spillerne er alltid 1. Strengt tatt er det konstantsum, men det regnes som nullsum.

Starttilstanden, trekkene og resultatfunksjonen gir sammen et spilltre (game tree): roten er , hver kant er et trekk, og bladene er terminaltilstander med nytte. Ett trekk av én spiller kalles et halvtrekk (ply), så to halvtrekk er én runde. Treet vokser fort. Med lovlige trekk per stilling og partier på halvtrekk har det rundt blader, og i sjakk er omtrent 35. Ingen kan søke gjennom hele det treet, og resten av kapitlet handler om hvordan søket slipper.

RegneeksempelFormuler pinnespillet med 4 pinner som spill, og tell bladene i spilltreet.

Fire pinner ligger på bordet. Spillerne tar etter tur 1 eller 2 pinner, og den som tar den siste pinnen, vinner.

Steg 1. Tilstand og start. En tilstand er (pinner igjen, hvem som trekker), og .

Steg 2. Trekk og resultat. er «ta 1» og «ta 2», men bare «ta 1» når én pinne er igjen. , og motsatt når MIN trekker.

Steg 3. Terminaltest og nytte. Tilstanden er terminal når ingen pinner er igjen. Den som tok den siste pinnen, er den som ikke står for tur, så gir nytte for MAX og gir .

Steg 4. Tell bladene. Et parti er en rekke trekk som til sammen tar fire pinner. Det går med fire enkeltpinner, med to enkeltpinner og ett dobbelttrekk i tre ulike rekkefølger, eller med to dobbelttrekk. Treet har altså fem blader, og det lengste partiet er fire halvtrekk.

Øving 1 av 1

Hvilket utsagn beskriver et nullsumspill?

Mine notater

Skriv egne notater for dette kapittelet. De lagres automatisk og dukker opp i «Mine notater»-oversikten paa fag-siden.

Laster…