next | previous | forward | backward | up | index | toc

# isomorphism(Matroid,Matroid) -- computes an isomorphism between isomorphic matroids

## Synopsis

• Function: isomorphism
• Usage:
isomorphism(M, N)
• Inputs:
• M, ,
• N, ,
• Outputs:
• , an isomorphism between M and N

## Description

This method computes a single isomorphism between M and N, if one exists, and returns null if no such isomorphism exists.

The output is a HashTable, where the keys are elements of the groundSet of M, and their corresponding values are elements of (the ground set of) N.

To obtain all isomorphisms between two matroids, use getIsos.

 i1 : M = matroid({a,b,c},{{a,b},{a,c}}) o1 = a "matroid" of rank 2 on 3 elements o1 : Matroid i2 : isomorphism(M, uniformMatroid(2,3)) -- not isomorphic i3 : (M5, M6) = (5,6)/completeGraph/matroid o3 = (a "matroid" of rank 4 on 10 elements, a "matroid" of rank 5 on 15 ------------------------------------------------------------------------ elements) o3 : Sequence i4 : minorM6 = minor(M6, set{8}, set{4,5,6,7}) o4 = a "matroid" of rank 4 on 10 elements o4 : Matroid i5 : time isomorphism(M5, minorM6) -- used 0.0195278s (cpu); 0.0193402s (thread); 0s (gc) o5 = HashTable{0 => 1} 1 => 0 2 => 3 3 => 2 4 => 6 5 => 5 6 => 4 7 => 9 8 => 8 9 => 7 o5 : HashTable i6 : isomorphism(M5, M5) o6 = HashTable{0 => 0} 1 => 1 2 => 2 3 => 3 4 => 4 5 => 5 6 => 6 7 => 7 8 => 8 9 => 9 o6 : HashTable i7 : N = relabel M6 o7 = a "matroid" of rank 5 on 15 elements o7 : Matroid i8 : time phi = isomorphism(N,M6) -- used 18.8371s (cpu); 7.03909s (thread); 0s (gc) o8 = HashTable{0 => 11 } 1 => 0 2 => 1 3 => 6 4 => 9 5 => 8 6 => 5 7 => 12 8 => 7 9 => 3 10 => 10 11 => 4 12 => 2 13 => 13 14 => 14 o8 : HashTable