Spaces:
Paused
Paused
| """ | |
| ************** | |
| Graph Matching | |
| ************** | |
| Given a graph G = (V,E), a matching M in G is a set of pairwise non-adjacent | |
| edges; that is, no two edges share a common vertex. | |
| `Wikipedia: Matching <https://en.wikipedia.org/wiki/Matching_(graph_theory)>`_ | |
| """ | |
| import networkx as nx | |
| __all__ = ["min_maximal_matching"] | |
| def min_maximal_matching(G): | |
| r"""Returns the minimum maximal matching of G. That is, out of all maximal | |
| matchings of the graph G, the smallest is returned. | |
| Parameters | |
| ---------- | |
| G : NetworkX graph | |
| Undirected graph | |
| Returns | |
| ------- | |
| min_maximal_matching : set | |
| Returns a set of edges such that no two edges share a common endpoint | |
| and every edge not in the set shares some common endpoint in the set. | |
| Cardinality will be 2*OPT in the worst case. | |
| Notes | |
| ----- | |
| The algorithm computes an approximate solution for the minimum maximal | |
| cardinality matching problem. The solution is no more than 2 * OPT in size. | |
| Runtime is $O(|E|)$. | |
| References | |
| ---------- | |
| .. [1] Vazirani, Vijay Approximation Algorithms (2001) | |
| """ | |
| return nx.maximal_matching(G) | |