add greedy heuristic for initialization
This commit is contained in:
parent
d5f01f5c70
commit
5674dff7a6
1 changed files with 5 additions and 3 deletions
|
@ -214,12 +214,13 @@ void find_greedy_matching(Graph & graph)
|
||||||
for(NodeId node_id = 0; node_id < graph.num_nodes(); ++node_id)
|
for(NodeId node_id = 0; node_id < graph.num_nodes(); ++node_id)
|
||||||
{
|
{
|
||||||
if (graph.matched_neighbor(node_id) == node_id) {
|
if (graph.matched_neighbor(node_id) == node_id) {
|
||||||
for(NodeId neighbor_id : graph.node(node_id).neighbors())
|
for(NodeId const neighbor_id : graph.node(node_id).neighbors())
|
||||||
{
|
{
|
||||||
if(graph.matched_neighbor(neighbor_id) == neighbor_id)
|
if(graph.matched_neighbor(neighbor_id) == neighbor_id)
|
||||||
{
|
{
|
||||||
graph.node(neighbor_id).matched_neighbor = node_id;
|
graph.node(neighbor_id).matched_neighbor = node_id;
|
||||||
graph.node(node_id).matched_neighbor = neighbor_id;
|
graph.node(node_id).matched_neighbor = neighbor_id;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -227,8 +228,9 @@ void find_greedy_matching(Graph & graph)
|
||||||
}
|
}
|
||||||
|
|
||||||
Graph maximum_matching(Graph & graph) {
|
Graph maximum_matching(Graph & graph) {
|
||||||
//find_greedy_matching(graph);
|
graph.reset_forest();
|
||||||
graph.reset_matching();
|
find_greedy_matching(graph);
|
||||||
|
check_integrity(graph);
|
||||||
maximum_matching_from_initial_matching(graph);
|
maximum_matching_from_initial_matching(graph);
|
||||||
|
|
||||||
ED::Graph matching = ED::Graph(graph.num_nodes());
|
ED::Graph matching = ED::Graph(graph.num_nodes());
|
||||||
|
|
Loading…
Reference in a new issue