Améliorations successives réalisées sur la première version
développée en Visual Basic
-
Suppression des
indices lignes et colonnes. Dans la première version, les
destinations possibles d'une cases étaient calculées dans la boucle de
recherche. Il est nettement plus rapide d'initialiser,
avant le début de la recherche, la liste des destinations possibles de
chacune des cases, plutôt que de calculer à chaque itération la case
destination (déplacement d'un saut de cavalier) puis de vérifier que cette
case appartient bien à l'échiquier (ligne et colonne compris entre 0 et
7). De ce fait les indices lignes et colonnes ne sont plus nécessaires. Ils
sont cependant conservés.
-
Sauvegarde et restauration des
solutions dans des fichiers. Cette fonctionnalité avait un sens lorsque
l'algorithme n'était pas optimum, le temps de recherche étant alors
très élevé. La solution trouvée est mémorisée dans un fichier.
-
Avance
aléatoire. Les cases
destination sont essayées dans un ordre "vaguement aléatoire". Cette option permet de trouver une solution plus rapidement
que l'algorithme de base mais a peu
d'intérêt en comparaison des améliorations 4 et 5.
-
Détection précoce des
blocages. A chaque avancée, toutes les cases sont vérifiées pour
détecter si chacune d'elle est encore atteignable. Si ce n'est pas le cas,
un blocage est détecté et le cavalier recule. cette option permet de
réduire le nombre de coups nécessaires pour trouver une solution.
-
Tri des destinations possibles
par ordre du nombre d'origines possibles. Les cases les plus
excentrées qui sont atteignables par peu de cases (moins de 8) sont essayées
avant les autres cases. Cette programmation donne des résultats
spectaculaires. Pour la plupart des cases, une solution est trouvée en
quelques secondes. La sauvegarde des solutions dans un fichier perd alors
beaucoup d'intérêt.
|