... | ... |
@@ -108,13 +108,13 @@ |
108 | 108 |
/// |
109 | 109 |
/// The algorithm can be executed with the run() function. After it |
110 | 110 |
/// the matching (the primal solution) and the barrier (the dual |
111 | 111 |
/// solution) can be obtained using the query functions. |
112 | 112 |
/// |
113 | 113 |
/// The primal solution is multiplied by |
114 |
/// \ref |
|
114 |
/// \ref MaxFractionalMatching::primalScale "2". |
|
115 | 115 |
/// |
116 | 116 |
/// \tparam GR The undirected graph type the algorithm runs on. |
117 | 117 |
#ifdef DOXYGEN |
118 | 118 |
template <typename GR, typename TR> |
119 | 119 |
#else |
120 | 120 |
template <typename GR, |
... | ... |
@@ -629,15 +629,14 @@ |
629 | 629 |
|
630 | 630 |
/// \ingroup matching |
631 | 631 |
/// |
632 | 632 |
/// \brief Weighted fractional matching in general graphs |
633 | 633 |
/// |
634 | 634 |
/// This class provides an efficient implementation of fractional |
635 |
/// matching algorithm. The implementation is based on extensive use |
|
636 |
/// of priority queues and provides \f$O(nm\log n)\f$ time |
|
637 |
/// |
|
635 |
/// matching algorithm. The implementation uses priority queues and |
|
636 |
/// provides \f$O(nm\log n)\f$ time complexity. |
|
638 | 637 |
/// |
639 | 638 |
/// The maximum weighted fractional matching is a relaxation of the |
640 | 639 |
/// maximum weighted matching problem where the odd set constraints |
641 | 640 |
/// are omitted. |
642 | 641 |
/// It can be formulated with the following linear program. |
643 | 642 |
/// \f[ \sum_{e \in \delta(u)}x_e \le 1 \quad \forall u\in V\f] |
... | ... |
@@ -650,22 +649,22 @@ |
650 | 649 |
/// The algorithm calculates an optimal fractional matching and a |
651 | 650 |
/// proof of the optimality. The solution of the dual problem can be |
652 | 651 |
/// used to check the result of the algorithm. The dual linear |
653 | 652 |
/// problem is the following. |
654 | 653 |
/// \f[ y_u + y_v \ge w_{uv} \quad \forall uv\in E\f] |
655 | 654 |
/// \f[y_u \ge 0 \quad \forall u \in V\f] |
656 |
/// \f[\min \sum_{u \in V}y_u \f] |
|
655 |
/// \f[\min \sum_{u \in V}y_u \f] |
|
657 | 656 |
/// |
658 | 657 |
/// The algorithm can be executed with the run() function. |
659 | 658 |
/// After it the matching (the primal solution) and the dual solution |
660 | 659 |
/// can be obtained using the query functions. |
661 | 660 |
/// |
662 | 661 |
/// If the value type is integer, then the primal and the dual |
663 | 662 |
/// solutions are multiplied by |
664 |
/// \ref MaxWeightedMatching::primalScale "2" and |
|
665 |
/// \ref MaxWeightedMatching::dualScale "4" respectively. |
|
663 |
/// \ref MaxWeightedFractionalMatching::primalScale "2" and |
|
664 |
/// \ref MaxWeightedFractionalMatching::dualScale "4" respectively. |
|
666 | 665 |
/// |
667 | 666 |
/// \tparam GR The undirected graph type the algorithm runs on. |
668 | 667 |
/// \tparam WM The type edge weight map. The default type is |
669 | 668 |
/// \ref concepts::Graph::EdgeMap "GR::EdgeMap<int>". |
670 | 669 |
#ifdef DOXYGEN |
671 | 670 |
template <typename GR, typename WM> |
... | ... |
@@ -1267,13 +1266,13 @@ |
1267 | 1266 |
} |
1268 | 1267 |
} |
1269 | 1268 |
} |
1270 | 1269 |
|
1271 | 1270 |
/// \brief Run the algorithm. |
1272 | 1271 |
/// |
1273 |
/// This method runs the \c % |
|
1272 |
/// This method runs the \c %MaxWeightedFractionalMatching algorithm. |
|
1274 | 1273 |
/// |
1275 | 1274 |
/// \note mwfm.run() is just a shortcut of the following code. |
1276 | 1275 |
/// \code |
1277 | 1276 |
/// mwfm.init(); |
1278 | 1277 |
/// mwfm.start(); |
1279 | 1278 |
/// \endcode |
... | ... |
@@ -1397,15 +1396,14 @@ |
1397 | 1396 |
|
1398 | 1397 |
/// \ingroup matching |
1399 | 1398 |
/// |
1400 | 1399 |
/// \brief Weighted fractional perfect matching in general graphs |
1401 | 1400 |
/// |
1402 | 1401 |
/// This class provides an efficient implementation of fractional |
1403 |
/// matching algorithm. The implementation is based on extensive use |
|
1404 |
/// of priority queues and provides \f$O(nm\log n)\f$ time |
|
1405 |
/// |
|
1402 |
/// matching algorithm. The implementation uses priority queues and |
|
1403 |
/// provides \f$O(nm\log n)\f$ time complexity. |
|
1406 | 1404 |
/// |
1407 | 1405 |
/// The maximum weighted fractional perfect matching is a relaxation |
1408 | 1406 |
/// of the maximum weighted perfect matching problem where the odd |
1409 | 1407 |
/// set constraints are omitted. |
1410 | 1408 |
/// It can be formulated with the following linear program. |
1411 | 1409 |
/// \f[ \sum_{e \in \delta(u)}x_e = 1 \quad \forall u\in V\f] |
... | ... |
@@ -1417,22 +1415,22 @@ |
1417 | 1415 |
/// |
1418 | 1416 |
/// The algorithm calculates an optimal fractional matching and a |
1419 | 1417 |
/// proof of the optimality. The solution of the dual problem can be |
1420 | 1418 |
/// used to check the result of the algorithm. The dual linear |
1421 | 1419 |
/// problem is the following. |
1422 | 1420 |
/// \f[ y_u + y_v \ge w_{uv} \quad \forall uv\in E\f] |
1423 |
/// \f[\min \sum_{u \in V}y_u \f] |
|
1421 |
/// \f[\min \sum_{u \in V}y_u \f] |
|
1424 | 1422 |
/// |
1425 | 1423 |
/// The algorithm can be executed with the run() function. |
1426 | 1424 |
/// After it the matching (the primal solution) and the dual solution |
1427 | 1425 |
/// can be obtained using the query functions. |
1428 | 1426 |
|
1429 | 1427 |
/// If the value type is integer, then the primal and the dual |
1430 | 1428 |
/// solutions are multiplied by |
1431 |
/// \ref MaxWeightedMatching::primalScale "2" and |
|
1432 |
/// \ref MaxWeightedMatching::dualScale "4" respectively. |
|
1429 |
/// \ref MaxWeightedPerfectFractionalMatching::primalScale "2" and |
|
1430 |
/// \ref MaxWeightedPerfectFractionalMatching::dualScale "4" respectively. |
|
1433 | 1431 |
/// |
1434 | 1432 |
/// \tparam GR The undirected graph type the algorithm runs on. |
1435 | 1433 |
/// \tparam WM The type edge weight map. The default type is |
1436 | 1434 |
/// \ref concepts::Graph::EdgeMap "GR::EdgeMap<int>". |
1437 | 1435 |
#ifdef DOXYGEN |
1438 | 1436 |
template <typename GR, typename WM> |
... | ... |
@@ -2002,13 +2000,14 @@ |
2002 | 2000 |
} |
2003 | 2001 |
return true; |
2004 | 2002 |
} |
2005 | 2003 |
|
2006 | 2004 |
/// \brief Run the algorithm. |
2007 | 2005 |
/// |
2008 |
/// This method runs the \c % |
|
2006 |
/// This method runs the \c %MaxWeightedPerfectFractionalMatching |
|
2007 |
/// algorithm. |
|
2009 | 2008 |
/// |
2010 | 2009 |
/// \note mwfm.run() is just a shortcut of the following code. |
2011 | 2010 |
/// \code |
2012 | 2011 |
/// mwpfm.init(); |
2013 | 2012 |
/// mwpfm.start(); |
2014 | 2013 |
/// \endcode |
0 comments (0 inline)