Package org.openscience.cdk.group
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 withsizeelements.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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object other)intfirstIndexOfDifference(Permutation other)Find an r such that this[r] != other[r].intget(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.inthashCode()Permutationinvert()Invert the permutation, so that for all i : inv[p[i]] = i.booleanisIdentity()Check to see if this permutation is the identity permutation.Permutationmultiply(Permutation other)Multiply this permutation by another such that for all i, this[i] = this[other[i]].voidset(int index, int value)Set the value at the specified index.voidsetTo(Permutation other)Alter a permutation by setting it to the values in the other permutation.intsize()Get the number of elements in the permutation.StringtoCycleString()An easily-readable version of the permutation as a product of cycles.StringtoString()
-
-
-
Constructor Detail
-
Permutation
public Permutation(int size)
Constructs an identity permutation withsizeelements.- 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 Detail
-
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 List<Integer> 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 valuevalue- 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
-
-