Zoekproblemen met tegenstanders Zoekalgoritmen (29 2) College 9: Zoeken met een tegenstander (I) Dirk Thierens, Tekst: Linda van der Gaag Zoekproblemen met meer dan één partij worden gekenmerkt door interventies door andere partijen; onzekerheid over het gedrag van de andere partijen; een beperking van de tijd die aan het zoeken besteed kan worden. Andere aspecten die bij dergelijke problemen een rol kunnen spelen, zijn volledige of onvolledige informatie over een probleemtoestand; de aan- of afwezigheid van een kanselement in de toegestane operatoren; twee of meer partijen; coöperatie of competitie tussen de verschillende partijen. Zoekalgoritmen: Zoeken met tegenstander 226 / 353 Zoekalgoritmen: Zoeken met tegenstander Inleiding 22 / 353 Een zoekprobleem met een tegenstander Een zoekprobleem voor een speler MAX met een tegenstander MIN is een tupel P = (T, B, E, O MAX O MIN, u, s) met T is de verzameling van probleemtoestanden; B T is de verzameling van begintoestanden; E T is de verzameling van eindtoestanden; O MAX P(T T) is de verzameling van operatoren voor de speler en O MIN is die voor de tegenstander; u: E IN is de (symmetrische) utiliteitsfunctie van de speler; s {MAX, MIN} is de partij die de eerste operator toepast. De speler en de tegenstander genereren een reeks probleemtoestanden door om de beurt een operator toe te passen. Beschouw het boter-kaas-en-eieren spel: een probleemtoestand is een plaatsing van i kruisjes en j nulletjes in de vakjes van het raam, met i j en i + j 9: de begintoestand is het raam met negen lege vakjes: een eindtoestand is een probleemtoestand waarin geen lege vakjes voorkomen; Zoekalgoritmen: Zoeken met tegenstander Definitie 228 / 353 Zoekalgoritmen: Zoeken met tegenstander Definitie 229 / 353
vervolg Zoeken met een tegenstander de operator voor de speler is het plaatsen van een kruisje in een leeg vakje; de operator voor de tegenstander is het plaatsen van een nulletje in een leeg vakje; een utiliteitsfunctie u voor de speler is u(t) = als de eindtoestand t drie kruisjes op een rij bevat; u(t) = als de eindtoestand t drie nulletjes op een rij bevat; u(t) = anders. een optimaal algoritme voor zoeken met een tegenstander zoekt een uitputtende strategie voor de speler: de strategie schrijft voor elke mogelijke toestand na een zet van de tegenstander, voor welke zet de speler moet doen; de strategie maximaliseert de (verwachte) utiliteit voor de speler; enkele algoritmen voor zoeken met een tegenstander zijn: minimax search; expectiminimax search. Zoekalgoritmen: Zoeken met tegenstander Definitie 23 / 353 Zoekalgoritmen: Zoeken met tegenstander Definitie 23 / 353 vervolg Veronderstel dat het nim-spel met zeven stenen wordt gespeeld en dat de tegenstander begint: Beschouw het nim-spel: het spel begint met een enkele stapel stenen; in elke zet mag een partij één stapel stenen in twee stapels van ongelijke grootte verdelen; het spel eindigt als elke stapel maximaal twee stenen bevat; de partij die het spel in een eindtoestand brengt, is de winnaar. Een zoekalgoritme moet een optimale strategie voor de speler vinden. 6, 5, 2 5,, 4, 2, 3, 2, 2 3, 3, 4,,, 3, 2,, 2, 2, 2, 3,,,, 2, 2,,, 2,,,,, De zoekgraaf bevat alle reeksen probleemtoestanden die door de speler en de tegenstander gegenereerd kunnen worden. Zoekalgoritmen: Zoeken met tegenstander Definitie 232 / 353 Zoekalgoritmen: Zoeken met tegenstander Definitie 233 / 353
vervolg Het idee van minimax search 6, 5, 2 5,, 4, 2, 3, 2, 2 3, 3, 4,,, 3, 2,, 2, 2, 2, 3,,,, 2, 2,,, 2,,,,, Het idee van minimax search is het algoritme berekent voor elke knoop in de zoekboom de maximaal voor de speler te bereiken utiliteit onder de aannamen: de speler doet altijd de beste zet; de tegenstander doet altijd de voor de speler slechtste zet; het algoritme voert hiertoe een uitputtende depth-first search uit op de zoekboom. De optimale strategie voor de speler is als volgt: als de tegenstander de zet 6, doet, doe dan de zet 4, 2, ; als de tegenstander de zet 5, 2 doet, doe dan de zet 4, 2, ; als de tegenstander de zet doet, doe dan de zet 3, 3, ;... Zoekalgoritmen: Zoeken met tegenstander Definitie 234 / 353 Zoekalgoritmen: Zoeken met tegenstander Minimax search 235 / 353 Minimax search Beschouw nogmaals Beschouw een zoekprobleem met een tegenstander: minimax search construeert de gehele zoekboom van het probleem; minimax search berekent minimax(t) voor elke knoop t in de zoekboom: minimax(t) = u(t) als t een eindtoestand is; minimax(t) = max s succ(t) {minimax(s)} als t een toestand is waarin de speler aan zet is; minimax(t) = mins succ(t) {minimax(s)} als t een toestand is waarin de tegenstander aan zet is; minimax search construeert vervolgens een optimale strategie voor de speler. 6, 5, 2 5,, 4, 2, 3, 2, 2 3, 3, 4,,, 3, 2,, 2, 2, 2, 3,,,, 2, 2,,, 2,,,,, De minimax-waarde van een eindtoestand is de utiliteit van die toestand en geeft de wenselijkheid voor de speler weer. Zoekalgoritmen: Zoeken met tegenstander Minimax search 236 / 353 Zoekalgoritmen: Zoeken met tegenstander Minimax search 23 / 353
vervolg vervolg 6, 5, 2 6, 5, 2 5,, 4, 2, 3, 2, 2 3, 3, 5,, 4, 2, 3, 2, 2 3, 3, 4,,, 3, 2,, 2, 2, 2, 4,,, 3, 2,, 2, 2, 2, 3,,,, 2, 2,,, 3,,,, 2, 2,,, 2,,,,, de minimax-waarde van een toestand waarin de speler aan zet is, veronderstelt dat de speler de beste zet doet; de minimax-waarde van een toestand waarin de tegenstander aan zet is, veronderstelt dat deze de voor de speler slechtste zet doet. Zoekalgoritmen: Zoeken met tegenstander Minimax search 238 / 353 2,,,,, De optimale strategie schrijft voor elke toestand waarin de speler aan zet is, de zet met de hoogste minimax-waarde voor: als de tegenstander de zet 6, doet, doe dan de zet 4, 2, ; als de tegenstander de zet 5, 2 doet, doe dan de zet 4, 2, ; Zoekalgoritmen: Zoeken met tegenstander Minimax search 239 / 353 De veronderstelling Minimax search is gebaseerd op de veronderstelling dat de tegenstander ook een optimale strategie hanteert. Voorbeeld In het volgende spel begint de speler: t De bruikbaarheid van minimax Beschouw een spel met een zoekboom met diepte d en vertakkingsfactor b: de rekentijd van het minimax algoritme is ruwweg van de orde b d ; het geheugenbeslag van de berekende strategie is ruwweg van de orde b d : t t 2 5 t 3 t 4 t 5 t 6 t 5 t 8 t 9 5 Gebaseerd op de veronderstelling schrijft de strategie de zet naar t voor: de beste eindtoestand t wordt al bij voorbaat opgegeven! Zoekalgoritmen: Zoeken met tegenstander Minimax search 24 / 353 De zoekboom voor boter-kaas-en-eieren heeft al 9! = 362 88 bladeren... Zoekalgoritmen: Zoeken met tegenstander Minimax search 24 / 353...
Het gebruik van een dieptegrens Het minimax basisalgoritme wordt meestal uitgebreid met een dieptegrens: de dieptegrens specificieert een maximum aan de diepte van de te genereren zoekboom; het gebruik van de dieptegrens heeft als doel de rekentijd van minimax search te beperken; een concrete dieptegrens wordt gekozen op basis van de beschikbare rekentijd; kennis van de winnende probleemtoestanden van het onderhavige spel. Het minimax algoritme schrijft nu uitsluitend de eerstvolgende zet voor. Beschouw het boter-kaas-en-eieren spel en veronderstel dat de speler begint met het plaatsen van een kruisje: o o o o o o o o o o o Minimax search met diepte 2 genereert de bovenstaande zoekboom (rekening houdend met symmetrieën). Zoekalgoritmen: Zoeken met tegenstander Minimax search 242 / 353 Zoekalgoritmen: Zoeken met tegenstander Minimax search 243 / 353 De heuristische functie Op de verzameling probleemtoestanden van een spel wordt een heuristische functie gedefinieerd: de heuristische waarde van een toestand is een inschatting van de wenselijkheid van de toestand voor de speler; de heuristische functie is gebaseerd op kennis van het spel en van de winnende toestanden. De heuristische waarde van een toestand moet eenvoudig, zonder grote computationele kosten te berekenen zijn. Op de toestandsruimte van het boter-kaas-en-eieren spel definiëren we de volgende heuristische functie:, als t drie kruisjes op een rij bevat h(t) =, als t drie nulletjes op een rij bevat max(t) min(t), anders met max(t) = min(t) = het aantal open winnende rijen voor de speler het aantal open winnende rijen voor de tegenstander Zoekalgoritmen: Zoeken met tegenstander Minimax search 244 / 353 Zoekalgoritmen: Zoeken met tegenstander Minimax search 245 / 353
vervolg Minimax search met begrensde diepte Beschouw de gegeven heuristische functie op de toestandsruimte van het boter-kaas-en-eieren spel. Dan geldt h(t) = 6 5 = h(t) = 4 6 = 2 Minimax search met begrensde diepte is in essentie gelijk aan het minimax basisalgoritme. Echter, minimax search met diepte n construeert voor een probleem een begrensde zoekboom tot en met diepte n; minimax search met diepte n berekent een heuristische minimax-waarde h-minimax(t) voor elke toestand t in de begrensde boom: h-minimax(t) = h(t) als t een blad van de begrensde boom is; h-minimax(t) wordt berekend met dezelfde rekenregels als minimax(t) voorheen; minimax search met begrensde diepte n selecteert als eerstvolgende zet een zet die in de hoogste h-minimax waarde resulteert. Zoekalgoritmen: Zoeken met tegenstander Minimax search 246 / 353 Zoekalgoritmen: Zoeken met tegenstander Minimax search 24 / 353 vervolg vervolg Beschouw nogmaals het boter-kaas-en-eieren spel en veronderstel dat de speler begint met het plaatsen van een kruisje: Beschouw nogmaals 2 o o o o o o o o o o o o 2 2 Minimax search met begrensde diepte gebruikt de heuristische functie voor het berekenen van de h-minimax waarden voor de bladeren van de begrensde boom. o o o o o o o o o o o o 2 2 Minimax search met begrensde diepte berekent de h-minimax waarden voor de overige toestanden volgens de rekenregels van het basisalgoritme. Zoekalgoritmen: Zoeken met tegenstander Minimax search 248 / 353 Zoekalgoritmen: Zoeken met tegenstander Minimax search 249 / 353
De veronderstelling Minimax search met begrensde diepte veronderstelt dat voor een interne toestand t in de boom geldt dat h-minimax(t) een betere inschatting geeft van de wenselijkheid van t voor de speler dan h(t) Vergelijk bijvoorbeeld de volgende zetten voor de speler: h(t) = 4 = 3 h(t) = 4 = 3 Zoekalgoritmen: Zoeken met tegenstander Minimax search 25 / 353