Je trouve min-coupe d'un graphique en utilisant Stoer-Wagner algorithm in boost::graph. Le résultat est correct mais j'ai besoin d'obtenir les arêtes qui ont été coupées par l'algorithme. Je sais qu'il y a la possibilité de obtain parity map, mais je devrais analyser la carte pour obtenir les bords. Y a-t-il un moyen de les obtenir directement? Dans l'exemple ci-dessous, le poids de la coupe min est de 1, mais j'aimerais aussi obtenir la coupe du bord (0-2
dans ce cas).BGL: obtenir des indices de bord de Stoer-Wagner min-coupe?
(voir en direct à 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;
}
Merci! J'ai fini par faire quelque chose comme ça, mais ton code est plus clair :) – eudoxos