Classes | |
| struct | atlas::partition::End |
| class | atlas::partition::Partition |
| Partition of some set [0,n[ into classes. More... | |
| class | atlas::partition::PartitionIterator |
Functions | |
| template<typename F> | |
| void | makeOrbits (Partition &, const F &, unsigned long, unsigned long) |
Typically classes are orbits of a finite group (like a Weyl group) on a vector space over Z/2Z (like elements of order 2 in a torus).
|
||||||||||||||||||||||||
|
Constructs the orbit partition defined by the "action function" a. The type F is that of some function object that can be given a pair of unsigned long argument to produce an unsigned long result. The parameter a is such a function object; its first argument is the index i of a generator in the range [0,c[, its second argument is the value acted upon, which is an integer in the range [0,n[; the result is again a vlaue in the range [0,n[. It is assumed that for any fixed i, the function a(i,.) is a permutation of [0,n[; thus the action parameter a defines c generators of a permutation subgroup of Sym([0,n[). The orbits for this action are returned as a Partition object in pi. The algorithm is straightforward orbit generation, using a set B of elements that have not yet joined any orbit, and a collection S of elements that are in the current orbit but whose acted-upon images have yet to be generated. The set B is represented as a bitmap on [0,n[, initially full, while S is realized as a stack (but it could equally well have been a queue), initially empty. While B is not empty :
Definition at line 48 of file partition_def.h. References atlas::partition::Partition::addToClass(), atlas::partition::Partition::clear(), atlas::partition::Partition::newClass(), and atlas::partition::Partition::resize(). Referenced by atlas::cartanclass::Fiber::makeStrongReal(), and atlas::cartanclass::Fiber::makeWeakReal(). |
1.3.9.1