> ^ From:

< ^ Subject:

Dear forum,

Javaid Aslam asked:

I am trying to see if somebody has a routine for

factoring a given permutation cycle into a product of the

the transpositions (cycles of length 2);

e.g., the cycle (1,2,3,4) factors into (3,4)*(2,3)*(1,2).

a routine for this question was given by Burkhard.

Here is a function which decomposes a given permutation into

a product of two involutions (perms of order 2):

#F InvolutionFactors( perm )

#F returns a pair [x, y] of permutations such that

#F x*y = perm and x^2 = y^2 = (). The involutions

#F x and y move at most the points moved by perm.

#F

InvolutionFactors := function ( perm )

local x, y, c, n, i;

if not IsPerm(perm) then Error("<perm> must be a permutation"); fi; if OrderPerm(perm) <= 2 then return [ perm, () ]; fi;

x := (); y := (); for c in Cycles(perm, [1..LargestMovedPointPerm(perm)]) do n := Length(c); for i in [1..QuoInt(n-1, 2)] do x := x * (c[i], c[n-i]); od; for i in [1..QuoInt(n, 2)] do y := y * (c[i], c[n+1-i]); od; od; return [x, y]; end;

Maybe this is interesting for you too

Markus Pueschel,

Sebastian Egner

> < [top]