Permutations in Matgraph
The Matgraph package includes a permutation data type. Here we illustrate some of the features of that type.
Contents
Defining permutations
Permutations are created using the permutation function. The argument can either be a positive integer (in which case we create the identity permutation or a permuted version of 1:n.
p = permutation(6) q = permutation([1 5 2 4 6 3])
(1)(2)(3)(4)(5)(6) (1)(2,5,6,3)(4)
Random permutations
Applying the function random to a permutation scrambles its elements.
p = random(permutation(6))
(1,6)(2,3,5,4)
Applying a permutation to an element
If p is a permutation and k is an integer, then p(k) is the result of applying p to k.
disp(q(2)) % This should give 5 since q = (1)(2,5,6,3)(4)
5
Composition
Composition of permutations is given by the * operator.
p = permutation([2 3 4 6 1 5]) q p*q q*p
(1,2,3,4,6,5) (1)(2,5,6,3)(4) (1,2)(3)(4,6)(5) (1,5)(2)(3,4)(6)
Inverses
The inverse of a permutation can be calculated using inv.
inv(p) p * inv(p)
(1,5,6,4,3,2) (1)(2)(3)(4)(5)(6)
Powers
If p is a permutation and k is an integer, then p^k gives the k-fold composition of p with itself. k may be negative, giving a power of the inverse of p. So p^-1 is the same as inv(p).
p^3 p*p*p p^-1 inv(p)
(1,4)(2,6)(3,5) (1,4)(2,6)(3,5) (1,5,6,4,3,2) (1,5,6,4,3,2)
Conversion to an array
The array method converts a permutation back into an array.
disp(array(p));
2 3 4 6 1 5
Conversion into a list of cycles
The cycles method creates a MATLAB cell array containing the cycles of the permutation.
r = random(permutation(17)) cyc = cycles(r); for k=1:length(cyc) disp(['Cycle #', int2str(k), ' is ', int2str(cyc{k})]); end
(1,10,11,6,13,2,17,12,5,7)(3,8,9,4,14,16)(15) Cycle #1 is 1 10 11 6 13 2 17 12 5 7 Cycle #2 is 3 8 9 4 14 16 Cycle #3 is 15
Conversion into a permutation matrix
The matrix function converts a permutation into a permutation matrix.
q matrix(q)
(1)(2,5,6,3)(4) ans = 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0
See also
Here is a list of all the permutation methods.
methods permutation
Methods for class permutation: array inv mtimes sign cycles length ne size display matrix permutation subsref eq mpower random