更改深度优先搜索的方向

时间:2015-12-01 21:54:38

标签: java stack depth-first-search

我只是想知道,是否有可能改变深度搜索的方向?我必须找到从起始节点到目标节点的路径。这是我的深度优先搜索结果的样子。 0 5 7 8 9 10 6 4 1 3 2 11.起始节点为0,我的目标节点为1.我想要的路径是0 5 4 1.方向在第一次搜索中是否真正重要? 这是我的代码:

public void performIterativeDFS(Graph G, int node, int goal) {
    ArrayBasedStack arrayStack = new ArrayBasedStack();
    arrayStack.push(node);
    visited[node] = true;
    while (!arrayStack.isEmpty()) {
        int n = arrayStack.pop();
        System.out.print(n + " ");
        for (int w : G.adjList(n)) {
            if (!visited[w]) {
                visited[w] = true;
                arrayStack.push(w);
                if (w == goal) {
                    goal = w;
                    System.out.print(" Goal Found: ");
                }
            }
        }
    }
}

结构:

11 3
2 3
0 3
1 4
5 4
5 7
6 7
7 8
8 9
9 10
0 5

1 个答案:

答案 0 :(得分:1)

DFS在可能的情况下随机选择一个方向,并在该方向继续,标记先前的位置,直到遇到障碍。我不确定你是如何以及为什么要控制这个方向。但是,如果您正在寻找最短路径,请使用广度优先搜索(BFS)来执行此操作。它会在前进之前系统地探索附近的节点,并为您提供最佳路径。