Finding a maximum matching, or a maximum-weight matching, is a well-known problem, which has polynomial-time combinatorial algorithms. It can also be formulated as an integer linear program. In general, an integer linear program might require exponential time. However, the particular ILP corresponding to a maximum matching problem can be solved in polynomial time.
My question is: are there generic ILP solvers that can identify this special structure, and solve matching-related ILPs as fast as solvers that are specially written for matching (e.g. the ones in the Python networkx
library)?
The motivation for this question is that having a general ILP formulation allows us to easily add problem-specific constraints and modifications. For example, it is easy to solve one-to-many matching, or add other kinds of constraints, that are less easy to do with a specialized graph-matching solver. So the question is: how much do we "pay" for the added generality, in terms of run-time?