Я пишу программу, которая решает головоломку из 8 плиток, но я ничего не получаю, я запускаю отладчик и генерирую правильных преемников, одним из которых является желаемое состояние цели, но когда ясравните их, это не говорит, что они так, моя программа просто продолжает цикл и цикл. Кто-нибудь знает, почему это может происходить?
public static void BFSSearch(Node start, Node goal) {
Queue<Node> q = new LinkedList<>();
q.add(start);
while (!q.isEmpty()) {
Node theNode = q.poll();
if (theNode.equals(goal)) {
Stack<Node> path = new Stack<>();
path.push(theNode);
theNode = theNode.getParent();
while (theNode.getParent() != null) {
path.push(theNode);
theNode = theNode.getParent();
}
path.push(theNode);
int stackSize = path.size();
for (int i = 0; i < stackSize; i++) {
theNode = path.pop();
theNode.printState();
}
} else {
ArrayList<Node> successors = theNode.genSuccessors();
for (int i = 0; i < successors.size(); i++) {
Node newNode = new Node(successors.get(i).curr);
if (newNode.equals(goal)){
System.out.println("found");
}
if (!checkRepeats(newNode)) {
((LinkedList<Node>) q).add(newNode);
}
}
}
}
}