Février 2015
Rapport de projet
Jérémy Schneiter
Grégori Tirsatine
Projet M2 Informatique tutoré par : M. Julien Bernard
2
Table des matières
Introduction 5
1 Présentation 6
1.1 Règles du Scrabble duplicate 6
1.2 Problèmatique 6
1.3 Existants et choix du langage 7
1.4 Modélisation du programme 7
2 Compression du dictionnaire 8
2.1 Structures basées sur les anagrammes 8
2.1.1. Anagramme version 1 : clés entières 8
2.1.2. Anagramme version 2 : clé string 9
2.2 Structures basées sur les Abres/Graphes 12
2.2.1. Dictionnaire sous forme d'Arbre 12
2.2.2. Première amélioration : Trie 13
2.2.3. Deuxième amélioration : Dawg 14
2.2.4. Une autre structure : le Gaddag 17
2.3 Comparatif 18
3 Recherche et placement des mots 19
3.1 Algorithme brute force 19
3.2 Algorithme de Jacobson et Appel 20
3.2.1. Principe de l'algorithme 20
3.2.2. Description de l'algorithme 23
3.2.3. Preuve informelle 25
4 Bilan 27
4.1 Travaux supplémentaires 27
4.1.1. Interface graphique 27
4.1.2. Chargement d'une partie 29
4.2 Méthodes de travail 29
4.3 Bilan pédagogique 29
Conclusion 30
Bibliographie 31
3
Tables des figures
Fig 1.1 Tableau comparatif des critères de choix de langage 7
Fig 1.2 Structure générale du programme 7
Fig 2.1 Génération du dictionnaire d'anagrammes 9
Fig 2.2 Algorithme de recherche des mots, structure Anagrammes 10
Fig 2.3 Algorithme de permutations 11
Fig 2.4 Dictionnaire sous forme d'arbre 12
Fig 2.5 Dictionnaire sous forme de trie 13
Fig 2.6 Algorithme d'insertion d'un mot dans un trie 14
Fig 2.7 Dictionnaire sous forme de dawg 14
Fig 2.8 Algorithme de fusion des nœuds 16
Fig 2.9 Tableau comparatif des structures 18
Fig 3.1 Algorithme de placement des mots 23
Fig 3.2 Algorithme de placement des mots (extension) 23
Fig 4.1 Interface graphique 28
Fig 4.2 Interface console 28
4
Introduction
Dans la version traditionnelle du jeu de Scrabble, une certaine part est laissée à la chance,
chaque joueur ayant des lettres différentes et jouant sur une configuration de grille changeant à
chaque tour de jeu.
En 1971, un avocat bruxellois nommé Hippolyte Wouters invente la formule duplicate, censée
éliminer le facteur chance. Chaque joueur jouant alors avec les mêmes lettres, et la même
configuration de plateau.
Nous présentons dans ce document la réalisation d'un programme capable de trouver les meilleures
combinaisons permettant à chaque tour d'effectuer le score optimal.
La problèmatique se situe principalement dans les stratégies élaborées pour permettre une recherche
de mots à partir d'une séquence de lettres, et trouver le meilleur emplacement. Ceci doit être réalisé
en un temps qui permet à une partie de se dérouler correctement.
Nous présenterons dans un premier temps les règles nécessaires à la compréhension du duplicate
ainsi que les différents travaux de recherche étudiés pour la conception du programme.
Après avoir explicité la problèmatique liée au développement d'un solveur, nous aborderons les
différents choix de conception mis en place au cours de ce projet.
Nous discuterons notamment des structures choisies pour représenter le dictionnaire afin de
permettre une recherche rapide de formation de mots à partir d'une séquence de lettres, puis nous
traiterons de manière détaillée la stratégie de recherche et de placement optimal des mots sur un
plateau donné.
5
1 / 31 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !