Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
C++ 使用最小生成树查找从A到B的路径-C/C++;_C++_Algorithm_Tree_Graph Algorithm_Minimum Spanning Tree - Fatal编程技术网

C++ 使用最小生成树查找从A到B的路径-C/C++;

C++ 使用最小生成树查找从A到B的路径-C/C++;,c++,algorithm,tree,graph-algorithm,minimum-spanning-tree,C++,Algorithm,Tree,Graph Algorithm,Minimum Spanning Tree,假设我们找到一个最小生成树。现在,我们只需要MST中从a到Z的路径。我们怎样才能在O(n^2)时间内做到这一点 我们从根A开始,然后看Ax形式树中的所有边(其中x是任意顶点) 然后,假设我们发现:AB,AC,AD,等等。。。 然后对于每一个,我们寻找形式的边:Bx,Cx,Dx…这显然不是O(n^2) 那么,在给定MST的情况下,找到路径a->Z的更好/更有效的方法是什么 谢谢就足够了,最坏的情况是O(| V |+| E |)。事实上,您的输入是一个MST,这意味着您不必像在一般图中那样担心任何循

假设我们找到一个最小生成树。现在,我们只需要MST中从a到Z的路径。我们怎样才能在O(n^2)时间内做到这一点

我们从根A开始,然后看Ax形式树中的所有边(其中x是任意顶点)

然后,假设我们发现:AB,AC,AD,等等。。。 然后对于每一个,我们寻找形式的边:Bx,Cx,Dx…这显然不是O(n^2)

那么,在给定MST的情况下,找到路径a->Z的更好/更有效的方法是什么


谢谢

就足够了,最坏的情况是O(| V |+| E |)。事实上,您的输入是一个MST,这意味着您不必像在一般图中那样担心任何循环检测。

就足够了,在最坏的情况下是O(| V |+| E |)。事实上,您的输入是一个MST,这意味着您不必像在一般图中那样担心任何循环检测。

查找,您会发现它是一个将所有顶点连接在一起的最小子图。这意味着每条边都将在最多使用一次。您可以使用DFS或BFS来查找所需的路径,而无需检查循环,因为您已经拥有MST。

查找,您会发现它是将所有顶点连接在一起的最小子图。这意味着每条边都将在最多使用一次。您可以使用DFS或BFS查找所需路径,而无需检查周期,因为您已经拥有MST。

在MST创建过程中,您可以填充父[],因此,使用简单的回溯之后,您将能够找到没有DFS的路径。

在MST创建过程中,您可以填充父[],因此,在使用简单的回溯之后,您将能够在没有DFS的情况下找到路径。

如果您仔细想想,Prim查找MST的算法实际上只是Dijkstra的伪装。因此,如果你找到一条最短路径,MST已经为你提供了最短路径(如上所述,想想DFS)。

如果你想一想,Prim找到MST的算法实际上只是Dijkstra的伪装。因此,如果找到最短路径,MST已经为您提供了最短路径(如上所述,请考虑DFS)。

边权重是点之间的距离,因此它们不一定是整数。DFS如何工作?我们从MST中创建DFS?@user809240,为什么O(n^2)是一个目标?如果MST大于O(n)(因为它有n-1条边用于n个点)就很难做到这一点。边权重是点之间的距离,所以它们不一定是整数。DFS是如何工作的?我们从MST中创建DFS?@user809240,为什么O(n^2)是一个目标?对于超过O(n)的MST来说,很难做到这一点(因为它有n-1条边用于n个点),还应该注意的是,在MST中,E |最多是
|V |
,而不是一般图中的
|V | ^2
,因此算法将是
O(| V |)
。比
O(|V | ^2)
的目标快得多。还应该注意的是,在MST中
|E |
最多是
|V |
而不是一般图中的
|V | ^2
,因此算法将是
O(| V |)
。比
O(| V | ^2)
的目标快得多。