Class MatchingCardinalityGabow1976
- All Implemented Interfaces:
MatchingAlgo
The algorithm runs \(n\) iterations, in each one the matching is increased by one. In each iteration, a BFS is run
from the unmatched vertices using only alternating paths, searching for an augmenting path. When a blossom is
detected, the algorithm contract it to a 'super vertex' and continue in the BFS. Instead of storing the blossom
explicitly as stated in the paper, we use UnionFind
to implicitly represent the blossoms. Each iteration
require \(O(m n \cdot \alpha (m, n))\) time, where \(\alpha (\cdot, \cdot)\) is inverse Ackermann's function.
Based on 'An Efficient Implementation of Edmonds Algorithm for Maximum Matching on Graphs' by Harold N. Gabow (1976).
Although the original paper stated the running time is \(O(n^3)\), we implement it using UnionFind
, and the
running time is \(O(m n \alpha (m, n))\).
- Author:
- Barak Ugav
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.jgalgo.alg.match.MatchingAlgo
MatchingAlgo.Builder
-
Constructor Summary
-
Method Summary
Methods inherited from class com.jgalgo.alg.match.MatchingAlgoAbstract
computeMaximumMatching, computeMaximumPerfectMatching, computeMinimumMatching, computeMinimumPerfectMatching
-
Constructor Details
-
MatchingCardinalityGabow1976
public MatchingCardinalityGabow1976()Create a new maximum matching object.
-