← Tous les textes du Grand Oral
MathsNSI
Deux joueurs, une grille de trois cases sur trois, des croix et des ronds : le tic-tac-toe, qu'on appelle aussi morpion, est sans doute le jeu le plus simple qui soit. Il est pourtant assez riche pour servir de laboratoire : on peut y dénombrer toutes les parties, démontrer que le jeu est nul quand on joue bien, programmer un ordinateur qui ne perd jamais, et même construire une « machine qui apprend » avec des boîtes d'allumettes.
Ce texte s'appuie sur le dénombrement de terminale (principe multiplicatif, permutations, $k$-uplets d'éléments distincts, combinaisons), sur les probabilités et sur l'algorithmique. Chaque résultat est d'abord obtenu à la main sur un petit cas. Il rassemble des connaissances ; à chacun d'y choisir une direction et d'y construire sa question.
Les règles tiennent en une phrase : chacun à son tour, le premier joueur (les croix, notées X) puis le second (les ronds, notés O) occupent une case libre ; le premier qui aligne trois de ses symboles, en ligne, en colonne ou en diagonale, a gagné. Si la grille est pleine sans alignement, la partie est nulle.
Il y a exactement huit alignements : trois lignes, trois colonnes et deux diagonales. On numérote les cases de $0$ à $8$, ligne par ligne ; c'est la numérotation utilisée dans les programmes de ce texte.
Des jeux d'alignement sur une petite grille existent depuis l'Antiquité, mais leur histoire précise est mal connue : on rapproche souvent le tic-tac-toe d'un jeu romain de pions, sans certitude. Le jeu tient en revanche une place précise dans l'histoire de l'informatique : en 1952, à Cambridge, Alexander Douglas programme OXO sur l'ordinateur EDSAC, l'un des tout premiers jeux sur ordinateur, avec un écran de $35 \times 16$ points. L'ordinateur y joue sans jamais perdre : on verra pourquoi c'est possible.
Pour le premier coup, X a $9$ cases possibles. Pour chacune, O a $8$ cases libres. D'après le principe multiplicatif, il y a donc $9 \times 8 = 72$ façons de jouer les deux premiers coups, puis $9 \times 8 \times 7 = 504$ façons de jouer les trois premiers.
Une suite de $k$ coups, c'est une liste ordonnée de $k$ cases distinctes choisies parmi $9$ : c'est un $k$-uplet d'éléments distincts d'un ensemble à $9$ éléments. Leur nombre est
$$9 \times 8 \times \cdots \times (9-k+1) = \frac{9!}{(9-k)!}.$$Imaginons qu'on joue toujours jusqu'à remplir les neuf cases, même après un alignement. Une partie est alors une façon d'ordonner les neuf cases, c'est-à-dire une permutation de l'ensemble des cases :
$$9! = 9 \times 8 \times \cdots \times 2 \times 1 = 362\,880.$$Ce nombre est un majorant, pas le nombre de parties : une partie s'arrête dès qu'un joueur aligne trois symboles. Beaucoup de permutations décrivent donc la même partie, prolongée de façons différentes après la victoire.
Personne ne peut gagner avant le cinquième coup, puisqu'il faut trois symboles alignés et que X n'en a que trois après le cinquième coup. Comptons les parties qui s'arrêtent au cinquième coup.
Étape 1. Une telle partie est gagnée par X, au coup $5$ : X a alors joué trois fois (coups $1$, $3$ et $5$) et O deux fois (coups $2$ et $4$). Les trois croix forment l'un des $8$ alignements.
Étape 2. On choisit l'alignement : $8$ possibilités.
Étape 3. On choisit l'ordre dans lequel X occupe les trois cases de cet alignement : c'est une permutation de trois cases, soit $3! = 6$ possibilités.
Étape 4. O joue deux coups, dans l'ordre, parmi les $6$ cases hors de l'alignement : c'est un couple de cases distinctes, soit $6 \times 5 = 30$ possibilités.
Étape 5. Toutes ces suites de coups sont de vraies parties : avant le coup $5$, X n'avait que deux croix et O n'en a que deux, donc personne n'avait gagné. D'après le principe multiplicatif, le nombre de parties est
$$8 \times 6 \times 30 = 1\,440.$$Le même raisonnement se complique d'un détail, et ce détail est instructif. O gagne au coup $6$ : ses trois ronds forment un alignement ($8$ choix, puis $3! = 6$ ordres), et X a joué trois coups, dans l'ordre, parmi les $6$ autres cases, soit $6 \times 5 \times 4 = 120$ suites. Mais il faut retirer les cas où les trois croix sont alignées : X aurait alors gagné dès le coup $5$, et la partie se serait arrêtée.
Au total, il y a
$$6 \times (6 \times 108) + 2 \times (6 \times 120)$$ $$= 3\,888 + 1\,440 = 5\,328$$parties gagnées par O au sixième coup.
Pour les coups suivants, les cas à exclure se multiplient, et le calcul à la main devient pénible. On confie alors le travail à un programme. L'idée est récursive : le nombre de parties qui partent d'une position est égal à $1$ si la position est finale (victoire ou grille pleine), et sinon à la somme des nombres de parties qui partent de chacune des positions obtenues en jouant un coup. Le programme mémorise les positions déjà traitées, ce qui évite de refaire le même calcul des milliers de fois.
Le programme trouve $255\,168$ parties : $131\,184$ gagnées par X, $77\,904$ gagnées par O et $46\,080$ nulles. Il confirme les deux valeurs calculées à la main.
| la partie se termine au coup | $5$ | $6$ | $7$ | $8$ | $9$ |
|---|---|---|---|---|---|
| nombre de parties | $1\,440$ | $5\,328$ | $47\,952$ | $72\,576$ | $127\,872$ |
| gagnant | X | O | X | O | X ou nul |
Sur les $127\,872$ parties qui vont jusqu'au neuvième coup, $81\,792$ sont gagnées par X au dernier coup et $46\,080$ sont nulles.
X gagne $131\,184$ parties sur $255\,168$, soit environ $51{,}4\,\%$. Est-ce la probabilité que X gagne si les deux joueurs jouent au hasard ? Non : une partie courte est beaucoup plus probable qu'une partie longue. La partie la plus courte a une probabilité $\dfrac{1}{9 \times 8 \times 7 \times 6 \times 5} = \dfrac{1}{15\,120}$, alors qu'une partie de neuf coups a la probabilité $\dfrac{1}{9!} = \dfrac{1}{362\,880}$.
Si chaque joueur choisit sa case au hasard parmi les cases libres, un calcul exact (par le même genre de programme, avec la formule des probabilités totales) donne : X gagne avec une probabilité d'environ $0{,}585$, O avec $0{,}288$, et la partie est nulle avec $0{,}127$. Les proportions de parties ($51{,}4\,\%$, $30{,}5\,\%$, $18{,}1\,\%$) sont différentes.
Une position est l'état de la grille, sans tenir compte de l'ordre dans lequel les coups ont été joués. Après $k$ coups, X a joué $\lceil k/2 \rceil$ fois et O a joué $\lfloor k/2 \rfloor$ fois. Pour décrire la position, on choisit les cases de X, puis celles de O parmi les cases restantes : ce sont des combinaisons. Par exemple après $4$ coups :
$$\binom{9}{2} \times \binom{7}{2} = 36 \times 21 = 756 \text{ positions.}$$Le même calcul pour chaque valeur de $k$ donne le tableau suivant.
| $k$ | $0$ | $1$ | $2$ | $3$ | $4$ |
|---|---|---|---|---|---|
| positions | $1$ | $9$ | $72$ | $252$ | $756$ |
| $k$ | $5$ | $6$ | $7$ | $8$ | $9$ |
|---|---|---|---|---|---|
| positions | $1\,260$ | $1\,680$ | $1\,260$ | $630$ | $126$ |
La somme de ces dix nombres vaut $6\,046$.
Ce total compte encore des grilles impossibles, par exemple celles où les deux joueurs ont un alignement, ou celles où le jeu aurait dû s'arrêter plus tôt. Le programme précédent, qui ne parcourt que les positions réellement atteintes, en trouve $5\,478$.
Faire tourner la grille ou la retourner ne change rien au jeu. Les transformations qui laissent le carré en place sont au nombre de huit : l'identité, les rotations d'un quart de tour, d'un demi-tour et de trois quarts de tour, et les quatre symétries axiales (par rapport aux deux médianes et aux deux diagonales). Une même position peut donc être dessinée de huit façons, parfois moins si elle est elle-même symétrique.
Premier coup. Les $9$ cases se rangent en trois familles : le centre (1 case), les coins (4 cases) et les bords (4 cases). Par symétrie, il n'y a que $3$ premiers coups vraiment différents.
Deux premiers coups. On examine chacun des trois premiers coups de X.
Il y a donc $2 + 5 + 5 = 12$ débuts de partie vraiment différents, au lieu de $72$.
Trois premiers coups. Le même travail, plus long, donne $38$ positions différentes. Pour l'ensemble du jeu, en remplaçant chaque position par la plus petite de ses huit images (dans l'ordre alphabétique de son écriture), un programme ramène les $5\,478$ positions à $765$ positions essentiellement différentes. C'est ce genre de réduction qui a rendu possible la machine MENACE, plus bas.
Au tic-tac-toe, il n'y a ni dé ni carte cachée : chaque joueur voit tout, et une partie dure au plus neuf coups. Pour de tels jeux, Ernst Zermelo a démontré en 1913 (à propos des échecs) un résultat remarquable : une seule des trois situations suivantes est vraie. Ou bien le premier joueur a une stratégie qui gagne à coup sûr, ou bien c'est le second, ou bien chacun des deux a une stratégie qui lui assure au moins le nul. On dit que le jeu a une valeur : $+1$, $-1$ ou $0$.
Le principe est un raisonnement « en remontant » : on connaît le résultat des positions finales ; on en déduit celui des positions à un coup de la fin, puis à deux coups, et ainsi de suite jusqu'à la grille vide. C'est exactement ce que fait l'algorithme minimax de la partie suivante.
Avant même de calculer, un raisonnement par l'absurde montre que O ne peut pas avoir de stratégie gagnante. Cet argument, dit de la « stratégie volée », est souvent attribué à John Nash, qui l'a utilisé pour un autre jeu, le Hex (voir le texte sur l'équilibre de Nash).
Étape 1. On remarque d'abord qu'au tic-tac-toe, avoir un symbole de plus sur la grille ne gêne jamais : cela ne peut qu'aider à aligner, et occuper une case de plus empêche l'adversaire de s'en servir.
Étape 2. Supposons, par l'absurde, que O ait une stratégie $S$ qui gagne contre toutes les façons de jouer de X.
Étape 3. X « vole » cette stratégie : il joue un premier coup n'importe où, puis fait comme s'il n'avait pas joué ce coup et qu'il était le second joueur, et applique $S$. Si $S$ lui demande de jouer sur la case qu'il occupe déjà, il joue n'importe quelle autre case libre, qui devient sa nouvelle croix « en trop ».
Étape 4. D'après l'étape 1, la croix en trop ne le gêne jamais. Donc X gagne à coup sûr, quelle que soit la façon de jouer de O.
Étape 5. Les deux joueurs ne peuvent pas gagner tous les deux à coup sûr la même partie : c'est une contradiction. L'hypothèse de l'étape 2 est fausse.
Ce raisonnement prouve que la valeur du jeu vaut $+1$ ou $0$, mais il ne dit pas laquelle, et il ne donne aucune stratégie. Pour trancher, il faut calculer.
On attribue à chaque position finale une valeur : $+1$ si X a gagné, $-1$ si O a gagné, $0$ si la partie est nulle. Quand c'est à X de jouer, il choisit le coup qui donne la valeur maximale ; quand c'est à O, il choisit la valeur minimale. D'où le nom minimax.
Prenons la position ci-dessous, où c'est à X de jouer, avec trois cases libres : $0$, $1$ et $4$.
La valeur de la position est le maximum des trois : $\max(-1\,;\,-1\,;\,+1) = +1$. Une menace double comme celle-ci s'appelle une fourchette ; c'est l'arme principale du jeu.
Le programme suivant applique la même règle depuis la grille vide, en mémorisant les valeurs déjà calculées. Il affiche la valeur du jeu, puis la valeur de chacun des neuf premiers coups possibles de X.
Résultat : la valeur du jeu est $0$. Le tic-tac-toe est un jeu nul : si les deux joueurs jouent bien, personne ne gagne. Les neuf premiers coups valent tous $0$ : aucun premier coup ne perd, mais aucun ne gagne. Le coin est cependant le plus « piégeux » pour un adversaire humain : après X dans un coin, la seule réponse de O qui ne perd pas est le centre ; après X au centre, O doit jouer dans un coin, car toute réponse sur un bord perd.
L'idée de minimax a une portée qui dépasse ce jeu : en 1928, John von Neumann démontre le théorème du minimax pour les jeux à deux joueurs où ce que l'un gagne, l'autre le perd. C'est l'acte de naissance de la théorie des jeux, qui mène ensuite à l'équilibre de Nash et à ses applications en économie.
Le plateau ci-dessous est piloté par le même algorithme. Quand plusieurs coups ont la meilleure valeur, l'ordinateur en tire un au hasard, pour varier les parties. Il ne perd jamais : le mieux que l'on puisse obtenir est le nul. Une seule erreur, et il gagne.
En 1961, le chercheur britannique Donald Michie, qui avait travaillé pendant la guerre avec les décrypteurs de Bletchley Park, veut montrer qu'une machine peut apprendre à jouer sans qu'on lui donne de stratégie. N'ayant pas d'ordinateur à sa disposition, il en construit un avec des boîtes d'allumettes : MENACE, pour Matchbox Educable Noughts And Crosses Engine.
MENACE ne « comprend » rien au jeu. Mais les coups qui mènent à la victoire deviennent plus probables, et ceux qui mènent à la défaite disparaissent peu à peu. Selon le récit de Michie, après quelques centaines de parties, MENACE obtenait le plus souvent le nul contre lui.
Une boîte contient par exemple $3$ perles rouges (case $0$), $1$ verte (case $4$) et $2$ bleues (case $8$). On tire une perle au hasard : chaque perle a la même probabilité, donc la probabilité de jouer la case $4$ est $\dfrac{1}{6}$. Si la case $4$ mène à une victoire, on ajoute $3$ perles vertes : la probabilité devient $\dfrac{4}{9}$. Si au contraire la case $0$ mène à une défaite, on retire une perle rouge, et la probabilité de jouer $0$ passe de $\dfrac{3}{6}$ à $\dfrac{2}{5}$.
Une partie de MENACE est une succession de tirages dans des boîtes différentes : la probabilité d'une partie est le produit des probabilités le long d'un chemin de l'arbre, comme dans un arbre pondéré de terminale.
La figure simule une MENACE qui joue $2\,000$ parties contre un adversaire choisi. Comme chez Michie, les positions symétriques partagent la même boîte ; une simplification : une boîte qui se vide est remplie à nouveau. Par paquets de $50$ parties, on trace la proportion de victoires, de nuls et de défaites de MENACE. Contre un adversaire qui joue au hasard, les victoires augmentent et les défaites diminuent nettement, sans disparaître. Contre l'adversaire parfait (minimax), qui ne perd jamais, MENACE ne peut pas gagner : en quelques centaines de parties, elle apprend à faire nul presque à chaque fois.
MENACE est un ancêtre de l'apprentissage par renforcement, la méthode qui a permis bien plus tard à des programmes d'apprendre le jeu de go en jouant contre eux-mêmes. Pour un autre modèle simple de machine qui apprend, voir le texte sur le neurone artificiel.
Sur une grande grille où il faut aligner cinq symboles (le « morpion » des cahiers à carreaux, appelé gomoku au Japon), le premier joueur a un avantage décisif : sur une grille de $15 \times 15$ et sans règle particulière, Victor Allis a montré par ordinateur, au début des années 1990, qu'il gagne à coup sûr. C'est pour cela que les compétitions ajoutent des règles qui gênent le premier joueur.
Le puissance 4 (une grille de $7$ colonnes et $6$ lignes, les pions tombent au fond) a été résolu en 1988, indépendamment par James Allen et par Victor Allis : le premier joueur gagne, à condition de commencer dans la colonne du milieu. Les dames anglaises ont été résolues en 2007 par l'équipe de Jonathan Schaeffer, après près de vingt ans de calculs : comme le tic-tac-toe, c'est un jeu nul.
En 1950, Claude Shannon, le fondateur de la théorie de l'information, estime le nombre de parties d'échecs. Son raisonnement est un principe multiplicatif approximatif : à chaque coup, un joueur a en moyenne une trentaine de possibilités, donc un coup blanc suivi d'un coup noir offre environ $30 \times 30 \approx 10^3$ possibilités. Une partie typique dure environ $40$ paires de coups, d'où
$$\left(10^3\right)^{40} = 10^{120} \text{ parties environ.}$$C'est un ordre de grandeur, pas un dénombrement exact, mais il suffit à montrer qu'aucun ordinateur ne pourra jamais parcourir toutes les parties comme on l'a fait pour le tic-tac-toe : on estime le nombre d'atomes de l'univers observable à environ $10^{80}$. Les programmes d'échecs utilisent donc minimax sur quelques coups seulement, puis une estimation de la position. Le dénombrement du jeu (grains de blé et suites géométriques, nombre de parties) est développé dans l'animation Échecs et mathématiques.
Au go, on pose des pierres sur les $361$ intersections d'une grille de $19 \times 19$ ; chaque intersection est vide, noire ou blanche. Il y a donc au plus $3^{361}$ positions. Le logarithme décimal donne l'ordre de grandeur :
$$\log\left(3^{361}\right) = 361 \log 3,$$et comme $\log 3 \approx 0{,}477$,
$$361 \log 3 \approx 172{,}2,$$soit $3^{361} \approx 10^{172}$. Toutes ces grilles ne sont pas des positions autorisées : en 2016, John Tromp a calculé qu'il y en a environ $2{,}08 \times 10^{170}$, soit à peu près une sur $80$.
Pour un jeu aussi vaste, minimax seul est impuissant. En mars 2016, le programme AlphaGo de l'entreprise DeepMind bat pourtant le champion Lee Sedol, par quatre parties à une. Il combine des réseaux de neurones, qui estiment les positions et proposent des coups, des simulations de parties au hasard (une méthode de Monte-Carlo, voir le texte sur la méthode de Monte-Carlo) et un apprentissage par renforcement en jouant contre lui-même, dans l'esprit de MENACE.
Ce texte n'est pas un Grand Oral. Il rassemble des connaissances dans lesquelles chacun peut choisir une direction, la creuser et formuler sa propre question. Quelques directions possibles :
Le jury peut interroger sur les chapitres de spécialité mobilisés. Avec ce thème, il est utile de connaître parfaitement : le principe multiplicatif, les $k$-uplets, les $k$-uplets d'éléments distincts, les permutations et la factorielle, les combinaisons et les coefficients binomiaux (et leurs propriétés) ; les probabilités conditionnelles, les arbres pondérés et la formule des probabilités totales ; la fonction logarithme et les ordres de grandeur ; les boucles et les fonctions en Python.
Pour réviser ces chapitres, l'application Maths FlashBac reprend tout le cours de spécialité en cartes.