【发布时间】:2014-02-12 18:41:56
【问题描述】:
只需要确定这一点: 当我在图上运行 Dijkstra 算法时,最后我会有一个生成树,对吗? (不一定是最小生成树)
那么 Dijkstra 和 PRIM/Kruskal 的区别在于后面两种算法会返回最小生成树吗?
谢谢
【问题讨论】:
只需要确定这一点: 当我在图上运行 Dijkstra 算法时,最后我会有一个生成树,对吗? (不一定是最小生成树)
那么 Dijkstra 和 PRIM/Kruskal 的区别在于后面两种算法会返回最小生成树吗?
谢谢
【问题讨论】:
你是对的,有一个条件 - 图表应该有一个来自源的生成树(即 - 图表中的每个顶点 v 都有一个来自给定源的路径)。
此外,正如@Henry 所评论的那样 - 您应该继续算法,直到找到所有顶点的路径,并且一旦达到目标就不要“停止”。
另请注意,Dijkstra 算法(通常是最短路径求解器)是为有向图定义的,而 MST 通常用于无向图。
(请注意,很容易将每个无向图定义为有向图 - 只需为无向图中的每条边 {u,v} 添加 (u,v) 和 (v,u))
【讨论】: