Académique Documents
Professionnel Documents
Culture Documents
1 Introduction
Les jeux que nous considérons ont les caractéristiques suivantes :
− Deux joueurs
− Information complète
− 3 états finaux possibles (Gain de l’un, Gain de l’autre, Nulle)
− Sans mémoire (seule la position présente compte)
− Sans hasard
− Décision tour à tour
Jeu de Nim. On dispose n bâtonnets. Chacun à son tour, chaque joueur décide d’en
prendre 1, 2 ou 3. Celui qui prend le dernier perd.
Jeu de Wythoff. On place une dame sur un échiquier. Chacun à son tour, chaque joueur
la déplace vers le bas/la gauche/la diagonale bas-gauche d’autant de cases qu’il le souhaite.
Le joueur qui amène la dame sur la base dans le coin inférieur gauche gagne.
1
2 Définitions
Définition 2.1 (Bipartition d’un graphe)
Une bipartition d’un graphe G est la donnée d’une partition S = S0 ∪ S1 des sommets, de
sorte que toute arête a ∈ A a l’une de ses extrémités dans S0 et l’autre dans S1 .
Remarque 2.3
En pratique, les graphes considérés seront aussi acycliques. Cette hypothèse sera implicite
dans la suite.
Remarque 2.6
Ainsi, les jeux d’accessibilité sont sans mémoire. L’état final de la partie suffit à en déter-
miner l’issue.
Remarque 2.8
Le joueur Ji décide donc de ce qu’il va jouer s’il se retrouve dans un état de Si∗ . Il peut
sembler plus naturel de définir f sur Si (privé des états terminaux) ; dans ce cas, on choisit
un successeur quelconque aux sommets de Si \ Si∗ .
2
Remarque 2.10
Autrement dit, une stratégie est gagnante (depuis une position s) si le joueur qui la suit
gagne toujours ses parties, quelles que soient les coups joués par son adversaire. On re-
marque que sur un sommet de Si \ Si∗ , Ji peut jouer un coup quelconque.
Remarque 2.12
On pourrait généraliser et considérer des stratégies du joueur Ji depuis une position s, lui
assurant au moins un Match Nul.
(0, 2), (0, 3), (0, 4) 7→ (1, 1) et (0, 6), (0, 7), (0, 8) 7→ (1, 5)
et de même pour J1 . Les positions (0, 2), (0, 3), (0, 4), (0, 6), (0, 7), (0, 8) et (1, 1), (1, 5) sont
les positions gagnantes pour J0 .
Notation 3.2
Si X ⊂ S, on définit
Remarque 3.3
Ainsi, Ai (X) ∩ Si est l’ensemble des états contrôlés par le joueur Ji , pour lesquels il peut
décider d’aller dans X ; Ai (x) ∩ S1−i est l’ensemble des états contrôlés par l’adversaire du
joueur Ji , à partir desquels son adversaire est forcé d’aller dans X.
3
Notation 3.4
On définit la suite Attrk (Ji ) k∈N par Attr0 (Ji ) = Fi et
C’est une suite croissante (pour l’inclusion) dans l’ensemble ordonné fini P(S) ; elle est
donc stationnaire. On note Wi son ensemble limite.
Théorème 3.5
L’ensemble limite Wi est l’ensemble des positions gagnantes pour le joueur Ji .
Démonstration. (Idée) Pour montrer que les états de Wi sont des positions gagnantes pour
Ji , il faut définir la stratégie de Ji . On définit Si∗ comme Wi ∩ Si \ Fi . Par définition, un état
s ∈ Si∗ est dans un certain Attrk (Ji ) (avec k ≥ 1) et il existe t ∈ Attrk−1 (Ji ) tel que (s, t)
est une arête. La fonction fi de stratégie est définie en associant un tel t à s. On montre
alors par récurrence sur k que tout état dans Attrk (Ji ) est une position gagnante pour Ji ,
pour la stratégie qu’on a décrite.
Réciproquement, les longueurs des parties démarrant en un sommet s sont majorées (dans
l’hypothèse d’acyclicité) par un certain entier N (s). On raisonne ensuite par récurrence sur
k, pour montrer que si s est une position gagnante pour le joueur Ji , telle que N (s) ≤ k,
alors s ∈ Wi .
Exercice 3.6
On joue au jeu de Wythoff sur un échiquier 8 × 8.
Représenter les positions perdantes pour le joueur qui doit jouer.
Remarque 3.7
Comme les jeux de Nim, le jeu de Wythoff est impartial : il existe une copie de chaque
position , l’une contrôlée par le joueur J0 et l’autre par le joueur J1 . Dans ces jeux, il peut
être intéressant de fusionner ces deux copies et de parler d’état gagnant/perdant pour le
joueur qui va jouer.
4 Algorithme du min-max
Si l’arène du jeu a n états, le calcul de Wi par l’algorithme précédent fonctionne en
complexité O(n3 ) ; il devient vite impossible de procéder de façon exacte. Pour pallier ce
problème, on utilise l’algorithme du min-max. Le principe est le suivant :
− En utilisant une heuristique, on évalue chaque état : l’évaluation sera d’autant plus
grande qu’on pense que la position est gagnante pour le joueur J0 (par convention).
− En parcourant le jeu jusqu’à une certaine profondeur k (fixée), on réévalue la position
en faisant remonter les évaluations des positions futures.
4
Remarques 4.1
− L’évaluation des états finaux est exacte. On leur associe la valeur +∞ si l’état est
gagnant pour J0 , −∞ s’il est gagnant pour J1 et 0 si la partie est nulle.
− Avec une profondeur infinie, l’algorithme évalue chaque position à ±∞ ou 0 ; cela
revient à calculer les attracteurs W0 et W1 .
Exemple 4.2
On considère la situation suivante.
Les carrés gris sont les sommets contrôlés par J0 ; les disques bleus ceux contrôlés par
J1 . Les deux joueurs ont 3 coups disponibles ; on réévalue les positions à une profondeur
2, les évaluations des Ck étant déterminées par l’heuristique.
Pour choisir son coup, A doit prendre le maximum entre les évaluations de B1 , B2 et B3 .
Or, en B1 , le joueur 1 va jouer le coup qui minimise l’évaluation (ici C3 ) ; en B2 , il joue
C4 ; en B3 , il joue C8 . Ainsi, B1 , B2 et B3 sont réévalués à 3, 5 et 2 ; et donc A est réévalué
à 5.
Implémentation. On utilise deux fonctions, qui s’appellent l’une l’autre de façon récur-
sive. On note h l’heuristique utilisée.
La fonction minimax sera utilisée pour les états contrôlés par J1 (on prend le minimum
des sucesseurs) ; maximum pour les états contrôlés par J0 .
d e f minimax ( s , k ) :
i f k == 0 or s u c c e s s e u r s [ s ] = [ ] :
return h( s )
min = f l o a t ( " i n f " )
f o r t in s u c c e s s e u r s ( s ) :
m = maximin ( t , k−1)
i f m < min :
min = m
r e t u r n min
5
d e f maximin ( s , k ) :
i f k == 0 or s u c c e s s e u r s [ s ] = [ ] :
return h( s )
max = −f l o a t ( " i n f " )
f o r t in s u c c e s s e u r s ( s ) :
M = maximin ( t , k−1)
i f M > max:
max = M
r e t u r n max
Remarque 4.3
On peut optimiser ces calculs en remarquant que certaines branches n’ont pas à être cal-
culées. Considérons la situation suivante :