在此图上 DFS 产生的解决方案路径是什么

What is the solution path yielded by a DFS on this graph

在此图上使用 DFS,按以下顺序访问节点(对于多个后继节点,节点将按字母顺序推送到 "frontier"):

S->A->E->D->F->G

那个访问顺序也是解决路径吗?如果是,为什么不是S->A->E->G,因为G也是E的后继节点?

PS:我是算法新手,所以如果我明显不理解这个概念,请告诉我。

我假设它同时考虑了启发式和边缘成本来确定要访问的下一个节点。

从 S 开始,它会查看其三种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30

然后它选择 A 并查看从 A 到 E 的唯一可用路径。

从 E 我们有两种可能性:

D = 2 + 8 = 10
G = 19 + 0 = 19

然后它会选择D,现在它有两种可能性:

F = 11 + 5 = 16
G = 16 + 0 = 16

这是一个平局,因此取决于算法的设置方式以及您为其提供的解决方案转到 F,然后有两种可能性:

E = 6 + 7 = 13
G = 6 + 0 = 6

然后它转到 G,最后它看到这是目标节点和 returns 状态序列。

如果您正在访问节点,DFS 方法将根据邻接列表的创建顺序遍历图。

例如节点E的后继节点的插入顺序可能有以下几种:

1- E-> D, G
2- E-> G, D

在第一种方式中,您将直接遍历 D->F->GD->G,在这两种情况下,您将在遍历任何节点 E 其他后继节点之前访问节点 G ,因此您将无法遍历路径 S->A->E->G,因为之前已经从节点 DF.

访问过节点 G

第二种方式,你会直接遍历E->G,所以这会导致遍历路径S->A->E->G,而且你将无法访问节点G节点 DF 因为它已经从节点 E.

访问过

如果您访问的是 true 或 false,就会发生前面的情况,但是如果您试图使用边上的成本找到最短路径,那么您将需要使用 Dijkstra 的算法在图上寻找最短路径,如果您不熟悉它,您可以阅读更多相关内容here