# Matroid intersection algorithms

- Received:
- Revised:

DOI: 10.1007/BF01681329

- Cite this article as:
- Lawler, E.L. Mathematical Programming (1975) 9: 31. doi:10.1007/BF01681329

## Abstract

Let*M*_{1} = (*E*, 9_{1}),*M*_{2} = (*E*, 9_{2}) be two matroids over the same set of elements*E*, and with families of independent sets 9_{1}, 9_{2}. A set*I* ∈ 9_{1} ∩ 9_{2} is said to be an*intersection* of the matroids*M*_{1},*M*_{2}. An important problem of combinatorial optimization is that of finding an optimal intersection of*M*_{1},*M*_{2}. In this paper three matroid intersection algorithms are presented. One algorithm computes an intersection containing a maximum number of elements. The other two algorithms compute intersections which are of maximum total weight, for a given weighting of the elements in*E*. One of these algorithms is “primal-dual”, being based on duality considerations of linear programming, and the other is “primal”. All three algorithms are based on the computation of an “augmenting sequence” of elements, a generalization of the notion of an augmenting path from network flow theory and matching theory. The running time of each algorithm is polynomial in*m*, the number of elements in*E*, and in the running times of subroutines for independence testing in*M*_{1},*M*_{2}. The algorithms provide constructive proofs of various important theorems of matroid theory, such as the Matroid Intersection Duality Theorem and Edmonds' Matroid Polyhedral Intersection Theorem.