- Il n’existe aucune position permettant plus de coups que la position d’échecs à 218 coups publiée en 1964 par Nenad Petrović
- Comme il est irréaliste d’explorer toutes les positions, la limite a été démontrée grâce à des techniques d’optimisation mathématique et de modélisation informatique
- La suppression des pièces inutiles, l’autorisation d’un placement partiel des pièces et la simplification du roque ont permis de réduire efficacement l’espace de recherche
- Au final, l’outil d’optimisation Gurobi a confirmé que 218 coups constitue le maximum, tout en vérifiant aussi d’autres records comme 144 coups (sans promotions)
- Cette recherche permet aux développeurs de moteurs d’échecs et d’outils de compression de lever l’incertitude autour de la limite maximale du nombre de coups
Introduction : la controverse autour de la position d’échecs à 218 coups
Depuis que le grand maître de composition échiquéenne Nenad Petrović a publié en 1964 une position à 218 coups, les tentatives pour battre ce record se sont multipliées. L’auteur, en tant qu’informaticien, a voulu clore définitivement la question en analysant les positions au moyen de l’informatique. Il existe environ 4,8 × 10^44 positions d’échecs atteignables, mais une exploration d’une telle ampleur est impossible en pratique.
L’introduction de l’optimisation mathématique
Réduction des pièces et combinaisons inutiles
- Les cas où des pièces noires supplémentaires augmentent réellement le nombre de coups sont limités
- par exemple lorsqu’elles peuvent être capturées par un pion blanc, ou lorsqu’elles permettent d’éviter une situation d’échec sur le roi adverse
- La plupart des pièces noires peuvent être retirées sans affecter le nombre maximal de coups
- Tant que le nombre de pièces autorisé le permet, il est possible de remplacer les pièces noires par des pièces plus faibles ou d’ajuster leur placement sous certaines contraintes (comme les clouages)
- Pour les pièces blanches, la situation est inverse : les remplacer toutes par des pièces fortes comme des dames peut produire une position illégale, ce qui impose des ajustements plus fins
Situations d’échec et limites sur le nombre de coups
- Une position où le roi noir est en échec n’est pas légale, il n’est donc pas nécessaire de l’examiner
- Lorsque le roi blanc est en échec, ses mouvements sont fortement limités (120 coups au maximum), ce qui rend impossible d’atteindre 218 coups
- Il est donc possible de restreindre la recherche aux seules positions sans échec
Placement partiel des pièces et modélisation mathématique
Pour réduire la complexité combinatoire, l’étude adopte un modèle assoupli avec placement partiel (fractional) des pièces, mouvements partiels et certaines règles d’échecs relâchées.
- Par exemple, une pièce peut être à 27,3 % sur e4 et à 72,7 % sur une autre case
- Cette approche a été implémentée sous forme de programmation linéaire en nombres entiers (ILP, Integer Linear Programming) avec des outils d’optimisation modernes comme Gurobi
- Au départ, les limites de mémoire et de temps ont posé problème (épuisement mémoire après environ 55 000 secondes)
- Pour simplifier davantage l’espace de recherche, des mesures supplémentaires ont été appliquées : simplification du roque, ignorance des échecs, ignorance des clouages, simplification des conditions de prise en passant, etc.
Optimisation et conclusion
Au final, le modèle a été amélioré, notamment par l’introduction de contraintes auxiliaires bloquant l’exploration de combinaisons inutiles, puis l’optimisation a été menée à son terme avec Gurobi.
- La borne supérieure a été progressivement resserrée de 305 coups à 271,67 coups, puis à 218 coups
- Il a été confirmé que seules 12 positions représentatives permettant 218 coups sont atteignables
- Il a été démontré que ces positions sont légales et atteignables sans difficulté au moyen de proof games
En outre, l’étude a aussi vérifié un maximum de 144 coups sans promotion, un maximum de 288 coups dans des positions illégales, ainsi qu’un record de 271 coups dans des positions légales mais inatteignables.
Résultats et portée
- Grâce à ces résultats, les développeurs de moteurs d’échecs et les chercheurs en algorithmes de compression peuvent être certains qu’une limite de 256 coups suffit pour la conception mémoire et d’autres aspects techniques
- Il est désormais démontré mathématiquement qu’aucune position atteignable par une suite légale de coups ne permet plus de 218 coups
Résumé de la FAQ
- Une partie d’échecs peut durer plus de 218 coups, mais cette étude traite du nombre maximal de choix possibles à un tour donné
- Si certaines positions semblent inatteignables, il est indiqué qu’il peut exister plusieurs chemins, par exemple lorsque le coup précédent se termine par une capture
- La méthode applique une technique d’oracle mathématique capable d’éliminer rapidement les combinaisons absolument impossibles dans un espace combinatoire gigantesque
- Le code utilisé ainsi que la validité mathématique des preuves produites sont aussi publiés, afin de garantir la fiabilité des résultats
Travaux futurs et pistes de recherche supplémentaires
Cette technique pourrait être appliquée à divers autres problèmes échiquéens, comme le plus grand nombre de captures, le plus grand nombre de pat, le plus grand nombre d’échecs, le plus grand nombre de mats, ou encore le plus grand nombre de mats en 2 coups. Dans certains cas, des algorithmes d’optimisation créatifs distincts pourraient toutefois être nécessaires.
Conclusion
- 218 coups constitue le nombre officiel maximal de coups possibles en un tour dans une position d’échecs
- D’un point de vue pratique, les logiciels d’échecs et les chercheurs peuvent concevoir leurs structures autour de 218 (ou 256)
- Le code associé et les résultats de l’optimisation sont publiés sur GitHub
Référence
- Liens vers la position à 218 coups de Nenad Petrović, les proof games et positions comme celle de Jenő Bán à 144 coups (sans promotion)
- Explications détaillées et code disponibles dans le dépôt GitHub
1 commentaires
Commentaires Hacker News
Le niveau de jeu sur des variantes comme le 960 ou le Crazyhouse y est bien supérieur à celui de Chess.com.
C’est littéralement absurdement bien. Si vous le pouvez, je recommande de faire un don.
Ce qui est intéressant, c’est que les solveurs MILP prennent déjà en charge ce type de traitement. Le terme technique est row generation, qu’on emploie généralement quand on écrit le problème sous forme matricielle, avec les lignes comme contraintes et les colonnes comme variables.
Ajouter de nouvelles lignes de façon dynamique revient à n’introduire des contraintes que lorsqu’elles sont violées.
Cette approche est surtout utilisée pour résoudre le problème du voyageur de commerce (Traveling Salesman Problem).
(À noter que Wikipédia a un article sur Column generation, mais pas sur le row generation.)
Le fait d’assouplir ou d’omettre certaines règles des échecs a aussi eu un effet sur le choix des variables. Avant d’entrer dans la modélisation mathématique, j’ai essayé des choses comme les lazy constraints, mais sans gain de performance significatif. Par exemple, le simple fait de ne pas tenir compte de l’éventualité que le roi blanc soit en échec a permis de nombreuses simplifications.
(En supposant, pour la discussion, que Gurobi n’a pas de bug et qu’il n’y en a pas non plus dans la définition du problème ni dans l’implémentation de l’auteur.)
Je me demande si Gurobi pourrait être coincé dans un optimum local, ou s’il a réellement prouvé qu’il s’agit de l’optimum global.
Si Gurobi et mon code fonctionnent comme prévu, et si je n’ai commis aucune erreur logique dans la simplification du modèle d’échecs, alors mon résultat prouve bien que « parmi les positions d’échecs atteignables depuis la position initiale par une suite légale de coups, le nombre maximal de coups légaux possibles a pour borne supérieure et inférieure 218 ». Autrement dit, Gurobi a démontré sur l’ensemble de l’espace de recherche qu’« il n’existe rien de meilleur ».
Du point de vue du calcul, l’espace total du problème est plus important, parce qu’il faut tous les « calculer » avant même de déterminer s’ils sont légaux ou non. Il n’existe pas de méthode simple pour itérer uniquement sur les positions légales.
un proche m’a signalé que mon article était discuté ici.
Désolé d’avoir choisi un titre peu clair ; j’espère qu’il est maintenant plus clair. Merci pour les retours et pour les mots chaleureux.
Si vous avez des questions sur des preuves de faits similaires aux échecs, je peux aussi y répondre ^^
Merci
Tobi
Mise à jour : l’article dit qu’il y a environ 8.7x10^45 positions d’échecs atteignables, et https://github.com/lechmazur/ChessCounter utilise ce nombre comme borne supérieure.
(Cela correspond à environ 153 bits.)
log2(4.8x10^44)donne 149 bits.Mais pour décoder efficacement, il faut 153 bits, en prenant le plafond du
log2du nombre recommandé par le projet ChessPositionRanking (8726713169886222032347729969256422370854716254). ChessCounter ne fournit pas de code de décodage efficace.C’est aussi le cas des tours / dames / cavaliers, mais comme ils peuvent avoir été capturés, il faut en tout 65 états pour chacun de ces 5 types de pièces.
Les fous, eux, ne peuvent aller que sur la moitié des cases, donc 33 états chacun.
Les pions peuvent être promus de 4 façons, capturés, et selon le cas avoir environ 20 à 30 positions possibles ; au total, cela fait grosso modo 290 états par pion.
Avec cette méthode, il faut environ 112 bits pour représenter l’état du plateau pour une couleur, soit 224 bits au total pour les deux camps après arrondi.
L’en passant et les restrictions de roque n’exigent pas de bits supplémentaires après arrondi, puisqu’il suffit d’ajouter quelques états à certaines pièces.
C’est probablement la représentation la plus compacte possible pour un encodage de plateau à longueur fixe.
Avec une représentation creuse (sparse), comme les deux rois sont toujours présents, on peut représenter les pièces encore en vie avec un nombre décimal à n chiffres et leurs positions avec
n+2nombres sur 64 bits, plus un peu d’information supplémentaire pour le roque, l’en passant, etc. Si environ la moitié des pièces ont disparu, cela demande en moyenne autour de 180 bits pour représenter l’état du plateau.L’historique des coups demande aussi environ 10 bits par coup (une paire noir/blanc, un ply valant 5 bits), donc on peut remonter à environ 18 coups. C’est un peu plus court que le milieu de la durée moyenne d’une partie d’échecs.
Pour compresser davantage, il faudrait apparemment mettre en œuvre un dictionnaire gigantesque.
Donc si on encode tout l’échiquier en longueur fixe, cela fait
64*4=256bits = 32 octets.Ou bien, avec une représentation à longueur variable ne stockant que les pièces, on utilise 6 bits pour l’index de chacune des 64 cases, soit
nombre_de_pièces*10bits.Par exemple, la position initiale fait
32*10=320bits = 40 octets.La valeur « general » à 5.68e50 est la véritable borne supérieure, avec toutes les promotions possibles autorisées.
Ce pion n’a qu’un seul coup possible (prendre le cavalier à côté). S’il n’était pas là, quatre dames blanches et le cavalier pourraient aller en b2. Mais en réalité, ces coups ne peuvent pas exister, car le roi noir est déjà échec et mat.
Il est tentant de déplacer la dame en e5 ailleurs afin d’éviter un mat immédiat tout en libérant davantage la case b2.
P.-S. : ce pion semble devoir rester en vie à cet endroit pour éviter le pat.
Et si c’était au tour des noirs, il ne pourrait pas non plus bouger, car le roi est cloué par la dame blanche en e5. Sans ce clouage, il pourrait avoir 4 coups possibles. La sous-promotion serait aussi possible.
La position est aux blancs. Même si le pion b2 n’était pas cloué au roi par la dame blanche, le pion noir ne pourrait pas bouger.
Le pion b2 est indispensable pour protéger le roi noir contre l’échec. Sinon, la position elle-même ne serait pas légale.
J’ai vraiment tout vérifié avec beaucoup d’attention, donc vous pouvez être tranquilles : il a été impossible de construire une position dépassant 218 coups pour les blancs. Mais je suis surpris et reconnaissant de voir autant d’intérêt pour mon article, haha ^^
On pourrait croire qu’en remplaçant un des pions noirs par un cavalier blanc on augmenterait le nombre de coups, mais les deux cavaliers sont déjà présents, et tous les pions ont déjà été promus, donc ce n’est pas possible. (Et si l’on changeait les deux pions, il deviendrait impossible pour les noirs d’atteindre cette position au tour précédent.)
Tu as lu l’article en entier ?
Ce n’est pas 271, mais 271.666... :) Ce chiffre provient du modèle où toutes les décisions (0 ou 1) sont relaxées en valeurs continues (0.0 à 1.0 et entre les deux). Autrement dit, on peut supposer qu’une pièce existe à hauteur de 0,23. La possibilité d’un coup peut aussi être traitée comme une probabilité, par exemple 0,843.
Ce genre de « magie noire » permet d’accélérer énormément les calculs et peut produire un nombre de coups supérieur à ce qui est réellement possible.
On s’en sert donc pour éliminer rapidement des sous-espaces partiels potentiellement mauvais. Sans ce type de technique, il serait impossible d’explorer exhaustivement l’espace de recherche complet.
Au passage, je pense que vous vous trompez en croyant que les pions noirs sont dans leur position de départ. En réalité, le pion noir a avancé jusqu’au côté opposé du plateau (dans le camp blanc).