Simple algorithms for matchings (testing properties, obtaining a maximal matching) More...
Functions | |
| void | ogdf::Matching::findMaximalMatching (const Graph &graph, ArrayBuffer< edge > &matching) |
| Obtains a maximal matching in O(|E|) time. | |
| int | ogdf::Matching::findMaximumCardinalityMatching (const Graph &G, const List< node > &U, const List< node > &V, EdgeArray< bool > &matching) |
Finds a maximum cardinality matching in the bipartite graph G = (U+V, E) in O(sqrt(|U+V|) * |E|) time by using the Hopcroft-Karp-Karzanov algorithm. | |
| template<typename EdgeContainer > | |
| bool | ogdf::Matching::isMatching (const Graph &graph, const EdgeContainer &matching) |
Checks in time O(|V| + size of matching) if the given set of edges represents a matching. | |
| template<typename EdgeContainer > | |
| bool | ogdf::Matching::isMaximal (const Graph &graph, const EdgeContainer &matching) |
Checks in time O(|E|) if there are edges that could be added to matching. | |
| template<typename EdgeContainer > | |
| bool | ogdf::Matching::isMaximalMatching (const Graph &graph, const EdgeContainer &matching) |
Checks in O(|V| + |E|) time if matching is a maximal matching. | |
| template<typename EdgeContainer > | |
| bool | ogdf::Matching::isPerfect (const Graph &graph, const EdgeContainer &matching) |
Checks in O(1) if matching (assuming it is a matching and the graph is simple and connected) is perfect. | |
| template<typename EdgeContainer > | |
| bool | ogdf::Matching::isPerfectMatching (const Graph &graph, const EdgeContainer &matching) |
Checks in O(|V| + size of matching) if matching is a perfect matching. | |
Simple algorithms for matchings (testing properties, obtaining a maximal matching)
| void ogdf::Matching::findMaximalMatching | ( | const Graph & | graph, |
| ArrayBuffer< edge > & | matching | ||
| ) |
Obtains a maximal matching in O(|E|) time.
| int ogdf::Matching::findMaximumCardinalityMatching | ( | const Graph & | G, |
| const List< node > & | U, | ||
| const List< node > & | V, | ||
| EdgeArray< bool > & | matching | ||
| ) |
Finds a maximum cardinality matching in the bipartite graph G = (U+V, E) in O(sqrt(|U+V|) * |E|) time by using the Hopcroft-Karp-Karzanov algorithm.
| G | the bipartite graph |
| U | all nodes in the first half of G |
| V | all nodes in the second half of G |
| matching | will hold the matching |
|
inline |
Checks in time O(|V| + size of matching) if the given set of edges represents a matching.
Definition at line 52 of file Matching.h.
|
inline |
Checks in time O(|E|) if there are edges that could be added to matching.
Definition at line 99 of file Matching.h.
|
inline |
Checks in O(|V| + |E|) time if matching is a maximal matching.
Definition at line 107 of file Matching.h.
|
inline |
Checks in O(1) if matching (assuming it is a matching and the graph is simple and connected) is perfect.
Definition at line 114 of file Matching.h.
|
inline |
Checks in O(|V| + size of matching) if matching is a perfect matching.
Definition at line 121 of file Matching.h.