使用Prim算法计算最小生成树:如何使之简单?

时间:2019-10-19 16:16:08

标签: c++ boost

这里的问题主要是实施。我想使用Prim的算法来计算MST。

这是代码:

vector<edge_desc> mst;
auto root = boost::vertex(h, Gs[i]);
boost::prim_minimum_spanning_tree(Gs[i], root);

其中h是整数,Gs是权重图的向量,其定义如下:

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
                              boost::no_property, boost::property<boost::edge_weight_t, int>>
    weighted_graph;

我遇到此错误:

no instance of overloaded function "boost::prim_minimum_spanning_tree" matches the argument list -- argument types are: (weighted_graph, std::size_t, std::back_insert_iterator<std::vector<edge_desc, std::allocator<edge_desc>>>)

根据文档:https://www.boost.org/doc/libs/1_55_0/libs/graph/doc/prim_minimum_spanning_tree.html

我需要提供所有这些命名参数吗?

C ++如何知道哪个参数是哪个?

我的目标是从root的{​​{1}}开始构造一个MST,并将边缘描述符存储在Gs[i]内。

我该如何进行?

1 个答案:

答案 0 :(得分:4)

“我需要提供所有这些命名参数吗?” -是的。

“ C ++如何知道哪个参数是哪个?” -按照提供顺序。