minimax algorithm (tsz. minimax algorithms)
Minimax egy klasszikus döntési algoritmus kétjátékos, zéróösszegű játékokhoz, ahol az egyik játékos minimalizálni, a másik pedig maximalizálni próbálja a saját nyereségét. A minimax elv alapján egy játékos feltételezi, hogy az ellenfele a lehető legjobb lépést választja, és ennek tudatában próbálja optimalizálni a saját stratégiáját.
A minimax algoritmus játékelméleti módszer, amely:
MAX / \ MIN MIN / \ / \ 3 5 2 9
min(3,5) = 3
, min(2,9) = 2
max(3,2) = 3
→ tehát a MAX játékos a bal ágat választja.
def minimax(node, depth, maximizingPlayer):
if depth == 0 or node is leaf:
return value of node
if maximizingPlayer:
maxEval = -infinity
for child in node.children:
eval = minimax(child, depth-1, False)
maxEval = max(maxEval, eval)
return maxEval
else:
minEval = +infinity
for child in node.children:
eval = minimax(child, depth-1, True)
minEval = min(minEval, eval)
return minEval
Terület | Példák |
---|---|
Klasszikus játékok | Sakk, dáma, amőba (tic-tac-toe) |
AI játékfejlesztés | Ellenfél-szimuláció |
Stratégiai döntéshozatal | Kockázatelemzés versengő helyzetekben |
Módszer | Cél |
---|---|
Alpha–Beta pruning | Csökkenti a játékfa bejárását anélkül, hogy az eredményt befolyásolná |
Iterative deepening | Fokozatos mélyítés a gyors válasz érdekében |
Heurisztikus értékelés | Nem szükséges a teljes játékfa kiértékelése (pl. sakkban bábuk értéke) |
Fogalom | Leírás |
---|---|
Minimax | Olyan algoritmus, amely feltételezi, hogy az ellenfél a lehető legjobban játszik |
Alkalmazás | Kétszemélyes, zéróösszegű játékok |
Játékosok szerepe | Max – nyerni próbál, Min – veszteséget csökkent |
Kimenet | Optimális lépés az adott mélységig |
Bővíthető | Alpha–Beta pruning, értékelőfüggvényekkel |