template<typename GR, typename WM>
class lemon::MaxWeightedFractionalMatching< GR, WM >
This class provides an efficient implementation of fractional matching algorithm. The implementation uses priority queues and provides time complexity.
The maximum weighted fractional matching is a relaxation of the maximum weighted matching problem where the odd set constraints are omitted. It can be formulated with the following linear program.
where is the set of edges incident to a node in . The result must be the union of a matching with one value edges and a set of odd length cycles with half value edges.
The algorithm calculates an optimal fractional matching and a proof of the optimality. The solution of the dual problem can be used to check the result of the algorithm. The dual linear problem is the following.
The algorithm can be executed with the run() function. After it the matching (the primal solution) and the dual solution can be obtained using the query functions.
The primal solution is multiplied by 2. If the value type is integer, then the dual solution is scaled by 4.
This function returns one of the fractional matching arc (or edge) incident to the given node in the found matching or INVALID if the node is not covered by the matching or if the node is on an odd length cycle then it is the successor edge on the cycle.
Precondition
Either run() or start() must be called before using this function.