Jeux entre deux adversaires ● Noms des joueurs : Max vs. Min u Max est le premier à jouer (notre joueur) Min u Min est son adversaire ● On va interpréter le résultat d’une par<e comme la distribu(on d’une récompense au joueur Max u peut voir ce>e récompense comme le résultat d’un pari u Max souhaite maximiser sa récompense u Min souhaite minimiser la récompense de Max (Min va recevoir l’opposé de ce>e récompense) 1 Hugo Larochelle et Froduald Kabanza Max Arbre de recherche ● Comme pour les problèmes que A* peut résoudre, on commence par déterminer la structure de notre espace de recherche ● Un problème de jeu peut être vu comme un problème de recherche dans un arbre : u Un nœud (état) ini(al : configura<on ini<ale du jeu u Une fonc(on de transi(on : » retournant un ensemble de paires (ac(on, nœud successeur) – ac<on possible (légale) – nœud (état) résultant de l’exécu<on de ce>e ac<on u Un test de terminaison » indique si le jeu est terminé u Une fonc(on d’u(lité pour les états finaux (c’est la récompense reçue par le joueur Max) 2 Hugo Larochelle et Froduald Kabanza Arbre de recherche tic-tac-toe état ini<al fonc<on de transi<on fonc<on d’u<lité 3 Hugo Larochelle Algorithme minimax ● Idée: à chaque tour, on suppose que l’ac<on la plus profitable pour le joueur Max ou le joueur Min est prise, c.-­‐à-­‐d. la plus grande valeur minimax utilité(n) Si n est un nœud terminal valeur-­‐minimax(n) = max n’ successeur de n valeur-­‐minimax(n’) Si n est un nœud Max min n’ successeur de n valeur-minimax(n’) Si n est un nœud Min ● 4 Ces équa<ons donnent un programme récursif pour calculer les valeurs pour tous les nœuds dans l’arbre de recherche Hugo Larochelle et Froduald Kabanza Algorithme minimax Algorithme minimax(noeudIni*al) 1. retourne l’ac<on choisie par tourMax(noeudIni*al) Algorithme tour-max(n) 1. 2. 3. 5. si n correspond à une fin de par<e, alors retourner utilité(n) u = -­‐∞, a = void pour chaque paire (a’,n’) donnée par transition(n) 4. si l’u<lité de tour-min(n’) > u alors affecter a = a’, u = u<lité de tour-­‐min(n’) retourne l’u<lité u et l’ac<on a // l’ac*on ne sert qu’à la fin (la racine) Algorithme tour-min(n) 1. 2. 3. 5 5 si n correspond à une fin de par<e, alors retourner utilité(n) u = ∞, a = void pour chaque paire (a’,n’) donnée par transition(n) 4. si l’u<lité de tour-max(n’) < u alors affecter a = a’, u = u<lité de tour-max(n’) retourne l’u<lité u et l’ac<on a Hugo Larochelle et Froduald Kabanza Propriétés de minimax ● Complet (retourne une solu<on) ? ● Op<mal (retourne la meilleure solu<on) ? ● Complexité en temps ? u Oui (si l’arbre est fini) u Oui (contre un adversaire qui joue de façon op(male) u O(bm) : » b : le nombre maximum de coups (ac<ons) légaux à chaque étape » m : nombre maximum de coups dans un jeu (profondeur maximale de l’arbre) ● Complexité en espace mémoire ? ● Pour le jeu d’échec : b ≈ 35 et m ≈100 pour une par<e « raisonnable » ● Existe-­‐t-­‐il des chemins dans l’arbre qui sont explorés inu<lement ? 6 u O(bm), puisque recherche en profondeur u il n’est pas réaliste d’espérer trouver une solu<on exacte en un temps raisonnable Hugo Larochelle et Froduald Kabanza