www.wikidata.de-de.nina.az
Der Minimax Algorithmus ist ein Algorithmus der im Bereich der kunstlichen Intelligenz und der Spieltheorie verwendet wird Eine mit dem Minimax Algorithmus berechnete Strategie wird Minimax Strategie genannt Sie sichert dem betreffenden Spieler den hochstmoglichen Gewinn der unabhangig von der Spielweise des Gegners zu erzielen ist Das aus den Minimax Strategien beider Spieler gebildete Strategie Paar bildet ein Nash Gleichgewicht Der Minimax Algorithmus kann zur Ermittlung der Spielstrategie fur endliche Zwei Personen Nullsummenspiele mit perfekter Information verwendet werden Zu diesen Spielen gehoren insbesondere Brettspiele wie Schach Go Othello Dame Muhle und Vier gewinnt bei denen beide Spieler stets die gesamte Historie der Partie kennen Auch fur Spiele mit Zufallseinfluss wie Backgammon lasst sich der Minimax Algorithmus auf Grundlage von Erwartungswerten erweitern In der Regel aber nicht ausschliesslich wird der Minimax Algorithmus auf Spiele mit abwechselndem Zugrecht angewandt Varianten des Minimax Algorithmus bilden die Grundlage von Software fur Strategiespiele zum Beispiel Schachprogramme Die hohe Rechenleistung heutiger Computer hat dazu gefuhrt dass selbst bei so komplexen Spielen wie Schach Menschen kaum noch eine Chance haben den Computer zu schlagen Inhaltsverzeichnis 1 Bewertungsfunktion 2 Algorithmus 3 Beispiel fur eine Berechnung mit dem Minimax Algorithmus 4 Anmerkungen 5 Variante Der Negamax Algorithmus 6 Komplexitat 7 Iterative Tiefensuche 8 Implementierung 9 Literatur 10 Einzelnachweise 11 Siehe auch 12 WeblinksBewertungsfunktion BearbeitenGrundlage des Minimax Algorithmus ist eine Bewertungsfunktion Diese misst fur jede Position eines Zwei Personen Nullsummenspiels die Gewinnaussichten und zwar aus der Perspektive eines der beiden Spieler hier in Anlehnung an Schach Weiss Eine ideale Bewertungsfunktion ordnet einer Position eines Spiels wie Schach den Wert 1 zu wenn Weiss unabhangig von der Spielweise seines Gegners Schwarz einen Gewinn erzwingen kann den Wert 1 wenn Schwarz einen Gewinn erzwingen kann entsprechend dem Gewinn in Hohe 1 fur Weiss und 0 wenn keiner der beiden Spieler aus eigener Kraft d h unabhangig von der gegnerischen Spielweise einen Gewinn erzwingen kann Fur eine konkrete Position ist der zugehorige Wert der Bewertungsfunktion berechenbar wenn er fur alle Positionen bekannt ist die aus der zu untersuchenden Position durch einen Zug erreichbar sind Dabei ist es fur Weiss optimal zur Position mit dem hochsten Wert der Bewertungsfunktion zu ziehen er fungiert daher als Maximierer und fur Schwarz zur Position mit dem niedrigsten Wert der Bewertungsfunktion zu ziehen er fungiert als Minimierer Kann man alle Spielpositionen eines Spiels nacheinander derart untersuchen so ist die Bewertungsfunktion komplett bekannt was eine perfekte Spielweise ermoglicht Allerdings ist dies in der Praxis nur bei sehr einfachen Spielen wie Tic Tac Toe moglich 1 Bei richtigen Spielen ist diese Vorgehensweise zu rechenaufwandig Deshalb versucht man die Bewertungsfunktion durch eine einfacher zu berechnende Variante zu ersetzen die aber trotzdem moglichst gut die Gewinnaussichten widerspiegelt Statt der Werte 1 0 und 1 der idealen Bewertungsfunktion erhalten fur Weiss gunstige Positionen sehr hohe Werte und fur Schwarz gunstige Positionen sehr niedrige Werte Eine solche Schatzung kann durch Heuristiken erfolgen wie z B Materialabschatzungen beim Schach auf der Basis von Bauerneinheiten Verwendet werden diese Schatzungen dann in einer Version der Minimax Algorithmus bei der nur diejenigen Positionen untersucht werden die durch eine beschrankte Zahl von Zugen Suchtiefe genannt aus der zu untersuchenden Position entstehen konnen Fur diese Positionen am sogenannten Horizont fliessen dann die Schatzungen der Bewertungsfunktion in den Minimax Algorithmus ein 2 Algorithmus BearbeitenDer Minimax Algorithmus ist ein rekursiver Algorithmus Er ermoglicht es dem am Zug befindlichen Spieler den optimalen Zug zu bestimmen vorausgesetzt dass der Gegner ebenfalls optimal spielt Er berechnet die Minimax Entscheidung fur den aktuellen Zustand Der Minimax Algorithmus fuhrt eine rekursive Tiefensuche zur Erkundung des gesamten Spielbaums durch Der Minimax Algorithmus verwendet die von der Bewertungsfunktion bestimmten Werte fur die Endknoten des Baums und verfolgt dann den Baum rekursiv bis zum Wurzelknoten zuruck um den Zug Nachfolgeknoten mit dem maximalen Wert zu bestimmen Der Algorithmus wahlt fur den am Zug befindlichen Spieler jeweils die Position den Knoten mit dem maximalen Wert und fur den Gegenspieler jeweils die Position mit dem minimalen Wert aus Beispiel fur eine Berechnung mit dem Minimax Algorithmus Bearbeiten nbsp Minimax Algorithmus Die Kreise entsprechen den Positionen in denen der maximierende Spieler Weiss zieht Die Quadrate entsprechen den Positionen in denen der minimierende Spieler Schwarz zieht Gezogen wird entlang der schwarzen Linien Kanten nach unten Die roten Pfeile verdeutlichen die rekursiv von unten nach oben mogliche Berechnung der Werte der Bewertungsfunktion Konkret markieren die roten Pfeile den jeweils besten Zug der in der obersten Ebene blau dargestellt ist Das Bild rechts zeigt Positionen eines Spiels und die zwischen ihnen moglichen Zuge Der Abbildung liegt die Annahme zugrunde dass wie beim Schach abwechselnd gezogen wird und es keine Zufallsentscheidungen gibt Positionen in denen Weiss zieht sind als Kreise dargestellt Positionen in denen Schwarz zieht entsprechen den Quadraten Die moglichen Zuge entsprechen den nach unten verlaufenden Linien Kanten genannt zwischen den Positionen Knoten genannt Insgesamt entsteht dadurch der sogenannte Spielbaum der hier bis zur Suchtiefe 4 dargestellt ist Der Teil der die durchsuchten Positionen umfasst wird Suchbaum genannt Der beste Zug fur Weiss wird nun rekursiv bestimmt Die Positionen mit der Suchtiefe 4 haben die Werte 10 5 10 7 5 7 5 Wenn Schwarz in den Positionen mit der Suchtiefe 3 jeweils den optimalen Zug macht ergibt sich aus Sicht von Weiss nach dem nachster Zug jeweils die Position mit dem minimalen Wert Im Beispiel sind das die Werte 10 5 10 5 7 Weiss wahlt in den Positionen mit der Suchtiefe 2 jeweils die Position mit dem maximalen Wert also 10 10 5 7 Fur die zwei Positionen mit Suchtiefe 1 also die Positionen nach dem Zug von Weiss ergeben sich die Werte 10 und 7 Nach dem besten Zug fur Weiss entsteht also die Position mit dem Wert 7 Die Minimax Berechnung der Bewertungsfunktion geht aus von den als bekannt vorausgesetzten Werten der unteren Ebene wobei diese Werte bei einem Schachprogramm durch Heuristiken wie einer Materialbewertung geschatzt werden Ebene fur Ebene werden nun von unten nach oben die in der Grafik bereits eingetragenen Werte der Bewertungsfunktion berechnet wobei sich jeder Wert auf Basis einer optimalen Spielweise des aktuell ziehenden Spielers ergibt Konkret ist es fur Weiss optimal derart zu ziehen dass die Position mit dem hochsten Wert erreicht wird Analog ist es fur Schwarz optimal zur die Position mit dem niedrigsten Wert zu ziehen Demgemass markieren die roten Pfeile wie sich die dargestellten Werte jeweils korrespondierend zu den optimalen Spielzugen von unten nach oben d h entgegen der Spielchronologie berechnen lassen Anmerkungen BearbeitenDer Minimax Algorithmus ist im Kern vom speziellen Spiel unabhangig das heisst zum Beispiel Schach und Reversi benutzen denselben Algorithmus Schnittstellen zum speziellen Spiel sind lediglich die beiden folgenden Programmteile Welche Zuge sind in einer konkreten Spielsituation moglich Wie wird eine Spielsituation numerisch bewertet Neben dem Minimax Verfahren kann ein Spiel weitere spielspezifische Verfahren anwenden beispielsweise vorberechnete Bibliotheken fur Eroffnungszuge Bei Nicht Nullsummenspielen bei denen die Niederlage des Gegners nicht zwangslaufig mit dem eigenen Gewinn zusammenfallt liefert der Minimax Algorithmus nicht unbedingt eine optimale Strategie Fur einige Spiele wie das so genannte Nim Spiel lasst sich eine optimale Strategie auch durch effizientere Algorithmen der Kombinatorischen Spieltheorie berechnen Variante Der Negamax Algorithmus BearbeitenUm den Code zu vereinfachen und jede Position des Suchbaumes gleich behandeln zu konnen definiert man dass jeder Spieler versucht ein fur sich selbst maximales Ergebnis das heisst maximalen Wert der Bewertungsfunktion zu erzielen Dazu muss die Bewertung der Folgestellungen mit 1 displaystyle 1 nbsp multipliziert werden Negation daher der Name Damit muss nicht mehr unterschieden werden ob Weiss oder Schwarz am Zug ist und daher das Maximum oder das Minimum berechnet werden soll sondern es wird in jeder Stellung immer nur das Maximum der negierten Bewertungen der Folgestellungen berechnet 3 Komplexitat BearbeitenDie Laufzeit des Minimax Algorithmus ist linear bezuglich der Anzahl der zu uberprufenden moglichen Zuge Wenn die Anzahl der moglichen Zuge in jeder Stellung etwa gleich ist hat der Algorithmus also eine Laufzeit die etwa exponentiell zur Suchtiefe ist Man beachte dass in der Theorie bei einem Spiel mit endlich vielen Zustanden die Laufzeit konstant ist da ab einer gewissen Suchtiefe sich die Laufzeit nicht mehr erhoht Da bei den meisten Spielen diese Suchtiefe aber niemals realistisch erreicht werden kann ist es durchaus berechtigt von einem exponentiellen Wachstum zu sprechen Andererseits steigt in der Regel abhangig von der numerischen Bewertung bei hoherer Suchtiefe auch die Qualitat des Suchergebnisses Es existieren daher verschiedene optimierte Varianten zum Beispiel Variable Suchtiefe Wenn nur noch wenige Zugmoglichkeiten pro Spielsituation existieren etwa weil sich nur noch wenige Spielsteine auf dem Spielfeld befinden kann die Suchtiefe erhoht werden und umgekehrt Dynamische Suchtiefe Wenn sich die Zahlenwerte an einer Stelle des Suchbaums von Ebene zu Ebene stark andern kann die Suchtiefe lokal erhoht werden und umgekehrt Die Alpha Beta Suche kann verwendet werden Eine wesentliche Zeitersparnis ergibt sich durch Speicherung der bisher untersuchten Stellungen und deren Bewertungen Wird eine Stellung durch verschiedene Zugfolgen von der Ausgangsstellung erreicht braucht nicht jedes Mal wieder der gesamte darunter liegende Suchbaum durchsucht zu werden In der Praxis verwendet man fur diese Speicherung haufig effiziente Hashtabellen Iterative Tiefensuche BearbeitenSpeziell bei eingeschrankter Zeit fur die Suche z B im Turnierschach wird iterative Tiefensuche iterative deepening verwendet Dabei wird die Suche ausgehend von der zu untersuchenden Stellung wiederholt gestartet und dabei die gewunschte Suchtiefe schrittweise erhoht Werden die bereits untersuchten Stellungen wie oben beschrieben gespeichert mussen nur die gegenuber der vorhergehenden Suche neu erreichten Stellungen mit der Bewertungsfunktion bewertet werden Dieses Verfahren wird so lange fortgesetzt bis die verfugbare Suchzeit uberschritten oder ein hinreichend gutes Ergebnis erzielt wurde Ohne iterative Tiefensuche ware beim Uberschreiten des Zeitlimits im schlimmsten Fall nur ein einziger Zug untersucht worden dieser aber bis in sehr grosse Tiefe Der nachste Zug der vielleicht schon nach nur einem einzigen Gegenzug den Gewinn gesichert hatte ware gar nicht erst ausprobiert worden Implementierung BearbeitenHauptprogramm Auszug gespeicherterZug NULL int gewuenschteTiefe 4 int bewertung max 1 gewuenschteTiefe if gespeicherterZug NULL es gab keine weiteren Zuege mehr else gespeicherterZug ausfuhren Die normale Variante lautet int max int spieler int tiefe if tiefe 0 or keineZuegeMehr spieler return bewerten int maxWert unendlich generiereMoeglicheZuege spieler while noch Zug da fuehreNaechstenZugAus int wert min spieler tiefe 1 macheZugRueckgaengig if wert gt maxWert maxWert wert if tiefe gewuenschteTiefe gespeicherterZug Zug return maxWert int min int spieler int tiefe if tiefe 0 or keineZuegeMehr spieler return bewerten int minWert unendlich generiereMoeglicheZuege spieler while noch Zug da fuehreNaechstenZugAus int wert max spieler tiefe 1 macheZugRueckgaengig if wert lt minWert minWert wert return minWert Die NegaMax Variante lautet int miniMax int spieler int tiefe if tiefe 0 or keineZuegeMehr spieler return bewerten spieler int maxWert unendlich generiereMoeglicheZuege spieler while noch Zug da fuehreNaechstenZugAus int wert miniMax spieler tiefe 1 macheZugRueckgaengig if wert gt maxWert maxWert wert if tiefe gewuenschteTiefe gespeicherterZug Zug return maxWert Literatur BearbeitenJorg Bewersdorff Gluck Logik und Bluff Mathematik im Spiel Methoden Ergebnisse und Grenzen Springer Spektrum 7 Auflage 2018 ISBN 978 3 658 21764 8 doi 10 1007 978 3 658 21765 5 insbesondere Kapitel 2 10 Einzelnachweise Bearbeiten Jorg Bewersdorff Gluck Logik und Bluff Mathematik im Spiel Methoden Ergebnisse und Grenzen Springer Spektrum 7 Auflage 2018 ISBN 978 3 658 21764 8 doi 10 1007 978 3 658 21765 5 Kapitel 2 1 Jorg Bewersdorff Gluck Logik und Bluff Mathematik im Spiel Methoden Ergebnisse und Grenzen Springer Spektrum 7 Auflage 2018 ISBN 978 3 658 21764 8 doi 10 1007 978 3 658 21765 5 S 181 ff Jorg Bewersdorff Gluck Logik und Bluff Mathematik im Spiel Methoden Ergebnisse und Grenzen Springer Spektrum 7 Auflage 2018 ISBN 978 3 658 21764 8 doi 10 1007 978 3 658 21765 5 S 195 f Siehe auch BearbeitenMinimax Gleichgewicht als Spezialfall des Nash Gleichgewichts Minimax Regel Min Max Theorem Alpha Beta Suche eine wesentliche Optimierung des Minimax AlgorithmusWeblinks BearbeitenJava Applet zur Demonstration www javatpoint com Mini Max Algorithm in Artificial Intelligence GeeksforGeeks Minimax Algorithm in Game Theory Set 1 Introduction GeeksforGeeks Minimax Algorithm in Game Theory Set 4 Alpha Beta Pruning freeCodeCamp Minimax Algorithm Guide How to Create an Unbeatable AI Abgerufen von https de wikipedia org w index php title Minimax Algorithmus amp oldid 237980785 Bewertungsfunktion