Почему мое утверждение о равенстве не работает для моего поиска в ширину - PullRequest
0 голосов
/ 17 октября 2019

Я пишу программу, которая решает головоломку из 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);
                }
            }
        }
    }
}
...