1
我使用Stoer-Wagner algorithm in boost::graph發現圖的最小切割。結果是正確的,但我需要得到算法切割的邊緣。我知道有可能obtain parity map,但我不得不分析地圖來獲得邊緣。有沒有辦法讓這些直接?BGL:來自Stoer-Wagner min-cut的邊緣指數?
在下面的示例中,最小切割權重爲1,但我希望切割邊緣(在這種情況下也爲0-2
)。
(見活在http://coliru.stacked-crooked.com/a/fc4166dafb089103)
#include <iostream>
#include<boost/graph/adjacency_list.hpp>
#include<boost/graph/connected_components.hpp>
#include <boost/graph/stoer_wagner_min_cut.hpp>
int main(void){
typedef boost::property<boost::edge_weight_t, int> EdgeWeightProp;
typedef boost::adjacency_list<
/*vertex storage*/boost::vecS,
/*edge storage*/boost::vecS,
/*graph type*/boost::undirectedS,
/*vertex properties*/boost::no_property,
/*edge properties*/ EdgeWeightProp
> Graph;
/*
something simple as example:
2 3
|/|
0 - 1
*/
Graph conn(4);
boost::add_edge(0,1,EdgeWeightProp(1),conn);
boost::add_edge(0,2,EdgeWeightProp(1),conn);
boost::add_edge(0,3,EdgeWeightProp(1),conn);
boost::add_edge(1,3,EdgeWeightProp(1),conn);
int w=boost::stoer_wagner_min_cut(conn,get(boost::edge_weight,conn));
std::cout<<"Mincut weight is "<<w<<std::endl;
}
謝謝!我最終做了這樣的事情,但你的代碼更清晰:) – eudoxos