8.4 KiB
Authors
- Alexis Leboeuf
- Minh Tuan Vu
- Thibaut Rochas
- Amaël Kesteman
Rapport au format PDF
Vous trouverez également le rapport au format PDF dans le projet.
Introduction
Depuis la création du jeu d'échecs, celui-ci a toujours été considéré comme un symbole d'intelligence, où l'on considère les meilleurs joueurs de ce jeu comme parmi les personnes les plus intelligentes de notre monde.
Il fut donc logique pour les informaticiens, au fil du temps, de vouloir développer différents programmes d'échecs afin de montrer la supériorité de la machine et de ceux-ci. Un des premiers exemples de cette volonté est le programme Turochamp, développé par Alan Turing et David Gawen Champernowne.
Turochamp a été conçu avant même la création des premiers ordinateurs, ce qui montre l'intérêt des échecs pour pouvoir comparer l'intelligence de la machine face à celle de l'homme.
L'ordinateur a pu battre pour la première fois l'homme lors du fameux match Deep Blue contre Garry Kasparov lors de la revanche de 1997 (source INA, Wikipédia) avec un score de 3,5 à 2,5 (3 égalités, 2 victoires et 1 défaite pour Deep Blue).
Lors de ce match, Deep Blue a utilisé pour la première fois « l'ancêtre » des Tablebases, inspiré d'une base de données à 5 pièces créée en 1980 par Ken Thompson. Depuis, différentes Tablebases ont été développées et vont jusqu'à 7 pièces sur l'échiquier ; cependant, nous allons nous concentrer sur une Tablebase 3–5 pièces pour des raisons de taille de la base. La Tablebase 3–5 contient donc toutes les combinaisons possibles de coups jusqu'à une fin de partie, en partant de 3 à 5 pièces sur le plateau.
Actuellement, les ordinateurs ont largement dépassé les joueurs humains et les Tablebases en sont une raison principale, car elles permettent de connaître le résultat des finales, peu importe les coups joués par les deux joueurs.
Pour étudier ces bases de données, nous allons nous concentrer sur Redis (Wikipédia), la base de données key/value (source) la plus utilisée.
Dans un premier temps, nous présenterons Redis, son fonctionnement et son histoire. Puis, dans un deuxième temps, nous expliquerons le fonctionnement du stockage de la position : comment transformer la position du plateau d'échecs en une simple clé. Enfin, nous analyserons les performances d’accès à l’aide de Redis et verrons si le nombre de pièces a une incidence sur ces performances.
Redis
Redis est une structure de données NoSQL(NoSQL) clés/valeurs open source, elle a été lancée en 2009 par Salvatore Sanfilippo, son nom signifie Remote Dictionary Server. Sa caractéristique principale est sa rapidité, car les données sont stockées et manipulées principalement en mémoire vive (RAM), contrairement aux systèmes classiques reposant sur le disque dur. Cette architecture permet des temps d'accès très faibles, ce qui la rend particulièrement adaptée comme cache applicatif.
Dans le cadre de notre étude, Redis est utilisé pour stocker les positions d'échecs dans les Tablebases. Chaque position est représentée par une clé unique dérivée par la notation FEN (Forsyth-Edwards Notation) et les informations associées comme les résultats WDL (Win/Draw/Loss) ou DTZ (Distance to Zeroing) sont stockées en tant que valeurs.
Cette approche présente plusieurs avantages. Le chargement et l’interrogation des positions pré-calculées sont extrêmement rapides, et ce, même lorsque les requêtes portent sur des millions d’entrées. Cela permet d’exploiter les Tablebases comme un "oracle" quasi instantané. Cependant, ces performances reposent sur un coût important : comme Redis stocke l'entièreté de ses données en mémoire vive, la consommation de celle-ci augmente directement avec le nombre de positions chargées. Pour des Tablebases à 3, 4 ou 5 pièces, la taille reste raisonnable, mais au fur et à mesure que le nombre de pièces augmente, le volume de données devient très important. Dans ce cas, l’utilisation de Redis peut atteindre des dizaines ou centaines de gigaoctets de mémoire, posant un compromis entre performance et ressources matérielles disponibles.
Ainsi, Redis offre une solution particulièrement efficace pour manipuler des positions d’échecs pré-calculées, mais nécessite une maîtrise fine du stockage mémoire et de la structure des données utilisées, surtout lorsque la taille des Tablebases augmente.
Stockage
Afin de stocker efficacement les positions d’échecs, qui sont extrêmement nombreuses, nous utilisons la notation FEN (Forsyth–Edwards Notation). Celle-ci encode de manière compacte l’ensemble de l’état d’un échiquier dans une chaîne de caractères unique.
Les bases de données de type Syzygy (site officiel, GitHub) utilisent cette FEN comme point de départ : elle est ensuite hachée ou convertie en un index interne afin d’accéder rapidement aux informations de Tablebase.
Dans notre étude, nous utilisons Redis, qui peut stocker cette FEN directement comme clé dans un schéma key/value.
Prenons pour exemple la FEN suivante :
4k3/8/3n4/8/7p/1P6/4B3/4K3 b - - 0 1

Chaque élément de la FEN représente une ligne du plateau. Nous allons pouvoir la décomposer :
4k3pour la 8e ligne indique 4 cases vides, puis le roi noir (k), puis 3 cases vides.- Les lettres minuscules (
k,q,r,b,n,p) représentent les pièces noires. - Les lettres majuscules (
K,Q,R,B,N,P) représentent les pièces blanches. - La lettre
bindique que c’est au tour des Noirs de jouer. - Les symboles qui suivent concernent les règles particulières du jeu : roque, prise en passant, compteur de coups et numéro du tour.
Voici les lettres correspondant à chaque pièce :
K = roi, N = cavalier, B = fou, R = Tour, Q = Reine, P = pion
Par la suite, il y a une lettre b ou w indiquant le jour qui joue le prochain coup. Enfin, il y a 4 caractères par la suite concernant les règles d'échecs particulières qui ne seront pas détaillés ici. Voici un second exemple représentant la position de départ d'une partie d'échecs : rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w - - 0 1
Utilisation comme clé de stockage
Une fois la position encodée en FEN, on peut utiliser directement comme clé unique dans une base de données. Dans le cas de Syzygy, la chaîne FEN est transformée en un index interne ou hachée pour pointer vers les données de Tablebase. Dans Redis, cette même FEN peut servir telle quelle comme clé (string) d’où l’on peut associer des valeurs comme WDL ou DTZ. Cette approche garantit qu'une position donnée correspond toujours à une clé unique et reproductible, ce qui permet un accès direct à l’information associée, sans ambiguïté.
Références
-
1997 : l'ordinateur bat Garry Kasparov, un tournant dans l'histoire des échecs
https://www.ina.fr/ina-eclaire-actu/1997-l-ordinateur-deep-blue-bat-garry-kasparov-un-tournant-dans-l-histoire-des-echecs -
Matchs Deep Blue contre Kasparov — Wikipédia
https://fr.wikipedia.org/wiki/Matchs_Deep_Blue_contre_Kasparov -
Redis — Wikipédia (EN)
https://en.wikipedia.org/wiki/Redis -
Key/value — Wikipédia (EN)
https://en.wikipedia.org/wiki/Key%E2%80%93value_database -
NoSQL — Wikipédia
https://fr.wikipedia.org/wiki/NoSQL -
Syzygy Endgame Tablebases — Ronald de Man
https://syzygy-tables.info/ -
Syzygy Endgame Tablebases — GitHub Repository
https://github.com/syzygy1/tb -
What is Redis? — IBM
https://www.ibm.com/think/topics/redis -
Eight-piece tablebases — Peter Wong
https://www.chess.com/blog/Rocky64/eight-piece-tablebases-a-progress-update-and-some-results -
Taux de transfert, bande passante et latences DDR4 — Jean-Pierre Novak
https://www.eatyourbytes.com/fr/debit-vitesse-latences-et-voltage-des-memoires-ram-ddr4 -
Microsoft Azure, partenaire de la FFE
https://www.echecs.asso.fr/Actu.aspx?Ref=14252