# Class Permutation

java.lang.Object
org.openscience.cdk.group.Permutation

public final class Permutation extends Object
A permutation with some associated methods to multiply, invert, and convert to cycle strings. Much of the code in this was implemented from the C.A.G.E.S. book [Kreher, Donald and Stinson, Douglas, Combinatorial Algorithms Generation Enumeration and Search, 1998, CRC Press].
Author:
maclean
Belongs to CDK module:
group
• ## Constructor Summary

Constructors
Constructor
Description
`Permutation(int size)`
Constructs an identity permutation with `size` elements.
`Permutation(int... values)`
Make a permutation from a set of values such that p[i] = x for the value x at position i.
`Permutation(Permutation other)`
Construct a permutation from another one by cloning the values.
• ## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(Object other)`
`int`
`firstIndexOfDifference(Permutation other)`
Find an r such that this[r] != other[r].
`int`
`get(int index)`
Get the value at this index.
`List<Integer>`
`getOrbit(int element)`
Get all the elements in the same orbit in the permutation (unsorted).
`int[]`
`getValues()`
Get all the values as an array.
`int`
`hashCode()`
`Permutation`
`invert()`
Invert the permutation, so that for all i : inv[p[i]] = i.
`boolean`
`isIdentity()`
Check to see if this permutation is the identity permutation.
`Permutation`
`multiply(Permutation other)`
Multiply this permutation by another such that for all i, this[i] = this[other[i]].
`void`
```set(int index, int value)```
Set the value at the specified index.
`void`
`setTo(Permutation other)`
Alter a permutation by setting it to the values in the other permutation.
`int`
`size()`
Get the number of elements in the permutation.
`String`
`toCycleString()`
An easily-readable version of the permutation as a product of cycles.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`
• ## Constructor Details

• ### Permutation

public Permutation(int size)
Constructs an identity permutation with `size` elements.
Parameters:
`size` - the number of elements in the permutation
• ### Permutation

public Permutation(int... values)
Make a permutation from a set of values such that p[i] = x for the value x at position i.
Parameters:
`values` - the elements of the permutation
• ### Permutation

public Permutation(Permutation other)
Construct a permutation from another one by cloning the values.
Parameters:
`other` - the other permutation
• ## Method Details

• ### equals

public boolean equals(Object other)
Overrides:
`equals` in class `Object`
• ### hashCode

public int hashCode()
Overrides:
`hashCode` in class `Object`
• ### isIdentity

public boolean isIdentity()
Check to see if this permutation is the identity permutation.
Returns:
true if for all i, p[i] = i
• ### size

public int size()
Get the number of elements in the permutation.
Returns:
the number of elements
• ### get

public int get(int index)
Get the value at this index.
Parameters:
`index` - the permutation value at this index.
Returns:
the value at this index
• ### getValues

public int[] getValues()
Get all the values as an array.
Returns:
the values of the permutation
• ### firstIndexOfDifference

public int firstIndexOfDifference(Permutation other)
Find an r such that this[r] != other[r].
Parameters:
`other` - the other permutation to compare with
Returns:
the first point at which the two permutations differ
• ### getOrbit

public  getOrbit(int element)
Get all the elements in the same orbit in the permutation (unsorted).
Parameters:
`element` - any element in the orbit
Returns:
the list of elements reachable in this permutation
• ### set

public void set(int index, int value)
Set the value at the specified index.
Parameters:
`index` - the index to set the value
`value` - the value to set at this index
• ### setTo

public void setTo(Permutation other)
Alter a permutation by setting it to the values in the other permutation.
Parameters:
`other` - the other permutation to use
Throws:
`IllegalArgumentException` - thrown if the permutations are of different size
• ### multiply

public Permutation multiply(Permutation other)
Multiply this permutation by another such that for all i, this[i] = this[other[i]].
Parameters:
`other` - the other permutation to use
Returns:
a new permutation with the result of multiplying the permutations
• ### invert

public Permutation invert()
Invert the permutation, so that for all i : inv[p[i]] = i.
Returns:
the inverse of this permutation
• ### toCycleString

public String toCycleString()
An easily-readable version of the permutation as a product of cycles.
Returns:
the cycle form of the permutation as a string
• ### toString

public String toString()
Overrides:
`toString` in class `Object`