|
8 | 8 | <meta name="title" content="JavaPermutationTools - A Java library for computation on permutations and sequences"> |
9 | 9 | <meta name="referrer" content="strict-origin-when-cross-origin"> |
10 | 10 | <meta itemprop="name" content="JavaPermutationTools - A Java library for computation on permutations and sequences"> |
11 | | -<meta name="description" content="The JPT library includes a variety of |
12 | | -permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types)."> |
13 | | -<meta itemprop="description" content="The JPT library includes a variety of |
14 | | -permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types)."> |
| 11 | +<meta name="description" content="The JavaPermutationTools (JPT) library includes an efficient object-oriented implementation of Permutations, as well as a variety of permutation distance metrics, distance metrics on sequences (i.e., Strings, arrays, and other ordered data types), and implementations of algorithms for randomly sampling from arrays."> |
| 12 | +<meta itemprop="description" content="The JavaPermutationTools (JPT) library includes an efficient object-oriented implementation of Permutations, as well as a variety of permutation distance metrics, distance metrics on sequences (i.e., Strings, arrays, and other ordered data types), and implementations of algorithms for randomly sampling from arrays."> |
15 | 13 | <title>JavaPermutationTools - A Java library for computation on permutations and sequences</title> |
16 | 14 | <link rel="icon" href="/images/favicon.svg" sizes="any" type="image/svg+xml"> |
17 | 15 | <meta property="og:type" content="website"> |
|
20 | 18 | <meta property="og:image" content="https://jpt.cicirello.org/images/jpt.png"> |
21 | 19 | <meta property="og:image:width" content="1280"> |
22 | 20 | <meta property="og:image:height" content="640"> |
23 | | -<meta property="og:description" content="The JavaPermutationTools (JPT) library includes a variety of |
24 | | -permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types)."> |
| 21 | +<meta property="og:description" content="The JavaPermutationTools (JPT) library includes an efficient object-oriented implementation of Permutations, as well as a variety of permutation distance metrics, distance metrics on sequences (i.e., Strings, arrays, and other ordered data types), and implementations of algorithms for randomly sampling from arrays."> |
25 | 22 | <style amp-custom> |
26 | 23 | header, nav, footer, article, aside, section { display: block; } |
27 | 24 | footer { clear: both; } |
@@ -171,9 +168,12 @@ <h2>JavaPermutationTools</h2> |
171 | 168 | <h3>Overview</h3> |
172 | 169 | <p itemprop="description"><span itemprop="name">JavaPermutationTools</span> (JPT) is a <span itemprop="programmingLanguage">Java</span> |
173 | 170 | library for representing and generating permutations and sequences, as well as performing |
174 | | -computation on permutations and sequences. This includes implementations of a variety of |
175 | | -permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, |
176 | | -and other ordered data types).</p> |
| 171 | +computation on permutations and sequences. JPT's Permutation class is an efficient object-oriented implementation |
| 172 | +of a permutation, and includes a variety of methods for manipulating the permutation (e.g., swapping elements, |
| 173 | +reversing, scrambling, among others), and also supports iterating over permutations. The JPT library also includes |
| 174 | +implementations of a variety of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, |
| 175 | +and other ordered data types). Additionally, JPT includes implementations of several algorithms for random sampling |
| 176 | +from arrays.</p> |
177 | 177 | <p>The <a href="https://github.com/cicirello/JavaPermutationTools" itemprop="codeRepository">JPT source |
178 | 178 | code repository</a> is hosted on GitHub; and is licensed under |
179 | 179 | the <a itemprop="license" href="https://www.gnu.org/licenses/gpl-3.0.html">GNU |
@@ -204,6 +204,92 @@ <h3>How to Cite</h3> |
204 | 204 | </ul> |
205 | 205 | </section> |
206 | 206 | <section> |
| 207 | +<h3>Permutation Distance Measures</h3> |
| 208 | +<p>The permutation distance measures include the following:</p> |
| 209 | +<p><strong>Edit distances:</strong> Edit distance measures, where an edit distance is the minimum number of edit operations necessary |
| 210 | +to transform one permutation into the other:</p> |
| 211 | +<ul> |
| 212 | +<li>block interchange distance: minimum number of block (i.e., contiguous sequence of elements) swaps necessary to transform |
| 213 | +one permutation into the other</li> |
| 214 | +<li>cycle edit distance: minimum number of non-singleton permutation cycles necessary to transform |
| 215 | +one permutation into the other</li> |
| 216 | +<li>edit distance: Wagner and Fischer's (1974) string edit distance adapted to permutations, including |
| 217 | +edit operations of element deletions, element insertions, and element changes, and with configurable costs |
| 218 | +for the three edit operations</li> |
| 219 | +<li>interchange distance: minimum number of swaps necessary to transform one permutation into the other</li> |
| 220 | +<li>Kendall tau distance: minimum number of adjacent swaps necessary to transform one permutation into the other, |
| 221 | +also known as bubble sort distance</li> |
| 222 | +<li>reinsertion distance: minimum number of removal/reinsertion operations necessary to transform one permutation into the other</li> |
| 223 | +</ul> |
| 224 | +<p><strong>Edge-based distances:</strong> Distance measures when the permutations represent a sequence of |
| 225 | +edges (e.g., when adjacent permutation elements correspond to edges):</p> |
| 226 | +<ul> |
| 227 | +<li>acyclic edge distance: the number of edges that are not in common</li> |
| 228 | +<li>cyclic edge distance: the number of edges that are not in common, treating the permutation as a cycle |
| 229 | +such that there is an edge from the last element to the first</li> |
| 230 | +<li>r-type distance: the number of directed edges that are not in common</li> |
| 231 | +<li>cyclic r-type distance: the number of directed edges that are not in common, treating the permutation as a cycle |
| 232 | +such that there is an edge from the last element to the first</li> |
| 233 | +</ul> |
| 234 | +<p><strong>Other distances:</strong> Distance measures based on some permutation concept or property:</p> |
| 235 | +<ul> |
| 236 | +<li>exact match distance: Hamming distance applied to permutations (e.g., the number of positions containing different elements)</li> |
| 237 | +<li>cycle distance: count of the number of non-singleton permutation cycles between a pair of permutations</li> |
| 238 | +<li>k-cycle distance: count of the number of non-singleton permutation cycles of length at most k</li> |
| 239 | +<li>deviation distance: sum of the positional deviations of the permutation elements</li> |
| 240 | +<li>normalized deviation distance (Ronald, 1998): deviation distance normalized by dividing by 1 (proposed by S Ronald at IEEE CEC in 1998)</li> |
| 241 | +<li>normalized deviation distance (Sevaux and Sorensen, 2005): deviation distance normalized, such that the distance is between 0 and 1 (proposed by Sevaux and Sorensen at MIC-2005)</li> |
| 242 | +<li>Lee distance: Lee distance (1958) is the sum of the minimum of the left-positional and right-positional deviations |
| 243 | +of the elements (e.g., treats permutation as a cycle, such that an element's deviation is the minimum of its displacement to |
| 244 | +the left or right)</li> |
| 245 | +<li>squared deviation distance: sum of the squares of the positional deviations of the permutation elements</li> |
| 246 | +<li>weighted Kendall tau distance: Liu and Han's (2006) weighted version of Kendall tau distance</li> |
| 247 | +</ul> |
| 248 | +</section> |
| 249 | +<section> |
| 250 | +<h3>Sequence Distance Measures</h3> |
| 251 | +<p>JPT also includes a variety of string distance measures that can be used to measure the |
| 252 | +distance between a pair of strings or between a pair of arrays of various types. The sequence |
| 253 | +distance measures all support computing the distance between pairs of arrays of any one |
| 254 | +primitive type, the distance between pairs of arrays of objects, the distance between pairs |
| 255 | +of lists, and the distance between pairs of String objects. The distance measures for |
| 256 | +sequences include the following:</p> |
| 257 | +<ul> |
| 258 | +<li>edit distance: Wagner and Fischer's (1974) string edit distance, including |
| 259 | +edit operations of element deletions, element insertions, and element changes, and with configurable costs</li> |
| 260 | +<li>exact match distance: an adaptation of Hamming distance to non-binary strings, such that the |
| 261 | +distance is the number of sequence positions containing different elements</li> |
| 262 | +<li>Kendall tau sequence distance: implementation of Kendall tau sequence distance (Cicirello, 2020)</li> |
| 263 | +<li>longest common subsequence distance: an edit distance where the edit operations are deletions and insertions |
| 264 | +(i.e., no replacements or changes), and where the cost of an edit operation is simply 1</li> |
| 265 | +</ul> |
| 266 | +</section> |
| 267 | +<section> |
| 268 | +<h3>Dependencies</h3> |
| 269 | +<p>The JavaPermutationTools has minimal dependencies, all of which are our own |
| 270 | +libraries, and these include the following.</p> |
| 271 | +<ul> |
| 272 | +<li><a href="https://rho-mu.cicirello.org/">ρμ</a>: The ρμ library is |
| 273 | +focused on efficient randomization. It provides highly optimized random sampling algorithm |
| 274 | +implementations, and replaces some of the functionality of Java's built-in random |
| 275 | +number generators with faster options.</li> |
| 276 | +<li><a href="https://core.cicirello.org/">org.cicirello.core</a>: The org.cicirello.core |
| 277 | +library provides implementations of core data structures and algorithms that are used |
| 278 | +across multiple of our projects.</li> |
| 279 | +</ul> |
| 280 | +</section> |
| 281 | +<section> |
| 282 | +<h3>Dependent Libraries</h3> |
| 283 | +<p>The following libraries depend upon JavaPermutationTools:</p> |
| 284 | +<ul> |
| 285 | +<li><a href="https://chips-n-salsa.cicirello.org/">Chips-n-Salsa</a>: The Chips-n-Salsa |
| 286 | +Java library is a library for evolutionary computation, stochastic search, and related |
| 287 | +metaheuristics. Among its features is support for optimization problems over the space |
| 288 | +of permutations. Thus, it uses JPT's Permutation class as an efficient representation |
| 289 | +of permutations.</li> |
| 290 | +</ul> |
| 291 | +</section> |
| 292 | +<section> |
207 | 293 | <h3>Importing from Maven Central</h3> |
208 | 294 | <div class="badge-height"><a href="https://central.sonatype.com/artifact/org.cicirello/jpt/"><amp-img class="contain" layout="fill" alt="Latest release on Maven Central" src="https://img.shields.io/maven-central/v/org.cicirello/jpt.svg?label=Maven%20Central&logo=apachemaven"></amp-img></a></div> |
209 | 295 | <p>To import JPT from the Maven Central repository (if your build tool is |
@@ -274,13 +360,6 @@ <h3>Development Process</h3> |
274 | 360 | </ul></li> |
275 | 361 | </ul> |
276 | 362 | </section> |
277 | | -<section> |
278 | | -<h3>Dependent Libraries</h3> |
279 | | -<p>The following libraries depend upon JavaPermutationTools:</p> |
280 | | -<ul> |
281 | | -<li><a href="https://chips-n-salsa.cicirello.org/">Chips-n-Salsa</a></li> |
282 | | -</ul> |
283 | | -</section> |
284 | 363 | <section class="publist"> |
285 | 364 | <h3>Related Publications</h3> |
286 | 365 | <p>The following papers, many of which are related to fitness landscape analysis, have either used this library, or contributed to it in |
@@ -327,8 +406,12 @@ <h3>Related Publications</h3> |
327 | 406 | </section> |
328 | 407 | </article> |
329 | 408 | <footer> |
330 | | -<small><a rel="nofollow" href="https://www.cicirello.org/e/">Contact</a></small> |
331 | | -<div id="copyright"><small>Copyright © 2005-<span itemprop="copyrightYear">2024</span> <a href="https://www.cicirello.org/">Vincent A. Cicirello</a>.</small></div> |
| 409 | +<p><small> |
| 410 | +<a class="footer-link" href="https://www.cicirello.org/e/">Contact</a> |
| 411 | +<strong>◆</strong> |
| 412 | +<a class="footer-link" href="https://www.cicirello.org/policy/privacy/">Privacy Policy</a> |
| 413 | +</small></p> |
| 414 | +<div id="copyright"><small>Copyright © 2005-<span itemprop="copyrightYear">2025</span> <a href="https://www.cicirello.org/">Vincent A. Cicirello</a>.</small></div> |
332 | 415 | </footer> |
333 | 416 | </body> |
334 | 417 | </html> |
0 commit comments