# JavaPermutationTools

## A Java API for computation on permutations and sequences

### Vincent A. Cicirello

### About the JavaPermutationTools (JPT) API

The JavaPermutationTools (JPT) API provides Java classes that enable representing and generating permutations and sequences, as well as performing computation on permutations and sequences. This current release consists of implementations of a variety of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types). More computation on permutations and sequences will be added later.

The JPT source code repository is hosted on GitHub; and is licensed under the GNU General Public License Version 3 (GPLv3). The API documentation of JavaPermutationTools can be found on this site.

JPT is organized into the following packages:

- org.cicirello.permutations: Permutation class and a Permutation Iterator.
- org.cicirello.permutations.distance: Collection of permutation distance metric implementations.
- org.cicirello.sequences: Classes that perform a variety of operations on sequences (such as arrays, etc).
- org.cicirello.sequences.distance: Collection of distance metrics on Strings and other sequences.
- org.cicirello.math.la: Linear algebra related classes.
- org.cicirello.math.rand: Classes related to efficient, or specialized, random number generation.
- org.cicirello.math.stats: Statistics related classes.

In addition to the source code, the repository contains a folder of example programs that show basic usage of the API, as well as a folder of replication programs that reproduce results found in published papers. There are also JUnit test cases.

### How to Cite

If you use this API in your research, please cite the following article which describes the library:

- Vincent A. Cicirello.
JavaPermutationTools: A Java Library of Permutation Distance Metrics.
*Journal of Open Source Software*, 3(31):950, November 2018. [PDF] [BIB] [DOI]

### Related Publications

The following papers, most of which are related to fitness landscape analysis, used this API. Programs for replicating the data from these papers can be found in the replication directory. In order to fully understand the data generated by the programs in the replication directory, you may need to consult these papers:

- Vincent A. Cicirello. Kendall Tau Sequence Distance: Extending Kendall Tau from Ranks to Sequences. Industrial Networks and Intelligent Systems, 7(23), e1, April 2020. [PDF] [BIB] [DOI]
- Vincent A. Cicirello. Kendall Tau Sequence Distance: Extending Kendall Tau from Ranks to Sequences. arXiv preprint arXiv:1905.02752 [cs.DM], May 2019. [PDF] [BIB] [arXiv]
- Vincent A. Cicirello.
Classification of Permutation Distance Metrics for Fitness Landscape Analysis.
In
*Proceedings of the 11th International Conference on Bio-inspired Information and Communications Technologies*. ICST, March 2019. [PDF] [BIB] - Vincent A. Cicirello.
The Permutation in a Haystack Problem and the Calculus of Search Landscapes.
*IEEE Transactions on Evolutionary Computation*, 20(3):434-446, June 2016. [PDF] [BIB] [DOI] - Vincent A. Cicirello.
On the Effects of Window-Limits on the Distance Profiles of Permutation Neighborhood Operators.
In
*Proceedings of the 8th International Conference on Bio-inspired Information and Communications Technologies*, pages 28-35. ICST, December 2014. [PDF] [BIB] [PUB] - Vincent A. Cicirello and Robert Cernera.
Profiling the Distance Characteristics of Mutation Operators for Permutation-Based Genetic Algorithms.
In
*Proceedings of the Twenty-Sixth International Florida Artificial Intelligence Research Society Conference*, pages 46-51. AAAI Press, May 2013. [PDF] [BIB] [PUB]