这里的问题主要是实施。我想使用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]
内。
我该如何进行?
答案 0 :(得分:4)
“我需要提供所有这些命名参数吗?” -是的。
“ C ++如何知道哪个参数是哪个?” -按照提供顺序。