This method performs relatively quick tests to determine whether or not two matroids are isomorphic. A result of "false" is definitive proof that the matroids are not isomorphic, a result of "true" is definitive proof that the matroids are isomorphic, and a result of "Could be isomorphic" is strong evidence that the matroids may be isomorphic.
If "true" or "false" is returned, use value to convert to a Boolean.
i1 : M1 = matroid(toList(a..z)/toString,{{"m","a","t","r","o","i","d"}}) o1 = a matroid of rank 7 on 26 elements o1 : Matroid |
i2 : M2 = matroid(toList(0..25), {{random(ZZ),23,15,12,19,20,11}}) o2 = a matroid of rank 7 on 26 elements o2 : Matroid |
i3 : quickIsomorphismTest(M1, M2) At most 1 basis/nonbasis/circuit o3 = true |
i4 : quickIsomorphismTest(matroid random(ZZ^5,ZZ^8), uniformMatroid(5, 8)) Matroids are equal o4 = true |
i5 : quickIsomorphismTest(uniformMatroid(5, 9), uniformMatroid(4, 9)) o5 = false |
i6 : M1 = matroid graph({{a,b},{b,c},{c,d},{d,e},{e,f},{f,g},{f,h},{c,h},{c,f},{a,g},{d,g}}) o6 = a matroid of rank 7 on 11 elements o6 : Matroid |
i7 : M2 = matroid graph({{a,b},{b,c},{c,d},{d,e},{e,f},{f,g},{f,h},{c,h},{c,f},{a,g},{a,h}}) o7 = a matroid of rank 7 on 11 elements o7 : Matroid |
i8 : R = ZZ[x,y]; tuttePolynomial(M1, R) == tuttePolynomial(M2, R) o9 = true |
i10 : time quickIsomorphismTest(M1, M2) -- used 0.21792 seconds o10 = false |
i11 : value oo === false o11 = true |