【问题标题】:prim_minimum_spanning_tree() Boost functionprim_minimum_spanning_tree() 提升函数
【发布时间】:2011-10-15 03:52:05
【问题描述】:

我正在尝试将 Prim 算法与 boost 库的 prim_minimum_spanning_tree 函数一起使用,使用包含我所有图形点的文件。我使用 boost 库的 kruskal_minimum_spanning_tree 函数成功创建了我想要的图表。

但是对于 prim_minimum_spanning_tree,我只能得到每个点的直接父级,所以我的图表不完整。

我使用了 boost 文档中给出的示例:

对于 prim :http://www.boost.org/doc/libs/1_47_0/libs/graph/example/prim-example.cpp

还有克鲁斯卡尔一个http://www.boost.org/doc/libs/1_47_0/libs/graph/example/kruskal-example.cpp

一个具体的例子:我有这个点文件:

10
0 0.655171
0.304819 0.674978
0.106754 0.516587
0.489669 0.602466
0.369945 0.256661
0.374187 0.825587
0.172704 0.2978
0.643544 0.789666
0.987823 0.800592
0.464248 0.538987

使用我得到的 krukal 函数:

3 <--> 9
1 <--> 5
0 <--> 2
1 <--> 3
6 <--> 4
6 <--> 2
3 <--> 7
2 <--> 1
8 <--> 7

我得到的 prim 函数:

1 <--> 5
2 <--> 0
3 <--> 9
4 <--> 6
5 <--> 1
6 <--> 4
7 <--> 3
8 <--> 7
9 <--> 3

我有这些图表的绘图,但我无法发布图片或多个链接。 但正如你所见,我错过了 3 个链接。

如何使用 prim 函数获得与 kruskal 相同的结果?

谢谢,

PS : 我使用示例的代码作为基础,尝试了一堆修改但没有成功,在网络或文档上找不到任何有用的信息。

【问题讨论】:

    标签: c++ boost prims-algorithm


    【解决方案1】:

    我找到了自己问题的答案,可能对其他人有用。

    我将这些点链接了两次,这适用于 kruskal 算法,但不适用于 prim 算法,例如在我的边缘中:

    0 <--> 1
    1 <--> 0
    

    我应该只为 prim 的算法链接一次点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 2015-07-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多