使用最小生成树(C/C++)查找从A到B的路径
Finding path from A to B using a minimal spanning tree - C/C++
假设我们找到一个最小生成树。现在,我们只需要在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,这意味着您不必像在一般图中那样担心任何循环检测。
查找最小生成树,您会发现它是一个将所有顶点连接在一起的最小子图。这意味着每条边将在处最多使用一次。您可以使用DFS或BFS来查找所需的路径,而无需检查周期,因为您已经拥有MST。
在MST创建期间,您可以填充parent[],因此之后使用简单的回溯可以在没有DFS的情况下找到路径。
如果你仔细想想,Prim的MST算法实际上只是Dijkstra的伪装。因此,如果你找到了MST,MST已经为你提供了最短的路径(如上所述,想想DFS)。
相关文章:
- 查找 GCD:并非所有控制路径都返回值
- 用于查找网格中最短路径的算法
- 查找最短路径算法
- 使用连续字符及其路径查找矩阵中最长路径的长度
- 在具有随机边的图形中查找路径
- 如何在Cmake中正确查找头路径,以便在我的项目中构建Box2D
- A*路径查找-如何有效地更新openNodes优先级队列中的节点值
- 沿着路径查找节点数量
- 递归路径查找,直到除法结果为1
- C++通过windows搜索路径查找可执行文件
- 带地图的 GUI C++最短路径查找器
- 用于多个目标的2D平铺贴图的路径查找
- A* 路径查找中 std::map 性能的视觉C++性能问题
- 在 mingw 下编译时出现路径查找文件名错误
- 优化多目标的A*路径查找
- 无向图中的路径查找
- C++路径查找与a星,优化
- 路径查找(在网格中)与Boost图形库
- 路径查找算法创建循环
- 用于测试路径查找算法的可能数据集