如何运行Dijkstra算法使其类似于Prim并生成MST?

时间:2013-02-10 01:29:51

标签: algorithm dijkstra minimum-spanning-tree

假设我正在运行Dijkstra算法来访问所有节点(而不是原始初始节点和目标节点),即我正在检查是否访问了所有节点,而不是目标节点。该算法会生成MST(最小生成树)吗? (和Prim相似吗?)

2 个答案:

答案 0 :(得分:0)

没有。考虑一个看起来像正方形的图表,三个边缘成本为1,剩下的一个成本为2。此图的MST成本为3,但如果您在包含昂贵边缘的顶点上启动Dijkstra算法,那么将采用该算法,因为它是连接节点的最短路径。

酷ASCII可视化:

    1
 A------B
 |      |
1|      |1
 |      |
 C------D
    2

如果您在C启动Dijkstra,CD是从CD的最短路径,但它不能包含在MST中。

答案 1 :(得分:0)

它不会生成MST,如此示例图所示:

              ... A
 .... 10 -''''    \
S                  2
 '''' 11 -....      \
              ''''' B

如果我们在节点S处启动Dijkstra算法,结果树将如下所示:

              ... A
 .... 10 -''''    
S                 
 '''' 11 -....    
              ''''' B

总边长为21,而(在这种情况下是唯一的)MST将是:

              ... A
 .... 10 -''''    \
S                  2
                    \
                    B

共导致12人。