pseudcode pour l'algorithme minmax

voix
3

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.

Créé 29/07/2010 à 05:13
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

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.

Créé 29/07/2010 à 05:43
source utilisateur

voix
2

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!

Créé 29/07/2010 à 07:39
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more