Example Maximum Cardinality Matching in General GraphsThe following program shows how the function Remark: The graph algorithms in LEDA are generic, that is, they accept graphs as well as parameterized graphs. In We use
#include <LEDA/graph/graph.h>
#include <LEDA/graph/mc_matching.h>
using namespace leda;
int main()
{
graph G;
node n0=G.new_node(); node n1=G.new_node();
node n2=G.new_node(); node n3=G.new_node();
node n4=G.new_node(); node n5=G.new_node();
edge e0=G.new_edge(n0,n1); edge e1=G.new_edge(n1,n2);
edge e2=G.new_edge(n2,n3); edge e3=G.new_edge(n3,n0);
edge e4=G.new_edge(n0,n4); edge e5=G.new_edge(n3,n4);
edge e6=G.new_edge(n1,n5); edge e7=G.new_edge(n2,n5);
node_array<int> OSC(G);
list<edge> M=MAX_CARD_MATCHING(G,OSC);
bool result_correct=CHECK_MAX_CARD_MATCHING(G,M,OSC);
if (result_correct) {
std::cout << "Maximum Cardinality Matching:" << std::endl;
edge e;
forall(e,M) G.print_edge(e);
std::cout << std::endl;
node v; forall_nodes(v,G) {
std::cout << "label"; G.print_node(v);
std::cout << "=" << OSC[v] << std::endl;
}
}
return 0;
}
Remark: There is a variants of |
See also:Maximum Cardinality Matching in General Graphs Manual Entries: Manual Page Maximum Cardinality Matching in General Graphs |