Académique Documents
Professionnel Documents
Culture Documents
I. Introduction
somme nulle : les gains d’un joueur sont exactement l’opposé des gains de l’autre joueur (ces
gains peuvent donc être négatifs) ;
information complète : lors de sa prise de décision (c-à-d. du choix d’un coup à jouer dans le
cas qui nous intéresse), chaque joueur connaît précisément :
MinMax est un algorithme, et plus généralement une stratégie, qui provient du domaine de la
Théorie des jeux et a été identifié par Von Neumann il y a plus de 60 ans. Son amélioration
la plus connue est l’algorithme MinMax avec élagage AlphaBeta qui est encore
aujourd’hui à la base, dans des versions quelque peu améliorées, des programmes de jeu les
plus évolués (Logistello pour Othello, DeeperBlue, DeepFritz pour les échecs, etc.).
Rappelons tout d’abord que l’objectif des méthodes de recherche présentées dans ce chapitre
est de choisir un coup à jouer dans un jeu de réflexion. Ces méthodes seront donc utilisées
pour que l’ordinateur puisse effectivement jouer à Othello.
Avant de considérer précisément le cas d’un ordinateur qui joue à Othello cependant,
analysons un contexte de jeu humain contre humain (toujours pour le jeu Othello). Le
principe de la recherche d’un coup par MinMax est un processus de réflexion très naturel que
tout un chacun a déjà mis en œuvre. Etant donné une position, on suppose que c’est au joueur
noir de jouer.
Dans la position donnée, le joueur Noir a une série de coups qu’il peut effectuer : pour
chacun d’eux, il s’interroge sur les répliques éventuelles que peut faire le joueur Blanc, qui
lui-même analyse pour chacune de ses répliques celles auxquelles peut procéder le joueur
Noir, qui à son tour examine à nouveau l’ensemble des coups qu’il peut effectuer suite aux
répliques de Blanc, etc. Ce processus de réflexion peut continuer ainsi et, dans le cas où les
deux joueurs ont la capacité de mener cette réflexion jusqu’à ce qu’aucun des 2 joueurs ne
puisse plus jouer alors il est facile pour Noir de décider du coup qu’il doit jouer. Il lui suffit en
effet de choisir le coup qui, s’il existe, quelque soit la suite de répliques du joueur Noir et
joueur Blanc imaginées mène à une victoire.
Dr Hemam Sofiane 1
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
Ce processus de réflexion est généralement associé à un arbre de jeu tel que celui présenté sur
la figure 1. Chaque nœud y correspond à une position de jeu et les branches correspondent
aux différents coups que peut faire Noir ou Blanc à partir de cette position. Les feuilles sont
les nœuds terminaux, desquels ne partent aucune branche, et correspondent dans la situation
où une recherche exhaustive peut être conduite jusqu’à la fin de la partie. Des valeurs V pour
victoire ou D pour défaite, du point de vue du joueur Noir, sont indiquées au niveau des
nœuds terminaux : ces valeurs précisent donc l’issue de la séquence de coups à partir du nœud
racine (c-à-d. le sommet de l’arbre).
L’arbre de la Figure 1 indique que le joueur Noir est gagnant de cette partie car il a la
possibilité de jouer deux coups qui lui assureront de gagner quelles que soient les répliques du
joueur Blanc. Pour se rendre compte de cela, analysons brièvement l’arbre de jeu et indiquons
pourquoi le joueur Noir est assuré de gagner.
Tout d’abord, pourquoi la stratégie de recherche prend le nom de MinMax? Le joueur Noir a
trois possibilités de jeu à partir de la position de départ. Il veut bien évidemment essayer de
choisir le coup qui va MAXimiser ses gains, c’est-à-dire dans le cas présent de gagner la
partie. Pour chacun des coups que peut répliquer le joueur Blanc, ce dernier veut à l’inverse
MINimiser les gains du joueur Noir (et donc, puisque c’est un jeu à somme nulle,
maximiser ses gains). Ce qu’essaie ainsi de faire le joueur Noir est de maximiser le minimum
des gains qu’il peut obtenir (puisque, encore une fois, le joueur Blanc fera tout pour lui faire
avoir un gain minimum), d’où le nom MinMax.
Dans le cas de la Figure 1, le joueur Noir peut jouer indifféremment les deux premiers coups
et est sûr de pouvoir gagner :
Premier coup. Le premier coup (branche la plus à gauche) mène à des situations
terminales qui sont toutes identifiées comme des victoires du joueur Noir, il est donc
évident que ce coup mène assurément à une victoire.
Dr Hemam Sofiane 2
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
Au final, la position à partir de laquelle est développé l’arbre est gagnante pour Max puisque
le joueur Noir a le choix entre deux coups gagnants et un coup perdant et que, voulant
maximiser son gain, il choisira l’un des coups gagnants. La Figure 2 illustre le ré-étiquetage
des nœuds internes correspondant au raisonnement utilisé pour déterminer si la position est
gagnante ou non : chaque nœud Max choisit le maximum de ses fils et inversement pour
chaque nœud Min.
Notons que cette situation de recherche jusqu’à l’atteinte de positions terminales ne peut
exister que lorsque mise en œuvre à partir d’une position qui est proche de la fin de la partie.
Il est facile d’imaginer que l’arbre de jeu ne peut être développé à partir de positions où le
plateau de jeu n’est que peu rempli, et, a fortiori, à partir de la position de départ. (C’est en
revanche possible de le faire à partir de la position de départ pour des jeux de réflexion très
simples tels que le morpion, qui se joue sur un damier 3x3). Pour le reste de la partie, il est
donc nécessaire de mettre en œuvre la stratégie MinMax en utilisant une profondeur d’arbre
prédéfinie et une fonction d’évaluation.
Dr Hemam Sofiane 3
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
Cela signifie que le critère d’arrêt du développement de l’arbre de jeu est l’atteinte d’une
hauteur maximum (la hauteur d’un arbre correspond à la longueur du plus long chemin qui y
existe entre la racine de l’arbre et l’une de ses feuilles – l’arbre de la Figure 1 est de hauteur
4). Dans le cas d’arbres de jeu, on parle plus souvent de profondeur de recherche que de
hauteur. Les feuilles de l’arbre ne sont donc pas des positions de fin de jeu et il n’est
généralement pas possible de connaître de manière sûre et certaine l’étiquetage (V ou D) des
positions se trouvant au niveau de feuilles. En d’autres termes, il n’est pas possible de dire si
une feuille correspond à une position gagnante ou à une position perdante. Pour pallier ce
problème, il est ainsi nécessaire de disposer d’une fonction d’évaluation, capable d’estimer le
plus précisément possible la qualité d’une position, et qui servira à étiqueter les feuilles de
l’arbre. Cet étiquetage consistera à l’affectation d’une valeur numérique à chacune des
positions, valeur numérique calculée par la fonction d’évaluation. La Figure 3 illustre
l’application de MinMax lorsque les feuilles sont associées à une valeur numérique donnée
par une fonction d’évaluation.
Figure 3 : Application de l’algorithme MinMax en utilisant les notes obtenues par une
fonction d’évaluation.
Dans ce cadre de travail, il est évident qu’une recherche dans un arbre à une profondeur plus
grande permet généralement de choisir un coup de meilleur qualité que le coup retourné par
un MinMax utilisant une profondeur plus faible.
Dr Hemam Sofiane 4
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
3) Principe du MIN-MAX:
Pour que la machine (le joueur A ou B) puisse jouer de façon convenable à partir d’une
configuration donnée, elle doit pouvoir choisir parmi les fils de la configuration courante
celui qui représente le coup le plus favorable pour elle et donc le plus défavorable pour son
adversaire. Pour pouvoir faire ce choix, l’algorithme du Min-Max attribue à chaque
configuration de l’arbre une certaine valeur. Si la machine est le joueur maxiant, elle choisira
parmi les fils de la configuration courante celui qui porte la plus grand valeur, et inversement,
si c’est un joueur minimisant, le choix portera sur la plus petite des valeurs. Comment
Min-Max attribue-t-il des valeurs aux différentes configurations?
On commence par attribuer des valeurs aux feuilles. (+1 si A gagne, -1 si A perd, 0 si match
nul). Il est clair que si A gagne, B perd et si A perd, B gagne. Ce sont les règles du jeu qui
déterminent si une configuration feuille représente une partie gagné, perdue ou nulle.
Les valeurs sont propagées vers les nœuds ascendants, jusqu'à arriver à la racine de la façon
suivante:
- si c'est au tour de A de jouer, le nœud correspondant prend la plus grande des valeurs de
ses fils (le coup le plus profitable pour A)
- si c'est au tour de B de jouer, le nœud correspondant prend la plus petite des valeurs
de ses fils (le coup le plus profitable pour B)
-si la racine prend comme valeur 1, le joueur A peut gagner s'il ne fait pas d'erreurs. On dit
que A a une stratégie gagnante.
Si la racine prend la valeur -1, le joueur A est assuré de perdre si B ne fait pas d'erreurs.
Dans ce cas, c’est B qui a une stratégie gagnante.
Si la racine prend la valeur 0, aucun des deux joueurs n'a de stratégie gagnante, mais
tous deux peuvent s'assurer, au pire, d'un match nul en jouant aussi bien que possible.
Exemple : Cas du jeu des croix et des cercles décrits plus loin.
Pour propager les valeurs de bas en haut, Min-Max parcours l’arbre des configurations avec
un parcours post-ordre: avant d’évaluer un nœud donné, il faut d’abord évaluer tous ses fils.
Rappelons que les parcours postordre, inordre et préordre sont des cas particuliers du
parcours en profondeur.
Le principe du jeu des croix et des cercles (appelé Tic-Tac-Toe ou morpion) consiste à placer
des croix et des cercles sur une grille de 9 cases (3x3), jusqu'à ce que l'un des joueurs aligne
trois de ses symboles.
Supposons que A joue avec le symbole X (les croix) et B joue avec le symbole O (les cercles).
A chaque coup, un joueur place un de ses symboles dans une case vide de la grille.
Dr Hemam Sofiane 5
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
Lorsque le joueur A a commencé la partie, il avait le choix entre 9 cases vides pour placer son
premier X. Ensuite le joueur B avait le choix entre 8 cases vides pour place son premier O, etc.
Dr Hemam Sofiane 6
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
Pour évaluer cette configuration par Min-Max, il faut parcourir en post-ordre le sous arbre
ayant comme racine cette configuration et propager les valeurs des feuilles vers les nœuds
ascendants:
La valeur retournée par Minmax est +1, qui veut dire que A est assuré de gagner s’il ne fait
pas d’erreurs. Les nœuds étiquetés par la valeur 0 mènent vers un match nul et ceux étiquetés
par -1 mènent vers une défaite de A dans le cas où B ne fait pas d’erreurs.
4) Algorithme du Minmax
Si l’arbre généré à partir de l’état initial n’est pas très grand (cela dépend du jeu considéré) on
peut lancer une seule fois la fonction Minmax pour évaluer tous les nœuds possibles et
stocker ces informations en mémoire. Ensuite lorsque le jeu se déroulera, il suffira de choisir
parmi les configurations courantes celles qui portent la plus grande ou la plus petite des
valeurs selon que la machine soit un joueur maximisant, ou minimisant.
Dr Hemam Sofiane 7
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
A l’appel initial de Minmax, on donne la configuration que l’on veut évaluer (J), la nature du
joueur (maximisant ou minimisant) qui va jouer à partir de J (Mode) et la profondeur
maximale dans l’arbre que l’on ne doit pas dépasser (Niveau).
La fonction Coût(J) est appliquée uniquement à une feuille et doit retourner soit -1, soit 0,
soit +1.
5) Limite de MinMax
La limite majeure de Minmax est que le nombre de branches que cet algorithme amène à
développer est extrêmement important. En effet, si l’on considère que le facteur de
branchement, c’est-à-dire le nombre moyen de coups potentiels à chaque position, est de 8 à
Othello alors la recherche d’un coup en développant un arbre de profondeur d nécessite de
générer de l’ordre de 8d positions terminales. Cela implique donc que la fonction d’évaluation
doit être appliquée à 8d positions. Si l’on considère une fonction d’évaluation un peu évoluée
qui prend 10-6 secondes à calculer le score d’une position et que l’on veut faire une recherche
à une profondeur 10 (profondeur minimale utilisée par les meilleurs programme d’Othello)
Dr Hemam Sofiane 8
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
alors la recherche d’un coup par Minmax prend 810 x 10-6 = 1074 secondes soit près de 18
minutes pour un seul coup.
L'élagage alpha-bêta( en anglais: alpha-beta pruning ) est une technique très utilisée
permettant de réduire le nombre de nœuds évalués par l'algorithme minimax.
Plus simplement, l'élagage α-β évite d'évaluer des nœuds dont on est sûr que leur qualité sera
inférieure à un nœud déjà évalué, il permet donc d'optimiser grandement l'algorithme
minimax sans en modifier le résultat.
1- En parcourant tous les descendants de c1, on trouve que c1 a une valeur définitive
égale à 20.
2- Avant d'explorer les prochains fils de n, on peut déjà dire que la valeur n est
supérieure ou égale à 20 (car n est un nœud maximisant). C'est une valeur provisoire
de n car elle peut changer durant l'exploration des autres descendants de n.
Dr Hemam Sofiane 9
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
3- En explorant c2 et ses fils, on tombe sur un nœud d de valeur définitive 15. Comme d
est un fils de c2, on aura pour c2 une valeur provisoire inférieure ou égale à 15 (car c2
est un nœud minimisant).
4- A ce niveau, on peut abandonner l'exploration des autres fils de c2 et
passer directement à c3, car la valeur de c2 ne peut plus influencer celle de c1.
2) Règles de calcul
1. Si tous les fils d'un nœud n ont été examinés ou éliminés, transformer la valeur e n
(jusqu'ici provisoire) en une valeur définitive.
Exemple :
Scénario:
R2 : V(C) = 2 provisoire
Dr Hemam Sofiane 10
Master Informatique : Sécurité et Technologie Web
Matière : Algorithmique avancée et complexité
Chapitre 2 : Théorie des jeux
R1 : V(C) = 2 définitive
R2 : V(B) = 2 provisoire
R2 : V(F) = 6
R2 : V(A) = 2 provisoire
R2 : V(J) = 8 provisoire
R1 : V(j) = 8 définitive
R2 : V(I) = 8 provisoire
R2 : V(M) = 5 provisoire
R1 : V(M) = 5 définitive
R1 : V(I) = 5 définitive
R2 : V(A) = 5 provisoire
(Max de 2 et 5)
R2 : V(O) = 3
R1 : V(Q) = 4
R2 : V(P) = 4 provisoire
Dr Hemam Sofiane 11