Rush Hour

Mémoire de fin d'études 2004-2005 de Samuel Hiard


Valid HTML 4.01 Transitional English Version English version

Présentation du jeu

Le Rush Hour est un jeu de réflexion solitaire où l'aire de jeu a une taille de 6 cases sur 6.
On peut y placer, au maximum 12 voitures, qui occupent 2 cases adjacentes, et 4 camions, qui occupent 3 cases adjacentes et formant une ligne droite. Une voiture se distingue des autres: la voiture rouge. Elle doit obligatoirement se situer sur l'aire de jeu, car le but de ce jeu est de faire sortir la voiture rouge en n'effectuant que des déplacements légaux sur les véhicules, sachant qu'un déplacement légal est un déplacement qui fait avancer ou reculer le véhicule sur l'axe dans lequel il a été placé.


Objectif de mon travail de fin d'études

L'objectif de mon travail de fin d'études a été, dans un premier temps, de définir la notion de difficulté pour une configuration du Rush Hour et, dans un second temps, de concevoir un logiciel permettant de trouver une configuration difficile à résoudre par un joueur humain ou, de façon optimale, la configuration la plus difficile possible pour ce jeu.


Méthode de résolution

Ce problème n'est pas évident à résoudre, même si de premier abord cela semble le cas. N'oubliez pas que le jeu d'échecs ne comporte que 8 cases sur 8 et que, pourtant, il a fallu des années avant d'obtenir un logiciel qui a battu le plus grand maître des échecs. Fort heureusement, même si le problème est de taille, il n'est pas aussi difficile à résoudre que celui de la conception de Deep Blue.

Un programmeur débutant obtient assez rapidement une version correcte du programme, dans le sens où, si on laisse le programme s'exécuter assez longtemps, il finira par trouver la solution. Evidemment, ce temps approchera fort probablement de la dizaine d'années. La plus grande partie de mon travail a été d'optimiser le processus, pour finalement obtenir une version qui donne un résultat en approximativement 2 semaines, ce qui est long, mais c'est un prix que j'ai accepté de payer.

Le problème est qu'il existe approximativement 36 milliards de configurations fournissant une solution. Calculer et parcourir ces milliards de configurations ne pose (plus ou moins) pas trop de problèmes, mais le plus gros problème est de les stocker en mémoire. Considérant qu'il faut environ 16 octets pour conserver l'information d'une configuration, cela signifie qu'il faut disposer d'une mémoire d'environ 500 Giga-octets. Grâce à mon étude poussée du problème, j'ai pu réduire cette exigence à 2 Giga-octets, ce qui n'est pas négligeable. Au total, seulement 300 millions de configurations ont été stockées en mémoire (et sur disque).


Téléchargements

Mémoire: Mon mémoire, en format doc (pas de pdf, désolé)
Résumé: Un résumé, en 20 lignes, de mon travail de fin d'études (toujours pas de pdf)
Code source d'Analyser: Le code source de la partie "analyse des configurations"
Code source de CombMaker: Le code source de la partie "génération des configurations"

ATTENTION: Je décline toute responsablilité pour les dégats logiciels ou matériels que pourrait générer l'exécution de ce programme. Ce programme utilise des chemins de répertoire spécifiés explicitement dans le code source. N'exécutez ce programme que si vous êtes SURS ET CERTAINS qu'il ne pourra pas endommager votre système ou vos données de quelque façon que ce soit.

Retour à ma page personnelle

Dernière modification: 19 avril 2011
Responsable: Samuel HIARD
Mail: S.Hiard@ulg.ac.be