Проблема здесь в основном в реализации. Я хотел бы вычислить 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 ++ узнает, какой параметр какой?
Моя цель - построить MST, начиная с root
на Gs[i]
, и сохранить дескрипторы ребер внутри mst
.
Как мне поступить?