Vous êtes sur la page 1sur 11

Master Informatique : Sécurité et Technologie Web

Matière : Algorithmique avancée et complexité


Chapitre 2 : Théorie des jeux

I. Introduction

Ce chapitre fait une présentation de l’algorithme standard, le MinMax, et de son amélioration


principale l’élagage AlphaBeta, qui permet la sélection d’un coup dans les jeux dits < jeux à
deux joueurs à somme nulle et information complète >, famille dans laquelle se trouvent la
plupart des jeux de réflexion (Othello, évidemment, mais aussi échecs, morpion, puissance 4,
etc) :

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 :

ses possibilités d’action ;


les possibilités d’action de son opposant (c’est-à-dire les répliques possibles de
l’adversaire dans le cas d’Othello) ;
les gains résultants de ces actions.

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.).

II. MinMax et fonction d’évaluation


1) Le MinMax idéal : recherche exhaustive

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).

Figure 1 : Arbre de recherche MinMax

Figure 1 – Arbre de recherche MinMax développé jusqu’à la fin de la partie. V ou D indique


si la position terminale est une victoire du joueur Noir ou bien une défaite. Un nœud Max
correspond au cas où le joueur en question (ici, Noir) essaie de maximiser son gain alors
qu’un nœud Min correspond au cas inverse.

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

Deuxième coup. Dans le cas de la deuxième branche (celle du milieu en partant de la


racine), la situation est un peu plus subtile car deux des nœuds terminaux, le premier
et le troisième fils de A, sont étiquetés comme des défaites. Puisque le joueur Blanc a
la possibilité en A de choisir l’un de ces deux coups il est évident qu’il ne s’en privera
pas son objectif (minimiser le gain du joueur Noir). Le joueur Noir considère donc
pour acquis que s’il arrive au nœud A, c’est-à-dire qu’il joue le premier coup possible
lorsqu’il est à la position C, il perdra la partie : Position A peut être considéré comme
un position de défaite. Néanmoins, la position B n’ayant que des fils étiquetés comme
des victoires, le joueur Noir est sûr que s’il arrive dans la position B (deuxième fils de
C) il gagnera la partie : on peut considérer que ce nœud est considéré comme une
victoire. Ce qui a été vu permet donc de dire qu’en C, le joueur Noir a deux choix de
coups, l’un menant à une victoire et l’autre à une défaite; puisqu’il essaie de
maximiser son gain, il choisira évidemment le coup qui l’amène à une position
gagnante et C peut être considéré comme une position gagnante. La position D peut
également être considérée comme victorieuse puisque tous les nœuds terminaux que
l’on peut atteindre en descendant dans l’arbre à partir de D sont des victoires. Le
second coup que peut faire le joueur Noir à partir de la racine est donc nécessairement
un coup gagnant (si bien sûre, au cours du jeu le joueur Noir ne fait pas d’erreur en C).
Troisième coup. S’agissant du troisième coup (branche la plus à droite), il amène
nécessairement à une position perdante. En effet, si l’on applique le même type de
raisonnement que précédemment alors il s’avère que le nœud E correspond
nécessairement à une défaite (le joueur Blanc se sera arrangé au niveau inférieur pour
choisir le coup correspondant à une défaite) et donc la position en F est une défaite : le
joueur Blanc a l’opportunité de choisir un coup qui mène à une défaite et il ne s’en
privera pas.

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.

2) MinMax à profondeur donnée + fonction d’évaluation

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

Figure 2 : Détail de l’algorithme MinMax sur l’arbre de Figure 1

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

La configuration initiale est une grille vide.

Une configuration feuille représente une grille où il y a un alignement de 3 symboles


identiques (match gagné ou perdu) ou bien il n’y a plus de cases vides dans la grille (match
nul).

Voici le déroulement d’une partie en supposons que A commence à jouer en premier:

Le joueur A a gagné la partie car il a pu aligner 3 X.

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.

La figure suivante montre les premiers niveaux de l’arbre de recherche:

Supposons qu’on est arrivé à la configuration suivante et où c’est au tour de A de jouer:

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

La fonction Minmax décrite ci-dessous, évalue le coût de la configuration J, sachant que si


mode = Max c'est au joueur maximisant de jouer et si mode = Min c’est au joueur minimisant
de jouer. Niveau désigne la profondeur maximale autorisée pour l'exploration.

Fonction Minmax(J, Mode, Niveau) : réel


Si ( J est une feuille )
Retourner Coût(J)
Sinon
Si ( Niveau = 0)
Retourner Estimation(J)
Sinon
Si ( Mode = Max )
Val ← - ∞
Sinon
Val ← + ∞
Fsi
Pour chaque fils K de J
Si ( Mode = Max )
Val ← max(Val, Minmax(K, Min, Niveau-1))
Sinon
Val ← min(Val, Minmax(K, Max, Niveau-1))
Fsi
Fpour
Retourner Val
Fsi
Fsi

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.

La fonction Estimation(J) s’applique à n’importe quelle configuration et retourne un réel


compris entre -1 et +1 indiquant la valeur estimée de la configuration J.

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.

Pour surmonter les limites de l’algorithme Minmax, l’algorithme élagage AlphaBeta,


introduit ce qui s’appelle des coupes dans l’arbre de recherche

III. Algorithme Elagage AlphaBeta

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.

L'algorithme minimax effectue en effet une exploration complète de l'arbre de recherche


jusqu'à un niveau donné, alors qu'une exploration partielle de l'arbre est généralement
suffisante : lors de l'exploration, il n'est pas nécessaire d'examiner les sous-arbres qui
conduisent à des configurations dont la valeur ne contribuera sûrement pas au calcul du gain à
la racine de l'arbre. L'élagage α-β nous permet de réaliser ceci.

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) Principe de l’algorithme Elagage AlphaBeta

L'exemple ci-dessous explique le principe de l’algorithme Elagage AlphaBeta. On suppose


que les valeurs retournées par Minmax sont des entiers appartenant à l'intervalle [-100, +100].

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.

2. Si un nœud maximisant n ( resp. minimisant n) a une valeur provisoire v1 et un fils de


valeur définitive v2, donner à n la valeur provisoire max(v1, v2) (resp. min(v1, v2)).

3. Si p est un nœud minimisant de père q maximisant avec des valeurs provisoires


respectives v1 et v2 avec v1 ≤ v2, alors ignorer toute la descendance encore inexplorée de p
(coupe de type Alpha). Une coupe de type Bêta est définie de manière analogue dans le cas
où p est maximisant et q minimisant et v1 ≥ v2.

Exemple :

Soit l’arbre de recherche suivant, où on applique Minmax avec le principe de l ’élagage


alpha-bêta

Scénario:

Nœud visité en post-ordre : D avec valeur définitive 2

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

Nœud visité E avec valeur définitive 1

R1 : V(C) = 2 définitive

R2 : V(B) = 2 provisoire

Nœud visité G de valeur 6

R2 : V(F) = 6

R3 : Coupe Bêta sur la branche H

R2 : V(A) = 2 provisoire

Nœud visité K de valeur 8

R2 : V(J) = 8 provisoire

Nœud visité L de valeur 3

R1 : V(j) = 8 définitive

R2 : V(I) = 8 provisoire

Nœud visité N de valeur 5

R2 : V(M) = 5 provisoire

Nœud visité O de valeur 2

R1 : V(M) = 5 définitive

R1 : V(I) = 5 définitive

R2 : V(A) = 5 provisoire

(Max de 2 et 5)

Nœud visité R de valeur 3

R2 : V(O) = 3

Nœud visité S de valeur 4

R1 : V(Q) = 4

R2 : V(P) = 4 provisoire

R3 : Coupe Alpha sur branche TUV

Dr Hemam Sofiane 11

Vous aimerez peut-être aussi