在此图上 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->G
或 D->G
,在这两种情况下,您将在遍历任何节点 E
其他后继节点之前访问节点 G
,因此您将无法遍历路径 S->A->E->G
,因为之前已经从节点 D
或 F
.
访问过节点 G
第二种方式,你会直接遍历E->G
,所以这会导致遍历路径S->A->E->G
,而且你将无法访问节点G
节点 D
或 F
因为它已经从节点 E
.
访问过
如果您访问的是 true 或 false,就会发生前面的情况,但是如果您试图使用边上的成本找到最短路径,那么您将需要使用 Dijkstra
的算法在图上寻找最短路径,如果您不熟悉它,您可以阅读更多相关内容here。
在此图上使用 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->G
或 D->G
,在这两种情况下,您将在遍历任何节点 E
其他后继节点之前访问节点 G
,因此您将无法遍历路径 S->A->E->G
,因为之前已经从节点 D
或 F
.
G
第二种方式,你会直接遍历E->G
,所以这会导致遍历路径S->A->E->G
,而且你将无法访问节点G
节点 D
或 F
因为它已经从节点 E
.
如果您访问的是 true 或 false,就会发生前面的情况,但是如果您试图使用边上的成本找到最短路径,那么您将需要使用 Dijkstra
的算法在图上寻找最短路径,如果您不熟悉它,您可以阅读更多相关内容here。