Вычислить минимальное остовное дерево с помощью алгоритма Прима: как это сделать проще? - PullRequest
0 голосов
/ 19 октября 2019

Проблема здесь в основном в реализации. Я хотел бы вычислить 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.

Как мне поступить?

1 Ответ

4 голосов
/ 19 октября 2019

"Мне нужно дать все эти именованные параметры?"- Да.

"Как C ++ узнает, какой параметр какой?"- По порядку, в котором они предоставляются.

...