【问题标题】:A spanning tree as a result of running Dijkstra's algorithm?运行 Dijkstra 算法的生成树?
【发布时间】:2014-02-12 18:41:56
【问题描述】:

只需要确定这一点: 当我在图上运行 Dijkstra 算法时,最后我会有一个生成树,对吗? (不一定是最小生成树)

那么 Dijkstra 和 PRIM/Kruskal 的区别在于后面两种算法会返回最小生成树吗?

谢谢

【问题讨论】:

    标签: algorithm data-structures


    【解决方案1】:

    你是对的,有一个条件 - 图表应该有一个来自源的生成树(即 - 图表中的每个顶点 v 都有一个来自给定源的路径)。
    此外,正如@Henry 所评论的那样 - 您应该继续算法,直到找到所有顶点的路径,并且一旦达到目标就不要“停止”。

    另请注意,Dijkstra 算法(通常是最短路径求解器)是为有向图定义的,而 MST 通常用于无向图。
    (请注意,很容易将每个无向图定义为有向图 - 只需为无向图中的每条边 {u,v} 添加 (u,v) 和 (v,u))

    【讨论】:

    • 第二个条件是到达目标后不要停止Dijkstra。
    • @Henry AFAIK,这是一种优化,而不是原始算法,但这是一个好点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多