|
24 | 24 | import java.util.concurrent.ThreadLocalRandom; |
25 | 25 |
|
26 | 26 | /** |
27 | | - * <p>This class implements cycle(α) mutation on permutations, where one mutation |
| 27 | + * <p>This class implements the Cycle(α) form of cycle mutation on permutations, where one mutation |
28 | 28 | * generates a random permutation cycle. Given the original parent permutation and |
29 | 29 | * its mutant, a permutation cycle can be defined as follows. Imagine a graph with |
30 | 30 | * n vertexes, where n is the permutation length. Now consider that for each index |
|
40 | 40 | * hypothetical graph described above, there would be edges from 1 to 4, 4 to 3, and 3 to 1, |
41 | 41 | * a cycle of length 3.</p> |
42 | 42 | * |
43 | | - * <p>The cycle(α) version of cycle mutation chooses the cycle size randomly from {2, 3, ..., n} where |
| 43 | + * <p>The Cycle(α) version of cycle mutation chooses the cycle size randomly from {2, 3, ..., n} where |
44 | 44 | * cycle length k is chosen with probability proportional to α<sup>k-2</sup>. It then generates |
45 | 45 | * a random permutation cycle of length k. The combination of k elements is chosen uniformly at |
46 | 46 | * random from all possible combinations |
|
52 | 52 | * are given significantly higher probability. |
53 | 53 | * The average case runtime of a single call to the |
54 | 54 | * {@link #mutate(Permutation) mutate} method is O(min(n, ((2-α)/(1-α))<sup>2</sup>)). |
55 | | - * Calls where the random cycle length is small (e.g., 2 or 3) will run in constant time.</p> |
| 55 | + * Thus, provided α is not close to 1, the average runtime is a constant depending upon |
| 56 | + * the value of α.</p> |
| 57 | + * |
| 58 | + * <p>Cycle mutation in both of its forms, including Cycle(α), was introduced in the following article:</p> |
| 59 | + * |
| 60 | + * <p>Vincent A. Cicirello. 2022. Cycle Mutation: Evolving Permutations via Cycle Induction. |
| 61 | + * <i>Applied Sciences</i>, 12, 11, Article 5506 (May 2022). |
| 62 | + * <a href="https://doi.org/10.3390/app12115506">https://doi.org/10.3390/app12115506</a></p> |
56 | 63 | * |
57 | 64 | * @author <a href=https://www.cicirello.org/ target=_top>Vincent A. Cicirello</a>, |
58 | 65 | * <a href=https://www.cicirello.org/ target=_top>https://www.cicirello.org/</a> |
|
0 commit comments