Test conjectures on -partitions over submodular functions
This article considers tools one can use to quickly test conjectures. I work in combinatorial optimization, and often there are cases where one can phrase a problem as a conjecture over a finite domain. Testing conjectures using brute force quickly becomes infeasible due to combinatorial explosion. Here, we walk through an actual example and learn a few techniques. We will use Sage and any fast linear program solver, such as Gurobi.
1 A conjecture on -partitions of a submodular function
A collection of non-empty, pairwise disjoint sets whose union is is called a -partition of .
Let be a submodular function. A minimum -partition is a -partition of such that is minimized; that is, the sum of the function values over the parts is minimized.
A -partition and a -partition are noncrossing if there exist and such that . We denote this relation by .
Let be a submodular function with . Let be a minimum -partition. Then there exists a minimum -partition such that .
One way to prove the conjecture is to start with a minimum -partition that does not have the desired property, and then use it to construct a new minimum -partition that does. This requires introducing a few additional notions.
For two partitions and , define That is, the new partition is obtained by intersecting every part of with every part of .
For two partitions and , write if for each there exists such that . If , then every part of is the union of some parts of .
Now consider the following stronger conjecture, which implies the previous one.
Let be a submodular function with . Let be a minimum -partition, and let be a minimum -partition. Then there exists a minimum -partition such that and .
We are interested in writing a program to test the stronger conjecture for small .
One can first consider all possible ways can intersect with . A matrix encoding how intersects with is called a configuration. For each configuration, we want to know: under that configuration, can we find the desired ?
2 Enumerate non-isomorphic configurations
Given and , let
We want to show that some minimum -partition satisfies .
Observe that it does not matter whether contains vertices or vertex – only whether it is empty. Hence, we can consider a matrix where Such a matrix is called a configuration of , and it encodes the information we care about. and is called a realization of . The goal is to prove the conjecture for each configuration. That is, all realizations of the configuration.
Two configurations are isomorphic if one can be obtained from the other by permuting rows and columns.
We are interested in enumerating possible configurations up to isomorphism.
This is the same as enumerating -matrices modulo the action of a permutation group. This part can be done in Sage. There is a function that generates all integer vectors modulo a permutation group; the vectors have length with elements in . See the reference on Integer vectors modulo the action of a permutation group.
IntegerVectorsModPermutationGroup(P, max_part=1)
Once we have the output, we filter it to obtain valid configurations. For example, a configuration must have at least one in each row.
The Sage function requires the permutation group defining the desired equivalence.
One might think we can take to obtain , where is the symmetric group on letters. Unfortunately, this is not correct: it describes the action on rows and columns, but we need the induced action on the entries of the matrix.
The correct way is to use wreath products. We want .
However, we must ensure that the element labeling is consistent. The
following is Sage code where the elements are labeled to .
We ensure the same labeling via the permutation pi.
a = SymmetricGroup(k-1)
b = SymmetricGroup(k)
matrix = [[k*x+y+1 for y in range(k-1)] for x in range(k)]
pi = list(itertools.chain.from_iterable(map(list, zip(*matrix))))
# we have to use SAGE to access GAP
GG = gap.WreathProduct(gap(a),gap(b))
HH = gap.WreathProduct(gap(b),gap(a))
G = PermutationGroup(gap_group = GG.AsPermGroup())
Hbad = PermutationGroup(gap_group = HH.AsPermGroup())
# make sure the elements are labelled correctly.
H = PermutationGroup([perm_replace(pi,g) for g in Hbad.gens()])
# The correct permutation group
P = H.intersection(G)
At this point, we obtain all matrices, some of which correspond to configurations. In particular, for , the numbers of configurations are .
If we restrict to matrices with at least one in each row and at least one in each column, this reduces the counts to . These are valid configurations.
We can further observe that for some configurations, we already have , so we do not have to check them. Let us call the remaining configurations good. The numbers of good configurations for are .
3 Test if there exists a noncrossing for a configuration
Fix a configuration . We now construct a linear program to decide whether there always exists a minimum -partition that is noncrossing with the minimum -partition . For a given , one can recover (a minimal) and that realize . It is easy to see that if our argument works for these particular and , it works for all and realizing .
Let be the vertex set, with equal to the number of ’s in . Let be the set of -partitions of . For each , create a variable representing the value , and also create a variable .
For a partition , write .
Consider the following linear program:
The first set of constraints are the submodular inequalities, which enforce that for some submodular function . The next constraints enforce that is a minimum -partition and is a minimum -partition. We normalize the optimal -partition value to be . Finally, among all -partitions that are noncrossing with , the variable is a lower bound on their objective values.
If the optimal value is , then there exists at least one -partition that is noncrossing with and has the same value as the minimum -partition. Therefore, the conjecture holds if and only if for every configuration , the above linear program has optimum .
4 Redundant constraints
One can easily prove the conjecture for by directly solving the above linear program over all good configurations. However, it becomes difficult for because the linear program is far too large. The number of -partitions of an -element set is the Stirling number of the second kind : It seems many constraints are redundant due to symmetry, and it would be interesting to see if we can reduce the formulation to a manageable size. If so, the conjecture for , or even , might become solvable.
To do this, consider the following definition. For a vector , say that a family of -partitions is -complete if where is a -partition with . By the previous discussion, we only need to consider the case .
Let be the minimum size of an -complete family. Instead of including constraints for all -partitions, it suffices to include constraints for an -complete family (for the relevant ). If is small for all relevant , there is hope to solve the problem quickly.
As an example, we show a simple bound on .
.
Let consist of and elements, respectively.
Consider the following family : for each non-empty set such that either or , include the partition in . Also include itself in .
Thus, .
Next, we show that is -complete. Consider any and its intersection with . Let .
Let and . Then and . Consider the case where all are non-empty. Then which implies .
Otherwise, if some is empty, then necessarily .
Currently, I do not know much about in general, so let us look at a special case. Define where is repeated times. It would be very interesting to understand how large is, especially . If is small, then there is hope of solving the conjecture for .
In particular, because we see , I would conjecture .