Martin Rubey
2008-09-21 18:57:21 UTC
I could say a few things about how to work with the new partition
refinement code, if there is interest.
refinement code, if there is interest.
Sure! And maybe a short demo as well. Here is a typical example of interest
to me and a student of mine. Fix a permutation group, let's say a subgroup of
S_10, and let it act on lists of length 10. Then generate all lists with 3
a', 2 b' and 5 c', up to isomorphisms.
So, actually you want (in Kerber's notation) elements ofto me and a student of mine. Fix a permutation group, let's say a subgroup of
S_10, and let it act on lists of length 10. Then generate all lists with 3
a', 2 b' and 5 c', up to isomorphisms.
G\\Y^X_{2,3,5}
(say: functions from X to Y with signature {2, 3, 5}), where
X = {0 1 2 3 4 5 6 7 8 9}
Y = {a b c}
and G is your permutation Group, acting on X.
In Kerber's book there is quite detailed description on how to go about
*exactly* this, but so far I have not really understood the connection to
Brendan Mc Kay's. Actually, Brendan Mc Kay himself writes in Isomorph-Free
Exhaustive Generation:
Most methods proposed for such problems can be classified into three types,
though the boundary between them is far from clear.
As I wrote before
http://groups.google.com/group/sage-combinat-devel/msg/849498b9479a7a70?hl=en
if we are able to solve this problem for a few species (most important being
k-subsets and set partitions), we can deal with many many objects, because the
Species constructors Times, Plus, Compose, FunctorialCompose can be described
just using these to species. I hurry to add that I have no idea at all how to
do set partitions under an arbitrary group action.
(And, for clarity, I should add that Nicolas' example is just a tiny bit more
general than subsets, but still within the scope of Kerber's methods. It just
happens that for Times I only need Subsets, not functions from X to {a,b,c}...)
Finally another datapoint:
For many examples, what Nicolas needs is already possible in the species code
of Ralf and myself. More precisely, we can generate the isotypes under the
group action of an arbitrary Young Subgroup (i.e., 2 a's, 3 b's, 5 c's) for
certain basic species (Set Partitions, k-Subsets, etc.) and *all* species you
can obtain from that using Times, Plus, Compose. Eg, binary forests with 2
labels "a", 3 labels "b" and 5 labels "c" should be roughly
macro {
CS == CombinatorialSpecies;
X == SingletonSpecies;
}
B(L: LabelType): CS L == Plus(X, Times(B,B))(L) add;
F(L: LabelType): CS L == Compose(SetSpecies, B)(L) add;
isomorphismTypes([a,a,b,b,b,c,c,c,c,c])$F(Symbol);
(but I didn't check. The compose part is the most tricky, obviously.)
Martin
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/