Je suis en train d'utiliser Java pour résoudre le problème du Puzzle à 8 cases en utilisant DFS.
Voici ce à quoi je suis arrivé :
public static boolean found = false;
public void solveDepthFirst(EightPuzzle currentState, int lastMove){
if(currentState.goal()){
System.out.println(currentState);
found = true;//pour arrêter DFS lorsqu'une solution est trouvée (même si ce n'est pas optimal)
return;
}
for(int i=0;i
`
!e.equals(currentState) vérifie si le déplacement est possible. (si currentState.move(i) est hors limites move() renvoie le même état)
i != lastMove assure que si lors de votre dernier déplacement vous avez bougé vers la droite vous ne bougez pas vers la gauche maintenant (car cela n'a aucun sens)
visitedNodes est un HashSet de nœuds visités.
Cela épuise l'espace de la pile. Lorsque j'utilise -xss10m pour augmenter l'espace de la pile de 128k à 10m, l'algorithme fonctionne bien. Cependant, je suis sûr qu'il y a beaucoup d'autres optimisations qui peuvent être faites.
tout conseil serait grandement apprécié.
`