# Graph Minor check

Are there any good algebraic/algorithmic tools available to check if a given graph $H$ is a minor of $G$ from the adjacency matrix of $G$?

-

There is a general implementation in Sage. However, the algorithm runtime grows exponentially in the size of $H$. If you have a particular small $H$ in mind, there may be more efficient implementations available.

EDIT: In the comments below, the OP clarifies that the only case of interest is $H=K_5$. For this special case, the best known algorithm is due to Bruce Reed and Zhentao Li, "Optimization and Recognition for K5-minor Free Graphs in Linear Time," LATIN 2008, LNCS 4957, pp. 206–215, 2008. Reed's website also has a draft paper with fuller algorithmic details. Unfortunately, this algorithm is very complicated and I don't know if it has been implemented; I'd recommend emailing the authors to ask.

By the way, if you find yourself having to write your own code, there is an earlier and simpler (though asymptotically less efficient) algorithm due to P. J. McGuinness and A. E. Kezdy, "Sequential and parallel algorithms to find $K_5$ minor," SODA 1992, pp. 206–215.

-
Isn't that even more true for particular large $H$ – Will Sawin Jul 12 '12 at 1:34
What I meant was that for a few special choices of $H$, there are ad hoc algorithms that do better than the general construction. – Timothy Chow Jul 12 '12 at 2:29
At present I am interested in only $H=K_{5}$. Would there be any algebraic/analytic tools? – Turbo Jul 12 '12 at 3:48

A polynomial time algorithm for this is given in

Robertson + Seymour, Graph minors. XIII. The disjoint paths problem, Journal of Combinatorial Theory, Series B, 63 (1995), pp. 65–110.

-
Just to be clear: this algorithm runs in polynomial time for a fixed minor, but not if you let that vary. – Henry Cohn Jul 11 '12 at 23:17
And the constants in the algorithm are astronomical powers of 2 – Gordon Royle Jul 11 '12 at 23:40
@gordon-royle: no argument from me... Is there a reasonable description of "practical" heuristics somewhere? – Igor Rivin Jul 12 '12 at 7:09
In case it wasn't clear, this is the algorithm that is implemented in the Sage code that I mentioned in my answer. – Timothy Chow Jul 12 '12 at 13:25