我只是想知道,是否有可能改变深度搜索的方向?我必须找到从起始节点到目标节点的路径。这是我的深度优先搜索结果的样子。 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
答案 0 :(得分:1)
DFS在可能的情况下随机选择一个方向,并在该方向继续,标记先前的位置,直到遇到障碍。我不确定你是如何以及为什么要控制这个方向。但是,如果您正在寻找最短路径,请使用广度优先搜索(BFS)来执行此操作。它会在前进之前系统地探索附近的节点,并为您提供最佳路径。