Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 此图上DFS生成的解决方案路径是什么_Search_Graph Algorithm_Depth First Search - Fatal编程技术网

Search 此图上DFS生成的解决方案路径是什么

Search 此图上DFS生成的解决方案路径是什么,search,graph-algorithm,depth-first-search,Search,Graph Algorithm,Depth First Search,使用此图上的DFS,节点按以下顺序访问(对于多个后续节点,节点按字母顺序推送到“前沿”): 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 D = 2 + 8 =

使用此图上的DFS,节点按以下顺序访问(对于多个后续节点,节点按字母顺序推送到“前沿”):

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
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6
然后它选择A并查看其从A到E的唯一可用路径

从E中,我们有两种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6
然后选择D,现在有两种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6
这是一个平局,因此取决于算法是如何设置的,你给它的解决方案是F,然后有两种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6

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

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

从S开始,它考虑了三种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6
然后它选择A并查看其从A到E的唯一可用路径

从E中,我们有两种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6
然后选择D,现在有两种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6
这是一个平局,因此取决于算法是如何设置的,你给它的解决方案是F,然后有两种可能性:

A = 9 + 13 = 21
B = 14 + 14 = 28
C = 15 + 15 = 30
D = 2 + 8 = 10
G = 19 + 0 = 19
F = 11 + 5 = 16
G = 16 + 0 = 16
E = 6 + 7 = 13
G = 6 + 0 = 6

然后转到G,最后看到这是目标节点并返回状态序列。

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

例如,插入节点
E
的后继节点的顺序可以采用以下方式:

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

在第二种方式中,您将直接遍历
E->G
,因此这将导致遍历路径
S->A->E->G
,但您也将无法从节点
D
F
访问节点
G
,因为它将已经从节点
E
访问


如果使用true或false进行访问,则会出现前一种情况,但如果您试图使用边上的代价来查找最短路径,则需要使用Dijkstra的算法来查找图上的最短路径,如果您不熟悉,则可以阅读有关它的更多信息。

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

例如,插入节点
E
的后继节点的顺序可以采用以下方式:

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

在第二种方式中,您将直接遍历
E->G
,因此这将导致遍历路径
S->A->E->G
,但您也将无法从节点
D
F
访问节点
G
,因为它将已经从节点
E
访问

如果您访问的是true或false,则会出现前一种情况,但如果您试图使用边上的代价来查找最短路径,则需要使用Dijkstra的算法来查找图上的最短路径,如果您不熟悉它,您可以阅读有关它的更多信息