====== BigObject Matroid ====== //from application [[..:matroid|matroid]]//\\ \\ A matroid on the set //{0,...,n-1}//. Here //n// is the same as ''[[..:matroid:Matroid#N_ELEMENTS |N_ELEMENTS]]''. ? Permutations: : ? BasesPerm: :: permuting the ''[[..:matroid:Matroid#BASES |BASES]]'' ? HyperplanePerm: ::UNDOCUMENTED ===== Properties ===== ==== Advanced properties ==== More complex properties of the matroid. ---- {{anchor:automorphism_group:}} ? **''AUTOMORPHISM_GROUP''** :: The automorphism group of the matroid, operating on the ground set. ? Type: :''[[..:group:Group |Group]]'' ---- {{anchor:beta_invariant:}} ? **''BETA_INVARIANT''** :: The coefficient of x of the Tutte polynomial ? Type: :''[[..:common#Integer |Integer]]'' ---- {{anchor:binary:}} ? **''BINARY''** :: Whether the matroid is representable over GF(2) ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:binary_vectors:}} ? **''BINARY_VECTORS''** :: If the matroid is realizable over the field GF(2) with two elements, this property contains coordinates for some realization. ? Type: :''[[..:common#Matrix |Matrix]]<[[..:common#Int |Int]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:catenary_g_invariant:}} ? **''CATENARY_G_INVARIANT''** :: This is an equivalent characterization of the ''[[..:matroid:Matroid#G_INVARIANT |G_INVARIANT]]'' given by Bonin and Kung ([Bonin, Kung: The G-invariant and catenary data of a matroid (2015)]). It lives in the free abelian group over all (n,r)-compositions (where n = ''[[..:matroid:Matroid#N_ELEMENTS |N_ELEMENTS]]'' and r = ''[[..:matroid:Matroid#RANK |RANK]]''). Those are sequences (a0,...,ar) with a0 >= 0, a_j > 0 for j > 0 and sum a_i = n For each maximal chain of flats F0,...,Fr = E of M, the corresponding composition is a0 = |F0| and a_i = |Fi \ Fi-1| for i > 0. For a composition a, let v(M,a) be the number of maximal chains of flats with composition a. Then G(M) := sum_a v(M,a) * a, where the sum runs over all compositions a. ? Type: :''[[..:common#Map |Map]]<[[..:common#Vector |Vector]]<[[..:common#Int |Int]]>,[[..:common#Integer |Integer]]>'' ---- {{anchor:connected:}} ? **''CONNECTED''** :: Whether the matroid is connected ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:connected_components:}} ? **''CONNECTED_COMPONENTS''** :: The connected components ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:f_vector:}} ? **''F_VECTOR''** :: The f-vector of a matroid ? Type: :''[[..:common#Vector |Vector]]<[[..:common#Integer |Integer]]>'' ---- {{anchor:g_invariant:}} ? **''G_INVARIANT''** :: The G-invariant of the matroid (see [Derksen: Symmetric and quasi-symmetric functions associated to polymatroids, J. Algebr. Comb. 30 (2009), 43-86]) We use the formulation by Bonin and Kung in [Bonin, Kung: The G-invariant and catenary data of a matroid (2015)]: The G-invariant is an element of the free abelian group over all (n,r)-sequences (where n = ''[[..:matroid:Matroid#N_ELEMENTS |N_ELEMENTS]]'' and r = ''[[..:matroid:Matroid#RANK |RANK]]''), i.e. 0/1-sequences (r_1,...,r_n), where exactly r entries are 1. We identify each such sequence with its support, i.e. the set of entries equal to 1, so the G-invariant can be represented as a map which takes an r-set to the coefficient of the corresponding (n,r)-sequence. The formal definition goes as follows: For each permutation p on n, we define a sequence r(p) = (r_1,...,r_n) by r_1 = rank({p(1)}) and r_j = rank( {p(1),...,p(j)}) - rank( {p(1),...,p(j-1)}). Then G(M) := sum_p r(p), where the sum runs over all permutations p. ? Type: :''[[..:common#Map |Map]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]>,[[..:common#Integer |Integer]]>'' ---- {{anchor:h_vector:}} ? **''H_VECTOR''** :: The h-vector of a matroid ? Type: :''[[..:common#Vector |Vector]]<[[..:common#Integer |Integer]]>'' ---- {{anchor:identically_self_dual:}} ? **''IDENTICALLY_SELF_DUAL''** :: Whether the matroid is equal to its dual. Note that this does not check for isomorphy, if you want to check whether the matroid is isomorphic to its dual, ask for ''[[..:matroid:Matroid#SELF_DUAL |SELF_DUAL]]''. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:laminar:}} ? **''LAMINAR''** :: Whether the matroid is laminar. This is the case if and only if for any two circuits C1,C2 with non-empty intersection, their closures are comparable (i.e. one contains the other) see also [Fife, Oxley: Laminar matroids. arXiv: 1606.08354] ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:loops:}} ? **''LOOPS''** :: Loops ? Type: :''[[..:common#Set |Set]]<[[..:common#Int |Int]]>'' ---- {{anchor:maximal_transversal_presentation:}} ? **''MAXIMAL_TRANSVERSAL_PRESENTATION''** :: If the matroid is transversal, this is the unique maximal presentation. I.e. the set system consists of ''[[..:matroid:Matroid#RANK |RANK]]'' many sets and none of the sets can be increased without changing the matroid. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:nested:}} ? **''NESTED''** :: Whether the matroid is nested, i.e. its ''[[..:matroid:Matroid#LATTICE_OF_CYCLIC_FLATS |LATTICE_OF_CYCLIC_FLATS]]'' is a chain. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:n_connected_components:}} ? **''N_CONNECTED_COMPONENTS''** :: The number of ''[[..:matroid:Matroid#CONNECTED_COMPONENTS |CONNECTED_COMPONENTS]]'' ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:paving:}} ? **''PAVING''** :: Whether the matroid is paving ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:polytope:}} ? **''POLYTOPE''** :: Polytope whose vertices are the characteristic vectors of the bases. ? Type: :''[[..:polytope:Polytope |Polytope]]<[[..:common#Rational |Rational]]>'' ---- {{anchor:regular:}} ? **''REGULAR''** :: Whether the matroid is representable over every field, that is the repesentation is unimodular. NOTE: the property is 'undef' when it's hard to decide whether the matroid is ternary. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:revlex_basis_encoding:}} ? **''REVLEX_BASIS_ENCODING''** :: A string listing the bases in revlex order. A '*' means the basis is present, a '0' that it is absent ? Type: :''[[..:common#String |String]]'' ---- {{anchor:self_dual:}} ? **''SELF_DUAL''** :: Whether the matroid is isomorphic to its dual If you want to check whether it is actually equal (not just isomorphic), ask for ''[[..:matroid:Matroid#IDENTICALLY_SELF_DUAL |IDENTICALLY_SELF_DUAL]]''. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:series_parallel:}} ? **''SERIES_PARALLEL''** :: Whether the matroid is series-parallel ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:simple:}} ? **''SIMPLE''** :: Whether the matroid is simple. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:sparse_paving:}} ? **''SPARSE_PAVING''** :: Whether the matroid is sparse_paving, i.e both the matroid and it's dual are paving ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:split:}} ? **''SPLIT''** :: Whether all SPLIT_FLACETS in the matroid are compatible. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:split_flacets:}} ? **''SPLIT_FLACETS''** :: The flats that correspond to split facets of the matroid ''[[..:matroid:Matroid#POLYTOPE |POLYTOPE]]''. The facets are either hypersimplex facets or splits ? Type: :''[[..:common#Array |Array]]<[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%>'' ---- {{anchor:ternary:}} ? **''TERNARY''** :: Whether the matroid is representable over GF(3) NOTE: the property may be 'undef' if the current implementation cannot decide. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:ternary_vectors:}} ? **''TERNARY_VECTORS''** :: If the matroid is realizable over the field GF(3) with three elements, this property contains coordinates for some realization. ? Type: :''[[..:common#Matrix |Matrix]]<[[..:common#Int |Int]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:transversal:}} ? **''TRANSVERSAL''** :: Whether the matroid is transversal, i.e. has a transversal presentation. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:tutte_polynomial:}} ? **''TUTTE_POLYNOMIAL''** :: The Tutte polynomial of a matroid. It is a polynomial in the two variables x and y, which are chosen such that the tutte polynomial of a single coloop is x and the tutte polynomial of a single loop is y. ? Type: :''[[..:common#Polynomial |Polynomial]]<[[..:common#Rational |Rational]],[[..:common#Int |Int]]>'' ---- {{anchor:uniform:}} ? **''UNIFORM''** :: Whether the matroid is a uniform matroid ? Type: :''[[..:common#Bool |Bool]]'' ---- ==== Axiom systems ==== These are properties that form (part of) an axiom system defining a matroid. Most of these can be used to create a matroid. ---- {{anchor:bases:}} ? **''BASES''** :: Subsets of the ground set which form the bases of the matroid. Note that if you want to define a matroid via its bases, you should also specify ''[[..:matroid:Matroid#N_ELEMENTS |N_ELEMENTS]]'', because we allow matroids with loops. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:circuits:}} ? **''CIRCUITS''** :: Circuits, i.e., minimal dependent sets. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:lattice_of_cyclic_flats:}} ? **''LATTICE_OF_CYCLIC_FLATS''** :: The lattice of cyclic flats of the matroid. A flat is a cyclic flat, if and only if it is a union of circuits. Their ranks can also be read off of this property using nodes_of_dim(..) ? Type: :''[[..:graph:Lattice |Lattice]]<[[..:graph#BasicDecoration |BasicDecoration]],[[..:graph#Sequential |Sequential]]>'' ---- {{anchor:lattice_of_flats:}} ? **''LATTICE_OF_FLATS''** :: The lattice of flats. This is a graph with all closed sets as nodes and inclusion relations as edges. ? Type: :''[[..:graph:Lattice |Lattice]]<[[..:graph#BasicDecoration |BasicDecoration]],[[..:graph#Sequential |Sequential]]>'' ---- {{anchor:matroid_hyperplanes:}} ? **''MATROID_HYPERPLANES''** :: Hyperplanes, i.e. flats of rank RANK-1. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:non_bases:}} ? **''NON_BASES''** :: All subsets of the ground sets with cardinality ''[[..:matroid:Matroid#RANK |RANK]]'' that are not bases. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- ==== Duality ==== properties related to duality and dual properties. ---- {{anchor:dual:}} ? **''DUAL''** :: The dual matroid. ? Type: :''[[..:matroid:Matroid |Matroid]]'' ---- ==== Enumerative properties ==== These are properties of a matroid that count something. ---- {{anchor:n_automorphisms:}} ? **''N_AUTOMORPHISMS''** :: The order of the ''[[..:matroid:Matroid#AUTOMORPHISM_GROUP |AUTOMORPHISM_GROUP]]'' of the matroid. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_bases:}} ? **''N_BASES''** :: The number of ''[[..:matroid:Matroid#BASES |BASES]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_circuits:}} ? **''N_CIRCUITS''** :: The number of ''[[..:matroid:Matroid#CIRCUITS |CIRCUITS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_cyclic_flats:}} ? **''N_CYCLIC_FLATS''** :: The number of cyclic flats, i.e. the number of nodes in ''[[..:matroid:Matroid#LATTICE_OF_CYCLIC_FLATS |LATTICE_OF_CYCLIC_FLATS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_elements:}} ? **''N_ELEMENTS''** :: Size of the ground set. The ground set itself always consists of the first integers starting with zero. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_flats:}} ? **''N_FLATS''** :: The number of flats, i.e. the number of nodes in ''[[..:matroid:Matroid#LATTICE_OF_FLATS |LATTICE_OF_FLATS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_loops:}} ? **''N_LOOPS''** :: The number of ''[[..:matroid:Matroid#LOOPS |LOOPS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_matroid_hyperplanes:}} ? **''N_MATROID_HYPERPLANES''** :: The number of ''[[..:matroid:Matroid#MATROID_HYPERPLANES |MATROID_HYPERPLANES]]'' ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:rank:}} ? **''RANK''** :: Rank of the matroid, i.e., number of elements in each basis. ? Type: :''[[..:common#Int |Int]]'' ---- ==== Input properties ==== These are properties that can be used to define a matroid, but do not actually constitute an axiom system. ---- {{anchor:transversal_presentation:}} ? **''TRANSVERSAL_PRESENTATION''** :: A transversal matroid can be defined via a multiset of subsets of the ground set (0,...,n-1) (i.e. ''[[..:matroid:Matroid#N_ELEMENTS |N_ELEMENTS]]'' needs to be specified). Its bases are the maximal matchings of the bipartite incidence graph. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:vectors:}} ? **''VECTORS''** :: If the matroid is realizable over the rationals, this property contains coordinates for some realization. Specifying coordinates is one way to define a matroid. ? Type: :''[[..:common#Matrix |Matrix]]<[[..:common#Rational |Rational]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- ==== Other ==== Special purpose properties. ---- {{anchor:labels:}} ? **''LABELS''** :: Unique names assigned to the elements of the matroid. For a matroid built from scratch, you should create this property by yourself. the labels may be assigned for you in a meaningful way. If you build the matroid with a construction client, (e.g. ''[[..:matroid#matroid_from_graph |matroid_from_graph]]'') the labels may be assigned for you in a meaningful way. ? Type: :''[[..:common#Array |Array]]<[[..:common#String |String]]>'' ---- ===== Methods ===== ==== Advanced properties ==== More complex properties of the matroid. ---- {{anchor:cotransversal:}} ? **''COTRANSVERSAL''** :: Whether the dual of the matroid is transversal, i.e. same as ''[[..:matroid:Matroid#TRANSVERSAL |TRANSVERSAL]]'' ---- {{anchor:strict_gammoid:}} ? **''STRICT_GAMMOID''** :: Alias for ''[[..:matroid:Matroid#COTRANSVERSAL |COTRANSVERSAL]]'' ---- {{anchor:is_isomorphic_to:}} ? **''is_isomorphic_to([[..:matroid:Matroid |Matroid]] M)''** :: ? Parameters: :: ''[[..:matroid:Matroid |Matroid]]'' ''M'' ? Returns: :''[[..:common#Bool |Bool]]'' ---- ==== Axiom systems ==== These are methods that form (part of) an axiom system defining a matroid. Most of these can be used to create a matroid. ---- {{anchor:cocircuits:}} ? **''COCIRCUITS''** :: ---- {{anchor:coloops:}} ? **''COLOOPS''** :: ---- {{anchor:rank:}} ? **''rank()''** :: calculate the rank of a set with respect to a given matroid ? Returns: :''[[..:common#Int |Int]]'' ---- ==== Enumerative properties ==== These are methods of a matroid that count something. ---- {{anchor:n_cocircuits:}} ? **''N_COCIRCUITS''** :: ---- {{anchor:n_coloops:}} ? **''N_COLOOPS''** :: ----