我试图了解如何构建图表并使用boost库运行stoer_wagner_min_cut
算法。
到目前为止,我使用adjacency_matrix
容器构建了图表。
问题在于使stoer_wagner_min_cut
工作。我红了this
文档和我遇到了两件事:
WeightMap weights
作为输入。第一部分是什么意思?是adjacency_matrix
某种类型的“顶点列表图和发生率图”?那是一个例子吗?
另外,图中的所有边都具有权重1.我不明白如何组装WeightMap weights
。并且找不到任何例子。
修改
这是我可以管理的 -
#include <boost/graph/adjacency_matrix.hpp>
#include <boost/graph/stoer_wagner_min_cut.hpp>
#include <boost/property_map/property_map.h>
using namespace boost;
typedef adjacency_matrix<undirectedS> UGraph;
void main()
{
static_property_map<UGraph, int>; // im not sure about UGraph
G = buildGraph(); // this function works fine
parity_map = stoer_wagner_min_cut(G, ..?..);
}
如何定义此静态属性映射以返回int值为1?我有点挣扎。
我也看到stoer_wagner_min_cut
的返回值是parity_map
(ParityMap必须是可写属性映射的模型,其值类型应该是bool类型)
我在建筑物中使用这些地图时会有点挣扎,我会很乐意为此提供一些指导和示例..
感谢。
答案 0 :(得分:2)
第一部分是什么意思? adjacency_matrix是某种类型的&#34;顶点列表图和发生率图&#34;?那是一个例子吗?
这意味着图表类型必须模型命名的概念。这些概念记录在这里:
第二个问题是关于属性地图。他们也是concept
在这种情况下,最简单的方法是提供静态属性映射:
<强> Live On Coliru 强>
#include <boost/functional/hash.hpp>
#include <boost/graph/adjacency_matrix.hpp>
#include <boost/graph/stoer_wagner_min_cut.hpp>
#include <boost/property_map/property_map.hpp>
using namespace boost;
typedef adjacency_matrix<undirectedS> UGraph;
UGraph buildGraph() {
UGraph g(10);
// todo
return g;
}
#include <iostream>
int main() {
UGraph g = buildGraph(); // this function works fine
int i = stoer_wagner_min_cut(g, boost::make_static_property_map<UGraph::edge_descriptor>(1));
std::cout << "i: " << i << "\n";
}