AccueilđŸ‡«đŸ‡·Chercher

Arbre de jeu

En thĂ©orie des jeux, un arbre de jeu est un arbre (au sens de la thĂ©orie des graphes) dont les nƓuds sont des positions dans un jeu et dont les arĂȘtes sont des mouvements. L'arbre de jeu complet est l'arbre de jeu commençant Ă  la position initiale et contenant tous les mouvements possibles depuis chaque position.

Arborescence

Les deux premiers plies (en) de l'arbre de jeu pour le tic-tac-toe.

Le diagramme ci-contre montre comment coder dans une représentation arborescente le premier tour de jeu au tic-tac-toe : ce sont les deux premiers niveaux dans l'arborescence, la racine représentant la position initiale (une grille vide, en l'occurrence). Les rotations et les réflexions de la grille sont équivalentes, le premier joueur a donc trois choix de déplacement: au centre, au milieu d'un bord ou dans un coin. Le deuxiÚme joueur a deux choix pour la réponse si le premier joueur a joué au centre, sinon cinq choix, ainsi de suite.

Le nombre de feuilles dans l'arbre complet du jeu correspond au nombre de parties diffĂ©rentes possibles de jouer au jeu. Par exemple, l'arborescence du tic-tac-toe comporte 255 168 feuilles.

Les arbres de jeu sont importants dans le domaine de l'intelligence artificielle, car une façon de choisir le meilleur coup dans un jeu est de rechercher dans l'arbre du jeu en utilisant l'un des nombreux algorithmes de parcours d'arbre, combinĂ©s Ă  des rĂšgles de type minimax pour Ă©laguer l'arbre . Le parcours de l'arbre du tic-tac-toe est relativement simple, mais pour des jeux oĂč le nombre de coups possibles est important, comme aux Ă©checs, l'arbre complet du jeu est beaucoup trop grand pour ĂȘtre parcouru. Pour parer Ă  cela un programme de jeu d'Ă©checs recherche un arbre de jeu partiel: le programme parcourt le plus de niveaux possibles depuis la position actuelle dans le temps dont il dispose. Hormis le cas des arbres de jeu «pathologiques»[1] (qui semblent assez rares en pratique), augmenter la profondeur de recherche (c'est-Ă -dire le nombre de plis recherchĂ©s) amĂ©liore gĂ©nĂ©ralement les chances de choisir le meilleur coup.

Les jeux Ă  deux peuvent Ă©galement ĂȘtre reprĂ©sentĂ©s sous forme d'arbres et/ou. Pour que le premier joueur gagne une partie, il doit exister un coup gagnant pour tous les coups du deuxiĂšme joueur. Ceci est reprĂ©sentĂ© dans l'arbre et/ou en utilisant la disjonction pour reprĂ©senter les mouvements alternatifs du premier joueur et en utilisant la conjonction pour reprĂ©senter tous les mouvements du deuxiĂšme joueur.

RĂ©solution des arbres de jeu

Algorithme déterministe

Un arbre de jeu arbitraire entiÚrement coloré avec l'algorithme suivant

Avec un arbre de jeu complet, il est possible de «rĂ©soudre» le jeu, c'est-Ă -dire de trouver une sĂ©quence de coups que le premier ou le deuxiĂšme joueur peut suivre et qui garantira le meilleur rĂ©sultat possible pour ce joueur (gĂ©nĂ©ralement une victoire ou une Ă©galitĂ©). L'algorithme (qui est gĂ©nĂ©ralement appelĂ© raisonnement rĂ©trograde ou analyse rĂ©trograde) peut ĂȘtre dĂ©crit de maniĂšre rĂ©cursive comme suit, en partant d'un arbre de jeu complet non colorĂ© :

  1. Colorez le dernier niveau de l'arbre de jeu de sorte que toutes les victoires du joueur 1 soient colorées dans un sens (bleu dans le diagramme), toutes les victoires du joueur 2 soient colorées d'une autre façon (rouge dans le diagramme) et toutes les égalités soient colorées d'une troisiÚme façon (gris sur le diagramme).
  2. Remontez aux nƓuds du niveau supĂ©rieur. Si l'un des fils d'un nƓud est de couleur opposĂ©e au joueur actuel, colorez le nƓud de la couleur de ce fils. Si tous les fils d'un nƓud sont de la mĂȘme couleur que le joueur actuel, colorez ce nƓud de la mĂȘme couleur. Sinon, colorez ce nƓud avec une Ă©galitĂ©.
  3. RĂ©pĂ©tez l'Ă©tape 2, en vous dĂ©plaçant vers le haut, jusqu'Ă  ce que tous les nƓuds soient colorĂ©s. La couleur du nƓud racine dĂ©terminera la nature du jeu.

Il est gĂ©nĂ©ralement possible de rĂ©soudre un jeu (dans ce sens technique de «rĂ©soudre») en utilisant uniquement un sous-ensemble de l'arbre de jeu, car dans de nombreux jeux, un mouvement n'a pas besoin d'ĂȘtre analysĂ© s'il y a un autre mouvement qui est meilleur pour le mĂȘme joueur. C'est le principe utilisĂ© pour l'Ă©lagage alpha-bĂȘta qui peut ĂȘtre utilisĂ© dans de nombreux jeux dĂ©terministes.

Tout sous-arbre pouvant ĂȘtre utilisĂ© pour rĂ©soudre le jeu est connu sous le nom d'arbre de dĂ©cision, et la taille des arbres de dĂ©cision de diffĂ©rentes formes est utilisĂ©e comme mesure de la complexitĂ© du jeu[2].

Algorithmes probabilistes

Un autre moyen pour rĂ©soudre les arbres de jeu est l’utilisation d'algorithmes randomisĂ©s. Cette mĂ©thode prĂ©sente deux avantages important: la rapiditĂ© et la praticitĂ©. Alors qu'une version dĂ©terministe de la rĂ©solution des arbres de jeu peut ĂȘtre effectuĂ©e en Ο(n), l'algorithme alĂ©atoire suivant a un temps d'exĂ©cution attendu de Ξ(n0.792) si chaque nƓud de l'arbre de jeu a le degrĂ© 2. Son cĂŽtĂ© pratique vient du fait qu'un adversaire ne peut pas battre le systĂšme d'arbres de jeu en connaissant l'algorithme utilisĂ© pour rĂ©soudre l'arbre de jeu car l'ordre de rĂ©solution est alĂ©atoire.

L'algorithme suivant est une version possible de résolution d'arbre de jeu de façon aléatoire[3]:

def gt_eval_rand(u) -> bool:
  """Renvoie True si ce noeud est évalué en victoire, sinon renvoie False"""
  if u.leaf:
    return u.win
  else:
    random_children = (gt_eval_rand(child) for child in random_order(u.children))
    if u.op == "OR":
      return any(random_children)
    if u.op == "AND":
      return all(random_children)

L'algorithme utilise l'idĂ©e de "court-circuit": Dans le cas oĂč la racine est considĂ©rĂ© comme un "OR "opĂ©rateur, elle est classĂ©e comme True si un True est trouvĂ© dans l'arbre; inversement, dans le cas oĂč la racine est considĂ©rĂ© comme un "AND "opĂ©rateur, elle est classĂ©e comme False si un False est trouvĂ© dans l'arbre.

Articles connexes

Annexes

Notes et références

  1. (en) Nau, « An investigation of the causes of pathology in games », Artificial Intelligence, vol. 19,‎ , p. 257–278 (DOI 10.1016/0004-3702(82)90002-9)
  2. Victor Allis, Searching for Solutions in Games and Artificial Intelligence, Ph.D. Thesis, University of Limburg, Maastricht, The Netherlands, (ISBN 90-90-07488-0, lire en ligne)
  3. Daniel Roche, SI486D : Randomness in Computing, Game Trees Unit, United States Naval Academy, Computer Science Department, (lire en ligne)
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.