Skip to main content

Edmonds' Algorithm

Edmonds' Algorithm is a method for finding a maximum matching in a graph, especially when the graph is not bipartite. In Combinatorics, it uses augmenting paths and blossom shrinking to keep improving the matching.

Last updated July 2026•Fiveable Content Team

What is Edmonds' Algorithm?

Edmonds' Algorithm is the graph-matching algorithm you use when you want the largest possible set of edges with no shared endpoints, especially in a general graph. In Combinatorics, that means it is solving a maximum matching problem, not just picking any matching that looks good.

The basic idea is familiar if you already know matching: start with a set of non-overlapping edges, then look for an augmenting path. An augmenting path is a path that alternates between edges not in the matching and edges already in the matching, and it begins and ends at unmatched vertices. When you flip the status of those edges, the matching gets bigger by one.

What makes Edmonds' Algorithm different is that general graphs can contain odd cycles that block the usual bipartite matching tricks. Those odd cycles are called blossoms. Instead of getting stuck, the algorithm contracts the blossom into a smaller super-vertex, keeps searching for an augmenting path in the simplified graph, and then expands the blossom back out after the path is found.

That blossom step is the big reason Edmonds' Algorithm matters. In a bipartite graph, you can often rely on simpler matching methods, but in a general graph you need a way to handle those odd-cycle obstacles. The algorithm turns a messy structure into a cleaner one without losing the matching information that matters.

A quick example makes the idea easier to see. Suppose you have a job assignment graph where people and tasks are connected by possible pairings, but some connections create an odd cycle. A plain greedy choice might get stuck early. Edmonds' Algorithm keeps searching for an augmenting path, compresses the odd cycle if needed, and keeps moving toward the maximum matching instead of settling for a smaller one.

In most combinatorics classes, you do not need to carry out the full algorithm by hand on a huge graph. You usually need to recognize what problem it solves, identify whether the graph is bipartite or general, and explain why augmenting paths and blossoms are the right tools.

Why Edmonds' Algorithm matters in COMBINATORICS

Edmonds' Algorithm shows up whenever a combinatorics problem is really asking for the best pairing under restrictions. That could be matching workers to tasks, pairing vertices in a network, or finding the largest set of independent edges in a graph without overlap.

It also gives you a clean example of how combinatorial optimization works. You are not counting all possibilities one by one. Instead, you use structure in the graph, first by growing a matching with augmenting paths and then by handling the hard case of odd cycles with blossom contraction.

This matters because a lot of graph problems look simple at first and then get harder as soon as you leave the bipartite setting. Edmonds' Algorithm is one of the standard tools that separates a basic matching idea from a full general-graph solution. If a homework problem asks why a bipartite method fails, this is usually where you point to the blossom.

It also connects directly to assignment-style questions. If a prompt describes a scheduling or pairing scenario and asks for the largest possible set of nonconflicting matches, you should be thinking about maximum matching rather than ordinary counting. Edmonds' Algorithm is the structure behind that move.

Keep studying COMBINATORICS Unit 14

Official unit cheatsheet

open one-pager

How Edmonds' Algorithm connects across the course

Matching

A matching is the object Edmonds' Algorithm is trying to maximize. The algorithm keeps selecting edges so that no two chosen edges share a vertex, then it searches for ways to add one more edge without breaking that rule. If you do not know what a matching is, the algorithm looks mysterious, but the goal is simply to make that edge set as large as possible.

Augmenting Path

Augmenting paths are the engine of the algorithm. Each time Edmonds' Algorithm finds one, it flips the matched and unmatched edges along the path to increase the size of the matching by one. A lot of matching problems in Combinatorics reduce to asking whether such a path exists, because if it does, the current matching was not maximum yet.

Bipartite Graph

Bipartite graphs are the easier setting for matching problems, because their two-part structure avoids odd cycles. Edmonds' Algorithm is most famous for handling general graphs, which means graphs that are not bipartite. If a problem is bipartite, you may be able to use a simpler method, but if odd cycles show up, Edmonds' Algorithm is the general tool.

job assignment problem

The job assignment problem is a classic application of maximum matching. You can model workers and jobs as vertices, connect compatible pairs with edges, and then look for the biggest set of assignments with no conflicts. Edmonds' Algorithm matters when that assignment graph is not neatly bipartite or when the problem is phrased as a general matching task.

Is Edmonds' Algorithm on the COMBINATORICS exam?

A graph theory problem set usually asks you to identify whether a matching is maximum, explain why an augmenting path would increase it, or choose the right algorithm for a general graph. If the graph is bipartite, you may compare Edmonds' Algorithm with simpler bipartite matching methods. If the graph has odd cycles, you should mention blossoms and explain why the general-graph case is harder.

On a quiz, you might be shown a small network and asked to trace one augmentation step or decide whether another matching is possible. The move is to check for unmatched vertices connected by an alternating path. If you can describe how contracting a blossom helps, that usually earns the full combinatorics reasoning credit.

Edmonds' Algorithm vs blossom algorithm

These are often used almost interchangeably, but the blossom algorithm refers to the odd-cycle handling idea inside Edmonds' method for general-graph matching. When people say Edmonds' Algorithm, they usually mean the full maximum-matching procedure that uses blossoms plus augmenting paths. If a question mentions odd cycles or contraction, it is pointing at the blossom part.

Key things to remember about Edmonds' Algorithm

  • Edmonds' Algorithm finds a maximum matching, which means the largest set of edges with no shared vertices.

  • It works by searching for augmenting paths and using them to increase the size of a current matching.

  • General graphs can contain odd cycles, so the algorithm uses blossom contraction to keep the search moving.

  • In Combinatorics, this algorithm is the standard answer when a matching problem is not limited to a bipartite graph.

  • When you see a scheduling or assignment problem, think about whether the graph model turns it into a maximum matching question.

Frequently asked questions about Edmonds' Algorithm

What is Edmonds' Algorithm in Combinatorics?

Edmonds' Algorithm is a method for finding a maximum matching in a graph, especially a general graph with odd cycles. It keeps improving a matching with augmenting paths and uses blossom contraction when the graph gets tricky. In Combinatorics, it shows up in graph matching and assignment problems.

How does Edmonds' Algorithm use augmenting paths?

It looks for a path that alternates between edges inside and outside the current matching, starting and ending at unmatched vertices. When such a path exists, you flip the edges along it and the matching grows by one. That is the main improvement step in the algorithm.

Is Edmonds' Algorithm only for bipartite graphs?

No, that is one of the main reasons it is so useful. Bipartite graphs are easier, but Edmonds' Algorithm is designed for general graphs, including graphs with odd cycles. The blossom step handles the case that simpler bipartite matching methods cannot.

How do I know when to use Edmonds' Algorithm on a problem?

Use it when a problem is asking for the largest possible set of non-overlapping pairings in a graph that is not clearly bipartite. If the question mentions odd cycles, blossoms, or a general matching problem, Edmonds' Algorithm is probably the right tool. It also fits assignment-style modeling questions.