java.lang.Object
org.cicirello.permutations.distance.KCycleDistance
 All Implemented Interfaces:
NormalizedPermutationDistanceMeasurer
,NormalizedPermutationDistanceMeasurerDouble
,PermutationDistanceMeasurer
,PermutationDistanceMeasurerDouble
KCycle distance is the count of the number of nonsingleton permutation cycles of length at most
K. Specifically, each nonsingleton cycle contributes to the total distance the number of cycles
of length at most K necessary to transform the cycle to all fixed points. Kcycle distance is a
metric provided that K ≤ 4. However, if K > 4, it is only a semimetric because it fails to
satisfy the triangle inequality when K ≥ 5.
KCycle distance was introduced in the following article:
Vincent A. Cicirello. 2022. Cycle Mutation: Evolving Permutations via Cycle Induction, Applied Sciences, 12(11), Article 5506 (June 2022). doi:10.3390/app12115506
Runtime: O(n), where n is the permutation length.

Constructor Summary
ConstructorDescriptionKCycleDistance
(int k) Constructs the distance measurer as specified in the class documentation. 
Method Summary
Modifier and TypeMethodDescriptionint
distance
(Permutation p1, Permutation p2) Measures the distance between two permutations.int
max
(int length) Computes the maximum possible distance between permutations of a specified length.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.cicirello.permutations.distance.NormalizedPermutationDistanceMeasurer
maxf, normalizedDistance
Methods inherited from interface org.cicirello.permutations.distance.PermutationDistanceMeasurer
distancef

Constructor Details

KCycleDistance
public KCycleDistance(int k) Constructs the distance measurer as specified in the class documentation. Parameters:
k
 The maximum length cycle that is considered an atomic edit operation, such that k is greater than or equal to 2. Throws:
IllegalArgumentException
 if k is less than 2


Method Details

distance
Measures the distance between two permutations. Specified by:
distance
in interfacePermutationDistanceMeasurer
 Parameters:
p1
 first permutationp2
 second permutation Returns:
 distance between p1 and p2
 Throws:
IllegalArgumentException
 if p1.length() is not equal to p2.length().

max
public int max(int length) Description copied from interface:NormalizedPermutationDistanceMeasurer
Computes the maximum possible distance between permutations of a specified length. Specified by:
max
in interfaceNormalizedPermutationDistanceMeasurer
 Parameters:
length
 Permutation length. Returns:
 the maximum distance between a pair of permutations of the specified length.
