Fact-checked by Grok 2 weeks ago

Blossom algorithm

The Blossom algorithm, also known as Edmonds' matching algorithm, is a foundational polynomial-time method in for computing a in an undirected general , where a matching is a set of edges without common vertices, and the goal is to maximize the number of such edges. Unlike algorithms restricted to bipartite graphs, it handles non-bipartite structures by identifying and contracting odd-length cycles called blossoms, allowing the discovery of augmenting paths that increase the matching size. The algorithm proceeds iteratively: starting from an initial matching, it builds alternating trees rooted at free vertices to search for augmenting paths, shrinking blossoms as needed to simplify the until no further augmentation is possible, at which point the matching is maximum. Developed by and published in his 1965 paper "Paths, Trees, and Flowers," the algorithm builds on Claude Berge's 1957 work characterizing maximum matchings via the absence of augmenting paths, providing the first efficient solution for general graphs and proving the problem's solvability in polynomial time. Edmonds' approach not only solves the unweighted case but also laid groundwork for weighted variants, such as minimum-cost perfect matchings in complete graphs, which have applications in problems and . In terms of , the original formulation has a time bound of O(V²E), where V is the number of vertices and E the number of edges, but subsequent implementations, including those by Lawler (1976) and Gabow (1976), reduced it to O(V³), making it practical for moderate-sized graphs. Modern software like Blossom V, an efficient C++ implementation by Vladimir Kolmogorov (2009), further optimizes for weighted minimum-cost perfect matchings while maintaining the core shrinking mechanism and achieving comparable performance to earlier versions. The algorithm's significance endures in , influencing research in polyhedral and flows, as Edmonds connected maximum matchings to the vertices of a associated .

Background

Graph matching basics

In graph theory, an undirected graph G = (V, E) consists of a vertex set V and an edge set E, where edges connect pairs of vertices. A matching M \subseteq E in G is a subset of edges such that no two edges in M share a common vertex. A maximum matching in a is a matching that contains the largest possible number of edges among all matchings in that graph. A perfect matching is a special case of a maximum matching where every in V is incident to exactly one edge in the matching, which requires |V| to be even. The maximum matching problem seeks to find a maximum matching in an undirected G, a fundamental task with applications in and network design. Early foundational work on this problem for bipartite graphs was established by Dénes Kőnig in , who proved that the size of a maximum matching equals the minimum in such graphs.

Bipartite versus general matching

A is an undirected graph whose vertices can be divided into two such that no two graph vertices in the same set are adjacent. In such graphs, the size of a maximum matching equals the size of a minimum , as established by König's . This duality enables efficient algorithms for computing maximum matchings in s, including the Hungarian algorithm, which runs in O(n^3) time for n vertices, and the Hopcroft-Karp algorithm, which achieves O(\sqrt{n} m) time for m edges. In general graphs, however, König's theorem does not hold, and the size of a maximum matching can be strictly smaller than the size of a minimum —for instance, in a triangle graph, the maximum matching has size 1 while the minimum has size 2. Moreover, the presence of odd cycles in general graphs complicates the search for augmenting paths, as these structures can trap the search process without revealing all possible improvements to the matching. Berge's lemma provides a foundational characterization for general graphs: a matching is maximum if and only if no augmenting path exists with respect to that matching. This result underscores the need for algorithms that systematically handle cyclic structures in non-bipartite graphs to ensure completeness in finding augmenting paths.

Core Concepts

Augmenting paths

In , a matching M is a set of edges without common vertices. An augmenting path relative to a matching M in an undirected graph is a that starts and ends at unmatched vertices (also called free or exposed vertices) and whose edges alternate between those not in M and those in M; specifically, it begins and ends with an edge not in M. The presence of an augmenting path P allows the matching to be extended by taking the M \Delta P, which consists of all edges in M or P but not both. This operation flips the status of edges along P: unmatched edges become matched, and matched edges become unmatched, resulting in a new matching M' = M \Delta P whose size is exactly one greater than |M|, since P contributes one more unmatched edge than matched edges. Formally, |M \Delta P| = |M| + 1 for any augmenting path P relative to M. To illustrate, consider a u - v - w - x where u and x are unmatched, v-w is matched in M, and u-v, w-x are unmatched; flipping yields a matching with edges u-v and w-x, augmenting the size by one. In bipartite graphs, augmenting paths can be efficiently located using breadth-first search (BFS) or depth-first search (DFS) from free vertices in one part, following alternating edges without complications from cycles. This process repeatedly augments the matching until no such paths remain, yielding a maximum matching. The Tutte–Berge formula provides a global characterization of the maximum matching size in general graphs: for a graph G = (V, E) with n = |V|, the size of a maximum matching is \frac{1}{2} \min_{S \subseteq V} (n + |S| - o(G - S)), where o(G - S) denotes the number of odd-sized connected components in the subgraph induced by V \setminus S. This formula, established in 1958, equates the maximum matching size to half the minimum deficiency over all vertex subsets S.

Blossoms and odd cycles

In the context of maximum matching in general graphs, a is defined as an odd-length alternating with respect to a given matching M, consisting of $2k+1 for some k \geq 1, where exactly k edges belong to M, leaving one unmatched within the , known as the or . This structure arises specifically in non-bipartite graphs, where the presence of odd distinguishes the problem from bipartite matching. Odd cycles pose a significant challenge to the standard augmenting path method because they permit multiple alternating paths from a free vertex to converge on the same vertex, thereby violating the assumption of simple paths and potentially leading to incorrect or incomplete searches for augmentations. In particular, traversing an odd cycle in either direction can create the illusion of an augmenting path that does not truly increase the matching size, as the cycle's odd length ensures an imbalance in matched and unmatched edges incident to the base vertex. A key property of blossoms is their amenability to contraction, wherein the entire odd cycle is collapsed into a single supernode, preserving the equivalence of maximum matchings between the original and the contracted one. This contraction simplifies the graph structure without losing information about potential augmenting paths external to the blossom. In his seminal 1965 work, observed that to correctly identify true augmenting paths in general graphs, such blossoms must be systematically detected and shrunk, enabling the algorithm to proceed as if in a bipartite setting after handling these obstacles. For illustration, consider a 5-cycle (a with k=2) where vertices are labeled v_1, v_2, v_3, v_4, v_5 in sequence, with matched edges \{v_1, v_2\} and \{v_3, v_4\} in M, leaving v_5 as the free stem vertex connected by unmatched edges to v_1 and v_4. This configuration blocks straightforward path extension until contraction occurs. The concept of also connects to broader matching theory, as W. T. Tutte's 1947 characterizes the existence of perfect matchings in general graphs via a condition on odd components in barrier sets, with blossoms representing local manifestations of such structural barriers that Edmonds' approach resolves algorithmically.

Algorithm Mechanics

Overview of the procedure

The Blossom algorithm, developed by , aims to compute a in non-bipartite undirected graphs, where a matching is a set of edges without common , and maximum means the largest possible number of such edges. The input is an undirected graph G = (V, E), with V as the set and E as the edge set, and the output is a maximum matching M \subseteq E. Published in , this algorithm marked the first polynomial-time solution for the general matching problem, extending beyond bipartite cases that were solvable earlier via simpler methods. At a high level, the procedure operates iteratively: starting from an initial (possibly empty) matching M, it repeatedly searches for an augmenting relative to M—a that alternates between edges not in M and edges in M, connecting two unmatched vertices. If such a is found, the matching is augmented by flipping the edges along it (adding the non-matching edges and removing the matching ones), increasing the matching size by one. In non-bipartite s, searches may be blocked by odd cycles known as blossoms; the algorithm addresses this by contracting these blossoms into single vertices, effectively recursing on a modified to continue the search. This process repeats until no augmenting exists, at which point M is maximum. A skeletal pseudocode for the algorithm captures this iterative structure:
function BlossomAlgorithm(G = (V, E)):
    M ← ∅  // Initial empty matching
    while there exists an augmenting path P relative to M:
        augment M along P  // Flip edges in P to update M
        if blossom encountered during search:
            contract blossom and recurse on reduced graph
    return M
The key innovation lies in the blossom contraction mechanism, which enables efficient handling of odd cycles in general graphs, achieving an original time complexity of O(|V|^4).

Blossom detection and contraction

In the Blossom algorithm, blossoms are detected during the search for augmenting paths, which proceeds from (unmatched) vertices using a to build alternating paths in the graph relative to the current matching. Specifically, a blossom—an odd-length alternating cycle—is identified when a back edge connects two vertices at even distances from the in the search tree, indicating the presence of an odd cycle that obstructs the bipartite assumption. To manage the search structure, vertices are labeled as outer or inner based on their role in the alternating paths and contractions. Outer vertices include those that are unmatched or reached through previously identified augmenting paths, forming the "exposed" layer for continued search; inner vertices, conversely, lie within contracted blossoms and are treated as part of the supervertex to avoid revisiting the cycle's internal structure. This labeling ensures that the search alternates between matched and unmatched edges while respecting the contracted components. Upon detection, the blossom is contracted by shrinking the entire odd cycle into a single supervertex in a new auxiliary graph G', where the vertices of the cycle are merged while preserving the internal matching edges within the supervertex. Edges incident to the cycle are adjusted to connect to this supervertex: an edge between two cycle vertices becomes internal (and thus ignored for external search), while edges from outside the cycle attach to the supervertex. The contracted graph G' has a reduced matching M' that excludes the blossom's internal edges but maintains the overall matching size. This contraction preserves equivalence for augmenting path searches because any augmenting path in the original G corresponds to one in G', and vice versa; upon finding a path in G', it can be "lifted" or expanded back into G by traversing the blossom's alternating appropriately, ensuring the path remains augmenting. The process terminates when no further augmenting paths exist, with each contraction reducing the graph size by at least two vertices. Multiple blossoms are handled through nested and layered contractions, where newly detected blossoms may form within or around previously contracted ones, treated as a of supervertices during recursive searches. Each augmentation phase may involve up to O(n) contractions, but the overall bounds the total by polynomial time through careful expansion during path lifting.

Searching for augmenting paths

The search for augmenting paths in the Blossom algorithm begins with an exposed (unmatched) , which serves as the of an alternating . A (DFS) is employed to explore alternating paths, where vertices are labeled with even or odd based on their distance from the , ensuring the path alternates between matched and unmatched edges. This labeling adapts the bipartite case by building a forest rather than a single tree, allowing multiple exposed vertices to be roots and preventing cycles within individual trees. During the DFS traversal, unmarked incident to labeled vertices are examined. If an connects to an unlabeled exposed vertex, an augmenting is immediately found. Similarly, connecting to a vertex labeled even with a different yields an augmenting by combining the two even-length alternating paths from their roots. However, if the connects two vertices with the same and even labels, it indicates an odd-length alternating , known as a , which must be handled to continue the search. The search integrates blossom detection by identifying the formed by the from the to the two even-labeled vertices and the connecting . Upon detecting a blossom, the algorithm contracts it into a single supernode, typically the base (the odd-labeled closest to the in the ), reducing the while preserving the existence of augmenting paths. The search then recurses on this contracted , continuing the DFS from the appropriate point. This contraction temporarily simplifies the structure, allowing the exploration of alternating paths in the reduced without losing potential augmentations. Key data structures support this , including adjacency lists for efficient traversal, a matching array to track paired vertices, and blossom representatives to record contractions and maintain the of supernodes. If an augmenting is found in the contracted , an expansion phase lifts it back to the original . This involves traversing the contraction history in reverse order, selecting the appropriate base for each —specifically, the one that connects to the via an unmatched —and inserting the even-length alternating within the to preserve the augmenting property. The resulting in the original is then used to augment the matching by flipping matched and unmatched edges along it, increasing the matching size by one. The search procedure repeats from newly exposed vertices until no further augmenting path can be found, at which point the current matching is maximum, as per Berge's lemma generalized to non-bipartite graphs. Termination occurs when all exposed vertices have been processed without discovering a path or when the forest covers all possible alternating structures without blossoms yielding augmentations.

Examples and Illustrations

Bipartite matching walkthrough

Consider a simple with partite sets L = \{L_1, L_2, L_3\} and R = \{R_1, R_2, R_3, R_4\}, connected by the edges L_1-R_1, L_1-R_2, L_2-R_2, L_2-R_3, L_3-R_3, and L_3-R_4. The Blossom algorithm starts with an empty matching of size 0. In the first iteration, perform a BFS from the free vertices in L to find an augmenting path. An augmenting path is L_1-R_1, which alternates between unmatched and (trivially) matched edges. Augment the matching by including this edge, resulting in a matching of size 1: \{L_1-R_1\}. In the second iteration, BFS from the remaining free vertices in L identifies the path L_2-R_2. Augment by adding this edge, yielding a matching of size 2: \{L_1-R_1), L_2-R_2)\}. The current matching size has increased, and the previously free L_2 is now matched. In the third iteration, BFS uncovers the path L_3-R_3. Augmenting along this path produces a matching of size 3: \{L_1-R_1), L_2-R_2), L_3-R_3)\}. No further augmenting paths exist, as subsequent BFS searches from any remaining free vertices (none in L) terminate without reaching a free vertex in R. This example demonstrates the before-and-after progression: the initial empty matching grows incrementally via each augmenting path, with the final matching covering all vertices in L but leaving R_4 unmatched. In bipartite graphs, the Blossom algorithm encounters no blossoms, as the absence of odd cycles eliminates the need for detection and contraction; it reduces to standard augmenting path searches. This aligns with simpler bipartite methods like the . The result is a maximum matching of size 3 without any contractions. In the bipartite case, the algorithm achieves this in O(|V| \cdot |E|) time, with at most |V|/2 augmentations and each BFS taking O(|E|) time.

Non-bipartite example with blossom

Consider a representative non-bipartite graph with vertices s, a, b, c, t and edges s-a, a-b, b-c, c-a, c-t. The initial matching is M = \{a-b\}, leaving s, c, and t exposed. This setup features an odd cycle a-b-c-a) that forms a blossom during the search for an augmenting path. The algorithm begins the search for an augmenting path from the exposed vertex s using a layered alternating tree. Place s at layer 0 (even). From layer 0, traverse the unmatched edge s-a to reach a at layer 1 (odd). From layer 1, traverse the matched edge a-b to reach b at layer 2 (even). From layer 2, traverse the unmatched edge b-c to reach c at layer 3 (odd). At this point, from c (layer 3, odd), there is an unmatched edge c-a, where a is already in the tree at layer 1 (odd). Since both endpoints have odd parity, this detects a blossom: the odd cycle a-b-c-a) with base vertex a (the lowest-layer vertex in the cycle). To resolve the blossom, contract the cycle a-b-c into a single supervertex S. The contracted graph now has vertices s, S, t and edges s-S (from original s-a), S-t (from original c-t). The internal matching edge a-b is preserved within S, leaving S exposed in the contracted graph (as no external matched edges incident to the blossom vertices). Continue the search in this reduced graph from s at layer 0. Traverse the unmatched edge s-S to reach S at layer 1 (odd). Since S is exposed and reached at an odd layer, an augmenting path s-S is found. The original graph before contraction is shown below in simple ASCII representation:
  s --- a --- b
       |   /
       c /
        |
        t
Edges: s-a, a-b, b-c, c-a, c-t
Matched: a-b (solid), others unmatched (dashed implied).
The contracted graph:
  s --- S --- t
Supervertex S = {a,b,c}
Augment along s-S, increasing the matching size by 1 in the contracted graph. To expand back to the original graph, lift the supervertex S by replacing the path segment involving S with an alternating path in the blossom from the entry point (base a) to a free vertex within the blossom, ensuring overall alternation. The entry is at a via s-a (unmatched). Within the blossom, the alternating path from a (odd layer) to the free vertex c (odd layer) is a-b-c: matched a-b, unmatched b-c. Thus, the full augmenting path is s-a-b-c, with edges unmatched (s-a), matched (a-b), unmatched (b-c). Augment by flipping: add s-a and b-c, remove a-b. The new matching is M' = \{s-a), b-c\}, increasing the size from 1 to 2 despite the initial odd-cycle blockage. This process demonstrates the Blossom algorithm's success where simpler methods fail: the contraction allows discovering the path around the odd cycle, and expansion correctly adjusts the internal matching. Continuing iterations (e.g., from exposed t) would yield no further augmentation, confirming M' as maximum (size 2 for 5 vertices). The final augmented matching graph:
  s - a
       \
        b - c - t
Matched edges: s-a, b-c (solid).

Analysis and Properties

Time complexity

The original Blossom algorithm, as proposed by Edmonds, exhibits a of O(|V|^4), stemming from up to O(|V|) augmenting path searches, each taking O(|V|^3) time due to the naive handling of blossom contractions and path explorations in dense graphs. Subsequent implementations refined this to O(|V|^3) or O(|V|^2 |E|) by optimizing data structures for labeling and searching, but the fundamental bound remains quartic in the worst case for the basic procedure. Significant asymptotic improvements came with the Micali-Vazirani algorithm in 1980, achieving O(\sqrt{|V|} |E|) time by generalizing Hopcroft-Karp-style phase-based augmentations to handle multiple shortest augmenting paths simultaneously while efficiently managing through layered searches. This bound, equivalent to O(|E| \sqrt{|V|}), represents the best known theoretical complexity for in general graphs and incorporates ideas from bipartite matching to reduce the number of phases to O(\sqrt{|V|}). The breakdown highlights the searching for augmenting paths as the primary bottleneck, where each phase processes O(|E|) edges in O(\sqrt{|V|}) phases. Blossom detection and contraction operations are optimized using union-find-like data structures with path compression and union-by-rank, enabling near-constant time merges and finds for maintaining contracted components during searches. The is O(|V| + |E|), sufficient for adjacency lists, matching labels, and auxiliary trees without excessive overhead. Compared to the O(|E| \sqrt{|V|}) time of the Hopcroft-Karp algorithm for bipartite matching, the general Blossom variants are asymptotically slower due to the added complexity of odd cycles, yet they provide the first polynomial-time for non-bipartite graphs. No major asymptotic advancements have emerged since the , though practical implementations incorporate heuristics and refined data structures for better real-world performance on sparse graphs.

Correctness proof outline

The correctness of the Blossom algorithm, also known as Edmonds' matching algorithm, relies fundamentally on Berge's lemma, which states that a matching in a is maximum if and only if there exists no augmenting relative to that matching. The algorithm iteratively searches for augmenting paths and augments the matching upon finding one, halting when no such path exists in the current , thereby ensuring the final matching is maximum by Berge's lemma. A key invariant in the proof is that contractions of blossoms preserve the existence of augmenting paths: if an augmenting path exists in the original graph, a corresponding augmenting path exists in the contracted graph, and vice versa. This preservation holds because shrinking an odd-length alternating cycle (blossom) into a single vertex maintains the parity and connectivity properties necessary for path existence, allowing the search to proceed equivalently in the reduced graph. Blossom handling ensures no false augmenting paths are created during shrinking, as any path found in the contracted graph can be expanded back to a valid alternating path in the original graph without introducing cycles that violate matching properties. Upon detection of a blossom's tip, the algorithm contracts it, and when an augmenting path reaches the contracted vertex, expansion along the blossom's alternating cycle recovers the true augmenting path in the original structure. The proof proceeds by on the number of augmentations: each successful augmentation strictly increases the matching size by one, and the process terminates with no augmenting path, invoking Berge's lemma to confirm maximality. Since the algorithm starts from an empty or initial matching and augments until impossible, the final matching is maximum by the inductive application of Berge's characterization. The algorithm implicitly verifies the conditions of Tutte's theorem, which characterizes the existence of perfect matchings via the absence of Tutte sets (subsets where the number of odd components exceeds the set's size), as the failure to find an augmenting path corresponds to a barrier structure aligning with the Tutte-Berge formula for maximum matching size. Specifically, the proof in Edmonds' original work demonstrates that paths in the contracted lift correctly to the original, ensuring the algorithm's outputs satisfy the structural conditions for optimality.

Extensions and Applications

Weighted matching variants

The weighted maximum matching problem extends the unweighted Blossom algorithm to graphs with edge weights, seeking a matching that maximizes the sum of the weights of its edges. This formulation applies to real-valued weights and is central to optimization tasks where edge costs represent profits, similarities, or other quantitative measures. Edmonds developed the weighted variant of the Blossom algorithm in 1965, building on his earlier work for matching. The algorithm employs a primal- approach, introducing dual variables—node potentials \pi(v) for vertices v and set variables \mu(B) for blossoms B—to track optimality conditions. These potentials adjust reduced edge costs c_\pi(u,v) = c(u,v) + \pi(u) + \pi(v), ensuring non-negative costs in an auxiliary while maintaining feasibility. A key theoretical foundation is the of the matching , strengthened by blossom inequalities: for any odd-sized subset S of vertices with |S| = 2r + 1, the \sum_{e \in E(S)} x_e \leq r ensures integrality, where x_e are edge variables. The algorithmic structure mirrors the unweighted Blossom procedure but incorporates weight optimization through repeated shortest-path computations in the auxiliary graph. Augmenting paths are found using with potentials to efficiently handle reduced costs, followed by blossom detection and contraction as in the cardinality case. variables are updated after each augmentation to restore optimality, with the process repeating until no augmenting path exists. This yields a maximum-weight matching while satisfying the blossom inequalities at equality for the optimal solution. Unlike the unweighted algorithm, which focuses solely on , the weighted version accommodates negative weights through reductions to non-negative cases or direct handling in the primal-dual framework, enabling broader applications such as the in bipartite graphs. In the bipartite special case, it reduces to the , solving the linear efficiently. Early implementations run in O(|V|^4) time, but subsequent optimizations achieve O(|V|^3) time, where |V| is the number of vertices, with modern variants like Blossom V achieving similar or improved practical performance through optimized data structures such as Fibonacci heaps for Dijkstra searches.

Practical implementations

The Blossom algorithm has been implemented in several open-source libraries, enabling its use in practical computing environments. The Lemon graph library, written in C++, incorporates the Blossom V implementation, which computes maximum weight matchings in general s using priority queues and variable dual updates for efficiency. Similarly, the library NetworkX provides a Blossom-based solver via its max_weight_matching function, supporting unweighted and weighted cases for general s and integrating seamlessly with other graph analysis tools. Open-source implementations of the algorithm, including early variants, have been publicly available since the through repositories and graph software distributions. Optimizations in these implementations often draw from Gabow's refinement, which achieves O(|V|^3) through structured handling of and efficient path searches, making it suitable for graphs up to thousands of vertices. For small to medium graphs, representations are commonly employed to simplify blossom contraction and adjacency queries, trading space for faster access in dense cases. In applications, the algorithm supports pairing in molecular chemistry via dimer models, where it enumerates perfect matchings to model molecular dimer configurations on graphs. It also aids tasks like stereo matching by computing correspondences in non-bipartite feature graphs. In economics, extensions to the on general graphs leverage Blossom for finding stable matchings beyond bipartite settings. Additionally, bioinformatics uses it for RNA folding, where maximum matching predicts pseudoknot-free secondary structures by pairing complementary bases. Recent adaptations like Sparse Blossom (2025) apply the algorithm to by computing minimum-weight perfect matchings for syndrome decoding in surface codes. Scalability poses challenges for large graphs, as the cubic complexity limits exact solutions to instances with up to 10^4 vertices on standard hardware, prompting approximations such as the , which provides a 1/2-approximation, or (1-ε)-approximations running in near-linear time for graphs with millions of vertices. Recent developments post-2020 include parallel implementations integrated into frameworks, such as X-Blossom for accelerating in graph neural networks and economic analysis pipelines.

References

  1. [1]
    Blossom Algorithm -- from Wolfram MathWorld
    The blossom algorithm (Edmonds 1965) finds a maximum independent edge set in a (possibly weighted) graph. While a maximum independent edge set can be found ...
  2. [2]
    Paths, Trees, and Flowers | Canadian Journal of Mathematics
    Nov 20, 2018 · We describe an efficient algorithm for finding in a given graph a matching of maximum cardinality. This problem was posed and partly solved by C. Berge.
  3. [3]
    [PDF] A new implementation of a minimum cost perfect matching algorithm
    Since then, the worst-case complexity of the blossom algorithm has been steadily improving. Both Lawler [22] and Gabow [16] achieved a running time of O(n3), ...
  4. [4]
    [PDF] Lecture 1: Matchings on bipartite graphs 1 Basic Concepts
    An undirected graph G = (V,E) consists of a finite set V of vertices and a finite multi-set of unordered pairs E of edges. A loop is an edge of the form (v, ...
  5. [5]
    [PDF] Matching Theory - DTIC
    Let G be a finite undirected graph without loops or multiple lines. A set of lines. M C E(G) is a matching if no two share a common endpoint.
  6. [6]
    [PDF] NOTES ON MATCHING 1. Introduction and Definitions This paper ...
    A matching is maximum when it has the largest possible size. Note that for a given graph G, there may be several maximum matchings. Definition 1.4. The matching ...
  7. [7]
    [PDF] Introduction to Maximum Matching in Graphs
    Given a graph G = (V,E), M is a matching inG if it is a subset ofE such that no two adjacent edges share a vertex. C. Definition 3: M is a maximum matching if ...
  8. [8]
    [PDF] Math 301: Matchings in Graphs
    A perfect matching in a graph G is a matching in which every vertex of G appears exactly once, that is, a matching of size exactly n/2. Note that a perfect ...
  9. [9]
    Perfect Matching -- from Wolfram MathWorld
    A perfect matching of a graph is a matching (ie, an independent edge set) in which every vertex of the graph is incident to exactly one edge of the matching.
  10. [10]
    [PDF] 7 Graph Matchings I: Combinatorial Algorithms
    Another fundamental graph problem is to find matchings: these are subsets of edges that do not share endpoints. Matchings arise in var-.
  11. [11]
    [PDF] Chapter 7 7.5 Bipartite Matching - cs.Princeton
    [König 1916, Frobenius 1917] Every k-regular bipartite graph has a perfect matching. Pf. Size of max matching = value of max flow in G'. Consider flow: □ f ...
  12. [12]
    [PDF] Perfect Matchings in O(nlog n) Time in Regular Bipartite Graphs
    Jun 5, 2010 · Finding a matching in a regular bipartite graph is a well-studied problem, starting with the algorithm of König in 1916 [12], which is now known ...
  13. [13]
    A translation of "Graphok és matrixok" by Dénes Kőnig (1931) - arXiv
    Sep 5, 2020 · This paper, originally written in Hungarian by Dénes Kőnig in 1931, proves that in a bipartite graph, the minimum vertex cover and the maximum matching have ...
  14. [14]
    The Hungarian method for the assignment problem - Kuhn - 1955
    The “assignment problem” is the quest for an assignment of persons to jobs so that the sum of the n scores so obtained is as large as possible.
  15. [15]
    An $n^{5/2} $ Algorithm for Maximum Matchings in Bipartite Graphs
    The present paper shows how to construct a maximum matching in a bipartite graph with n vertices and m edges in a number of computation steps proportional to
  16. [16]
    [PDF] Matching Algorithms
    When the algorithm terminates, we have a matching M with no augmenting paths. ... The main problem is caused by odd cycles with a maximal number of matching.
  17. [17]
    [PDF] Matchings
    • An free vertex is a vertex that is not matched. • An augmenting path is an alternating path that starts and ends with a free vertex. • A shortest augmenting ...
  18. [18]
    [PDF] 6 Graph Matchings I: Combinatorial Algorithms
    Berge (1957) mum matching in graph G if and only if there are no M ... However, Berge's theorem does not imme- diately give an efficient algorithm ...Missing: original | Show results with:original
  19. [19]
    [PDF] Graph Matchings
    Forwards Proof: Follows by augmenting using path P. Let M' be P ∆ M, M' is a larger matching. Backwards Proof: Let M' be a larger matching than M.
  20. [20]
  21. [21]
    6 More on Graphs: Flows and Matchings
    We now show how to use the Augmenting Path Algorithm to efficiently find maximum matchings in bipartite graphs. Theorem 6.2. There exists an efficient algorithm ...<|control11|><|separator|>
  22. [22]
  23. [23]
    [PDF] 1 Matching in Non-Bipartite Graphs - Stanford CS Theory
    Now we come to the min-max relation for non-bipartite matchings, which is known as the Tutte-Berge formula. First, we formulate it in terms of exposed vertices ...
  24. [24]
    [PDF] Maximum Matching in graphs We describe Edmond's Matching ...
    Definition 2 A blossom with respect to a matching M is an odd cycle on say 2k + 1 vertices containing k edges of M. The unique vertex of the cycle with no ...
  25. [25]
    [PDF] Edmonds' Blossom Algorithm - Stanford University
    Jun 6, 2016 · Edmonds' Blossom algorithm is a polynomial time algorithm for finding a maximum matching in a graph. Definition 1.1. In a graph G, a matching ...
  26. [26]
    [PDF] 1 Matching in General Graphs 2 Edmond's Blossom Algorithm
    or graph with odd cycles. The general idea is to again use a modified BFS ... M-augmenting paths of increasing length. procedure MatchGraph(Graph G). M ...
  27. [27]
    [PDF] paths, trees, and flowers - jack edmonds
    PATHS, TREES, AND FLOWERS ... This theorem immediately suggests a polyhedron which in a subsequent paper (4) is shown to be the convex hull of the vectors ...
  28. [28]
    [PDF] Tutte-factorization-of-linear-graphs.pdf
    John's College,. Cambridge. THE FACTORIZATION OF LINEAR GRAPHS. W. T. TlTTTE*. 1. Introduction. We make use of the following definitions ...
  29. [29]
    [PDF] 1 Maximum matching in general graphs
    Apr 1, 2021 · By the easy Tutte-Berge formula (Claim 1.4), the min defect is at least oc(R(T))−|R(T)| ≥ 1. Thus, if we ever reach an alternating tree that is ...<|control11|><|separator|>
  30. [30]
    CS494 Lecture Notes - Edmonds' General Matching Algorithm (The ...
    Dec 4, 2017 · ... blossom: You turn that single node back into its original nodes with their odd-size cycle. If the size of the cycle is 2k+1, then you can ...
  31. [31]
    Finding and Contracting Blossoms - Algorithms II
    Based on Lemma 7.31, the search for an augmenting path in Edmonds's algorithm employs the following strategy: We inspect all edges of G. If we find ...
  32. [32]
    [PDF] Sketchy Notes on Edmonds' Incredible Shrinking Blossom Algorithm ...
    On finding an augmenting path, expand all blossoms in reverse order of shrinking, adding edges to the augmenting path to keep it an augmenting path after each.
  33. [33]
    Kuhn's Algorithm - Maximum Bipartite Matching
    Jul 17, 2023 · Berge's lemma¶. This lemma was proven by the French mathematician Claude Berge in 1957, although it already was observed by the Danish ...Missing: paper | Show results with:paper
  34. [34]
    [PDF] Lecture 4: Matching Algorithms for Bipartite Graphs
    P is an augmenting path, if P is an alternating path with a special property that its start and end vertex are free. For example, in graph G shown in the Fig ...
  35. [35]
    [PDF] Lectures on Nonbipartite Matchings
    Observe that M/B is a matching in G, because the definition of a blossom precludes the possibility that M contains more than one edge with one but not both ...
  36. [36]
    [PDF] Lecture 8: Non-bipartite Matching - NC State ISE
    Whenever a blossom B is detected, we “shrink" it by replacing the graph G with G ctr B.
  37. [37]
    [PDF] Eindhoven University of Technology BACHELOR An Efficient ...
    Apr 25, 2024 · While Edmonds initially proposed the algorithm with a O(n4) time complexity, further re- search has shown it can be implemented with a worst- ...
  38. [38]
    An Efficient Implementation of Edmonds' Algorithm for Maximum ...
    This paper presents an efficient implementation of Edmonds' algorithm for finding a maximum matching. The computation time is proportional to V 3.
  39. [39]
    An O(v|v| c - IEEE Xplore
    Abstract: In this paper we present an 0(√|V|·|E|) algorithm for finding a maximum matching in general graphs. This algorithm works in 'phases'.
  40. [40]
    Shared-Memory Parallel Edmonds Blossom Algorithm for Maximum ...
    Four of these ten attributes are the unionfind data structure used to maintain blossoms, with Union-by-rank and Find with path compression, providing O(log n) ...
  41. [41]
    [PDF] A Formal Correctness Proof of Edmonds' Blossom Shrinking Algorithm
    Abstract. We present the first formal correctness proof of Edmonds' blossom shrinking algorithm for maximum cardinality matching in general graphs.
  42. [42]
  43. [43]
    [PDF] Maximum matching and a polyhedron with 0,1-vertices
    The increase in difficulty of the maximum weight- sum matching algorithm relative to the size of the graph is not exponential, and only moderately algebraic.
  44. [44]
    [PDF] Research Statement - Yale Math
    My research is mainly in the area of combinatorics, and particularly what are called dimer models. This is the study of enumeration of perfect matchings of ...
  45. [45]
    [PDF] X-Blossom: Massive Parallelization of Graph Maximum Matching
    The time complexity of the sequential recursion-free blossom algorithm is O(V2E), where V is the number of vertices and. E is the number of edges. Proof. Since ...<|control11|><|separator|>
  46. [46]
    The stochastic stability of decentralized matching on a graph
    A variety of algorithms have been developed to solve this problem in polynomial time: among the most famous are the blossom algorithm (Edmonds, 1965) for ...
  47. [47]
    [PDF] RNA secondary structure prediction with convolutional neural ...
    Feb 1, 2022 · We solve this problem using the classical Blossom algorithm [20]. We used available implementations of the Blossom algorithm that do not support.
  48. [48]
    A 2/3-approximation algorithm for vertex-weighted matching
    Feb 15, 2022 · We show that this exact algorithm can be slow for many large graphs with millions of vertices and edges, and can even fail to terminate in 100 ...