0

这是迭代深化搜索,我想跟踪目标状态之前生成的节点。我使用 RUNNING_TIME 作为计数器,然后将其分配给树中的每个节点。问题是,因为递归 RUNNING_TIME 增加了不止一次,并且该值不再有效。因此,我得到了 BFS 的 RUNNING_TIME,它比理论上没有意义的这个更好(仅在最坏的情况下)。你知道我应该如何在我的方法中增加这个值吗?我真的不知道,谢谢。

public void IDS() {
    Grid startNode = new Grid(initState, A, B, C, agent);

    for(int depth = 0; depth < Integer.MAX_VALUE; depth ++) {
        Grid found = DLS(startNode, depth);

        if(found != null) {
            retracePath(found);
            return;
        }
    }
}

public Grid DLS(Grid current, int depth) {
    RUNNING_TIME ++;
    current.nodesGeneratedBefore = RUNNING_TIME;
    if(depth == 0 && current.checkGoalState()) {
        return current;
    }
    if(depth > 0) {
        for(Grid neighbor : current.getNeighbors(current)) {

            Grid found = DLS(neighbor, depth - 1);
            if(found != null) {
                return found;
            }
        }
    }

    return null;
}

编辑:我也忘了提到我得到了到目的地的正确路径,但只有“RUNNING_TIME”变量错误地增加了。

0 0 0 0 
0 0 0 0 
0 0 0 -1 
1 2 3 0 
Number of nodes generated by now 4680622

0 0 0 0 
0 0 0 0 
0 0 -1 0 
1 2 3 0 
Number of nodes generated by now 6297726

0 0 0 0 
0 0 0 0 
0 -1 0 0 
1 2 3 0 
Number of nodes generated by now 7106272

0 0 0 0 
0 0 0 0 
0 2 0 0 
1 -1 3 0 
Number of nodes generated by now 7760396

0 0 0 0 
0 0 0 0 
0 2 0 0 
-1 1 3 0 
Number of nodes generated by now 7837602

0 0 0 0 
0 0 0 0 
-1 2 0 0 
0 1 3 0 
Number of nodes generated by now 7837603

0 0 0 0 
0 0 0 0 
2 -1 0 0 
0 1 3 0 
Number of nodes generated by now 7842162

0 0 0 0 
0 0 0 0 
2 1 0 0 
0 -1 3 0 
Number of nodes generated by now 7848122

0 0 0 0 
0 0 0 0 
2 1 0 0 
0 3 -1 0 
Number of nodes generated by now 7849095

0 0 0 0 
0 0 0 0 
2 1 -1 0 
0 3 0 0 
Number of nodes generated by now 7849096

0 0 0 0 
0 0 -1 0 
2 1 0 0 
0 3 0 0 
Number of nodes generated by now 7849097

0 0 0 0 
0 -1 0 0 
2 1 0 0 
0 3 0 0 
Number of nodes generated by now 7849111

0 0 0 0 
0 1 0 0 
2 -1 0 0 
0 3 0 0 
Number of nodes generated by now 7849125

0 0 0 0 
0 1 0 0 
-1 2 0 0 
0 3 0 0 
Number of nodes generated by now 7849127
4

0 回答 0