マトロイド交叉(交差)問題 (matroid intersection)・共通独立集合問題とは,同じ台集合 $E$ を持つ二つのマトロイド
$M_{1} = (E, \mathcal{I}_{1}), M_{2} = (E, \mathcal{I}_{2})$ が与えられたとき,$X \in \mathcal{I}_{1} \cap \mathcal{I}_{2}$ を満たす要素数最大の $X \subset E$ の一つを求めるもの.本問題は更に,重み関数 $f(e) : E \rightarrow \mathbb{R}$ が与えられたとき,要素数最大のもののうち特に $\sum_{e \in X} f(e)$ を最小化(最大化)するようなものを求める重みつき共通独立集合問題 (weighted matroid intersection problem) に一般化される.
本コードは,$n = |E|$,解となる集合の要素数の上界(例えば各マトロイドのランクの最小値)を $r$,マトロイドクラスのサーキットクエリ一回あたりの計算量を $c$ として,(重みなしの)マトロイド交叉を $O(nr(n + c))$ で求める.重みつきの場合は最短増加路を求めるパートが Bellman-Ford 法に置き換えられ,計算量は $O(nr(n^2 + c))$ となる(この計算量は例えば [2] のアルゴリズムを用いることで $O(nr(r + c + \log n))$ まで改善可能).