Je veux obtenir le pseudo-code pour l'algorithme minmax. Je dois faire 2 fonctions, def maxAgent (gameState, profondeur) et minAgent. Est-il un organisme qui a le droit et facile pour elle pseudocode.
pseudcode pour l'algorithme minmax
L'algorithme minmax essaie de maximiser le score pour le joueur A et minimiser le score pour le joueur B. Étant donné un nœud, vous pouvez trouver le résultat final du jeu optimal en prenant le maximum (A) ou min (B) du score pour noeuds successeurs.
En supposant que les nœuds feuilles ont un gagnant attribué (1 A, -1 B) alors que tous les autres noeuds ont un score de 0. Vous pouvez alors calculer le résultat gagnant finale A avec quelque chose comme
getMaxScore(node) {
score = node.score;
for each child node
score = max(score, getMaxScore(node))
next
return score;
}
Ceci est l'algorithme de base. Vous pouvez court-circuiter l'évaluation dès que le score devient 1 alors vous avez une victoire connue pour A.
L'algorithme est le même pour B, getMinScore, que vous utilisez la fonction min, et si un court-circuit, recherchez -1.
Deux joueurs, A et B, à tour de rôle à jouer.
On nous donne une fonction de notation f qui permet d'évaluer une position du conseil d'administration donnée, P. Des valeurs plus élevées de f (P) sont meilleurs pour A et pire B (c.-à-f (P) est une estimation de la « bonne » P est A sans faire de préanalyse plus loin).
Considérons une position du conseil d'administration P.
Si P est un nœud feuille (c.-à-P est une position gagnante ou nous avons regardé aussi loin que nous voulons) nous retournons f (P) comme le score de ce noeud.
Dans le cas contraire P n'est pas un nœud feuille et a des enfants C1, ..., Cn. Nous calculons récursive les scores pour les enfants, ce qui donne S1, ..., Sn.
Si A joue à P alors le score P est max {S1, ..., Sn} A depuis toujours jouer pour maximiser son avantage.
Si B joue à P alors le score P est min {S1, ..., Sn} B depuis toujours jouer pour réduire au minimum l'avantage d'un.
Cela devrait être suffisant pour se transformer en code.
Une fois que vous avez fait cela, jetez un oeil à la taille alpha-bêta, qui devrait (radicalement) réduire la quantité de recherche que vous devez faire. la taille alpha-bêta est basée sur l'idée que si A déduit que B peut jouer pour forcer un avantage maximal de A à être M, alors il est inutile d'examiner une sous-arbre dont le score est supérieur à M puisque B ne permettra jamais que A cette option!













