0
2
0
... | ... |
@@ -660,6 +660,7 @@ |
660 | 660 |
/// |
661 |
/// If the value type is integer, then the primal and the dual |
|
662 |
/// solutions are multiplied by |
|
663 |
/// \ref MaxWeightedFractionalMatching::primalScale "2" and |
|
664 |
/// \ref MaxWeightedFractionalMatching::dualScale "4" respectively. |
|
661 |
/// The primal solution is multiplied by |
|
662 |
/// \ref MaxWeightedFractionalMatching::primalScale "2". |
|
663 |
/// If the value type is integer, then the dual |
|
664 |
/// solution is scaled by |
|
665 |
/// \ref MaxWeightedFractionalMatching::dualScale "4". |
|
665 | 666 |
/// |
... | ... |
@@ -690,6 +691,4 @@ |
690 | 691 |
/// |
691 |
/// Scaling factor for primal solution. It is equal to 2 or 1 |
|
692 |
/// according to the value type. |
|
693 |
static const int primalScale = |
|
694 |
std::numeric_limits<Value>::is_integer ? 2 : 1; |
|
692 |
/// Scaling factor for primal solution. |
|
693 |
static const int primalScale = 2; |
|
695 | 694 |
|
... | ... |
@@ -1331,6 +1330,5 @@ |
1331 | 1330 |
/// \pre Either run() or start() must be called before using this function. |
1332 |
Value matching(const Edge& edge) const { |
|
1333 |
return Value(edge == (*_matching)[_graph.u(edge)] ? 1 : 0) |
|
1334 |
* primalScale / 2 + Value(edge == (*_matching)[_graph.v(edge)] ? 1 : 0) |
|
1335 |
* primalScale / 2; |
|
1331 |
int matching(const Edge& edge) const { |
|
1332 |
return (edge == (*_matching)[_graph.u(edge)] ? 1 : 0) |
|
1333 |
+ (edge == (*_matching)[_graph.v(edge)] ? 1 : 0); |
|
1336 | 1334 |
} |
... | ... |
@@ -1425,7 +1423,8 @@ |
1425 | 1423 |
/// can be obtained using the query functions. |
1426 |
|
|
1427 |
/// If the value type is integer, then the primal and the dual |
|
1428 |
/// solutions are multiplied by |
|
1429 |
/// \ref MaxWeightedPerfectFractionalMatching::primalScale "2" and |
|
1430 |
/// |
|
1424 |
/// |
|
1425 |
/// The primal solution is multiplied by |
|
1426 |
/// \ref MaxWeightedPerfectFractionalMatching::primalScale "2". |
|
1427 |
/// If the value type is integer, then the dual |
|
1428 |
/// solution is scaled by |
|
1429 |
/// \ref MaxWeightedPerfectFractionalMatching::dualScale "4". |
|
1431 | 1430 |
/// |
... | ... |
@@ -1456,6 +1455,4 @@ |
1456 | 1455 |
/// |
1457 |
/// Scaling factor for primal solution. It is equal to 2 or 1 |
|
1458 |
/// according to the value type. |
|
1459 |
static const int primalScale = |
|
1460 |
std::numeric_limits<Value>::is_integer ? 2 : 1; |
|
1456 |
/// Scaling factor for primal solution. |
|
1457 |
static const int primalScale = 2; |
|
1461 | 1458 |
|
... | ... |
@@ -2066,6 +2063,5 @@ |
2066 | 2063 |
/// \pre Either run() or start() must be called before using this function. |
2067 |
Value matching(const Edge& edge) const { |
|
2068 |
return Value(edge == (*_matching)[_graph.u(edge)] ? 1 : 0) |
|
2069 |
* primalScale / 2 + Value(edge == (*_matching)[_graph.v(edge)] ? 1 : 0) |
|
2070 |
* primalScale / 2; |
|
2064 |
int matching(const Edge& edge) const { |
|
2065 |
return (edge == (*_matching)[_graph.u(edge)] ? 1 : 0) |
|
2066 |
+ (edge == (*_matching)[_graph.v(edge)] ? 1 : 0); |
|
2071 | 2067 |
} |
... | ... |
@@ -238,2 +238,8 @@ |
238 | 238 |
|
239 |
for (SmartGraph::EdgeIt e(graph); e != INVALID; ++e) { |
|
240 |
check((e == mfm.matching(graph.u(e)) ? 1 : 0) + |
|
241 |
(e == mfm.matching(graph.v(e)) ? 1 : 0) == |
|
242 |
mfm.matching(e), "Invalid matching"); |
|
243 |
} |
|
244 |
|
|
239 | 245 |
SmartGraph::NodeMap<bool> processed(graph, false); |
... | ... |
@@ -286,2 +292,7 @@ |
286 | 292 |
} |
293 |
for (SmartGraph::EdgeIt e(graph); e != INVALID; ++e) { |
|
294 |
check((e == mfm.matching(graph.u(e)) ? 1 : 0) + |
|
295 |
(e == mfm.matching(graph.v(e)) ? 1 : 0) == |
|
296 |
mfm.matching(e), "Invalid matching"); |
|
297 |
} |
|
287 | 298 |
} else { |
... | ... |
@@ -339,2 +350,8 @@ |
339 | 350 |
|
351 |
for (SmartGraph::EdgeIt e(graph); e != INVALID; ++e) { |
|
352 |
check((e == mwfm.matching(graph.u(e)) ? 1 : 0) + |
|
353 |
(e == mwfm.matching(graph.v(e)) ? 1 : 0) == |
|
354 |
mwfm.matching(e), "Invalid matching"); |
|
355 |
} |
|
356 |
|
|
340 | 357 |
int dv = 0; |
... | ... |
@@ -393,2 +410,8 @@ |
393 | 410 |
|
411 |
for (SmartGraph::EdgeIt e(graph); e != INVALID; ++e) { |
|
412 |
check((e == mwpfm.matching(graph.u(e)) ? 1 : 0) + |
|
413 |
(e == mwpfm.matching(graph.v(e)) ? 1 : 0) == |
|
414 |
mwpfm.matching(e), "Invalid matching"); |
|
415 |
} |
|
416 |
|
|
394 | 417 |
int dv = 0; |
0 comments (0 inline)