Permutations
Permutations are implemented as a structure with two
components: the first component codes the particular form, i.e.
whether we have the so-called list notation or the
well-known
cycle-notation. The second part contains the data,
it is a VECTORobject of INTEGERobject, the content
depends on the kind of information. At the moment there are two
kinds: VECTOR, which means the list-notation, and ZYKEL,
the cycle-notation. Further implementations are concerned
with elements of wreath products of the form S2 wr Sn, the
so-called hyperoctahedral groups (cf. the subsection on
barred permutations).
In both cases the numbering starts with 1, and not with
0. The type VECTOR means, that we store the images of
1 to n as a list, so at the ith position we have the
image of i+1, and if the type is ZYKEL, we store the permutation
as a product of cycles, the cycles are written in a form,
that the smallest entry comes first, and we store the cycle with
the biggest first entry first. So the two following
permutations are equal, the left hand side is the list-notation,
and the right hand side is the cycle-notation:
[2,3,6,10,5,7,4,9,8,1]=(8,9)(5)(1,2,3,6,7,4,10).
Internally both are a VECTORobjects of INTEGERobjects. So the
ZYKEL-type would be the INTEGER VECTOR
[8,9,5,1,2,3,6,7,4,10]
The type VECTOR is the default type of PERMUTATION objects.
Here is a table of the standard routines and macros which we shall
describe lower down to some detail:
NAME | MACRO | DESCRIPTION |
c_p_k | C_P_K | change_perm_kind |
c_p_s | C_P_S | change_perm_self |
s_p_k | S_P_K | select_perm_kind |
s_p_i | S_P_I | select_perm_ith_element |
s_p_ii | S_P_II | select_perm_ith_element_as_INT |
s_p_l | S_P_L | select_perm_length |
s_p_li | S_P_LI | select_perm_length_as_INT |
s_p_s | S_P_S | select_perm_self |
b_ks_p | |
m_ks_p | |
m_il_p |
|
Now we give more detailed descriptions of these routines.
harald.fripertinger@kfunigraz.ac.at,
last changed: November 19, 2001