Skip to content

Commit

Permalink
v.0.8.8
Browse files Browse the repository at this point in the history
0.8.3

* `stirling` numbers of `1st` (signed/unsigned) & `2nd` kind
* lex generation of `involutions`, in progress (using tentative FXT algorithm)
* `combine/complete` algebraic composition method (eg `k-Derangements = Composition of k-Combinations of Fixed Points + (n-k)-Derangement`)

0.8.4

* default or natural `mergesort`
* fix a typo in `difference` utility method
* `complement` utility method with sorting detection and automatic sorting if needed to get correct difference/complement
* `Abacus.Partial` combinatorial iterator for `Partial` & `Explicit` (eg fixed) combinatorial data & conditions, eg can compose (w/ "complete" method) to produce conditional combinatorial templates eg conditional permutations w/ `boolean`/`algebraic` conditions (i.e "positive/negative" values by position, etc..)
* `Abacus.Partial` can take (array of) array of values or (array of) array of conditional values + positions
* `Abacus.CombinatorialIterator.output` method can map the combinatorial item to output "base/encoding" (& `Abacus.Tensor` support for multiple bases/encodings)

0.8.5

* `Abacus.CombinatorialIterator.compose` generic method to compose(& un-compose) combinatorial objects (& aliases per composition method eg `.connectWith`, `.completeWith`, `.projectOn`, `.concatWith`, ..)
* (max) `M-compositions` (lex/lex,reflected forward/backward)
* correct initial composition with M max part both forward & backward
* fix wrong computation of `#compositions` with M maximum part

0.8.6

* fix still another typo in `difference` utility method
* rename `Abacus.CombinatorialIterator.compose` to `Abacus.CombinatorialIterator.fuse`
* optimise generation of comnditional combinatorial tensor data (ie Partial, CombinatorialTemplate)
* add Abacus.CombinatorialTemplate which uses a pattern template to parse and generate conditonal partial data fused with other combinatorial objects to produce combinatorial objects matching template patterns
* fix `fuse` methods for tuples, ordered permutations, etc.. when base is different than dimension (as in permutations and so on..)
* make `Abacus.Partial` a sub-type of `Abacus.Tensor` ie `Abacus.Tensor.partial`

0.8.7

* fix a typo in random combination mergesort
* add counting (only) of derangements with k fixed points & permutations with k cycles (stirling numbers)
* `Abacus.CombinatorialIterator` support for sequences (ie sums) of other `CombinatiorialIterators` as actual combinatorial iterator instead of just abstract base class
* subsets in (subset-)lex(&minimal), colex, combination & binary order (forward/backward) (partialy complete)

0.8.8

* fixed-length items (& attached effective length as extra last pos) & loopless algorithms (only subsets, todo for partitions & compositions)
* adjust C/P/T methods to account for correct transformations of fixed-length objects with attached effective length
* custom output functions or arrays or strings
* generate partitions with k parts as partitions with m max part with conjugate output
* conditional tensor data, can have custom min,max range instead of default 0,n-1
* partial support for minimal ordering (subsets, todo for tensors, permutations,combinations)
* (n,k)-gray code output function for tuples
* fixed-length items (& attached effective length as extra last pos) for partitions & compositions
* fixed some issues with random generation of partitions/compositions and reflected/colex orderings, including with fixed-length representation
* Iterator.DUAL takes into account dir of application (esp. for fixed-length representations) to construct correct reflected & complemented duals, ..
  • Loading branch information
Nikos M committed Jul 18, 2017
1 parent 45ca8ee commit 86959a9
Show file tree
Hide file tree
Showing 42 changed files with 7,062 additions and 1,284 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ A combinatorics library for Node/XPCOM/JS, PHP, Python, C/C++, Java
(php/python/java/c implementations in progress)


**version 0.8.2** (~ 49kB minified, ~ 16kB zipped)
**version 0.8.8** (~ 66kB minified, ~ 22kB zipped)

![abacus combinatorial numbers](/abacus.jpg)

Expand Down Expand Up @@ -41,7 +41,7 @@ A combinatorics library for Node/XPCOM/JS, PHP, Python, C/C++, Java
* [Simulacra](https://github.com/foo123/Simulacra) a simulation, algebraic, probability and combinatorics PHP package for scientific computations


###Contents
### Contents

* [Live Playground Example](https://foo123.github.io/examples/abacus)
* [Features](#features)
Expand All @@ -51,7 +51,7 @@ A combinatorics library for Node/XPCOM/JS, PHP, Python, C/C++, Java
* [Todo](#todo)


###Features
### Features

**Supports:** (see: `test/test.bat`)

Expand Down Expand Up @@ -79,7 +79,7 @@ A combinatorics library for Node/XPCOM/JS, PHP, Python, C/C++, Java
* `big-integer arithmetic`, `PRNG`s and other `math` utilities can be **dynamicaly pluggable using external implementations**, making the lib very flexible especialy with respect to handling big-integers & (pseudo-)random number generators


###Performance
### Performance

* `first`/`last`, `random`, `rank`/`unrank` methods use **efficient linear** `O(n)` (or **log-linear** `O(nlgn)`) **time and space** algorithms
* `random` methods are **statisticaly unbiased** (ie uniform sampling methods, see below as well)
Expand All @@ -89,7 +89,7 @@ A combinatorics library for Node/XPCOM/JS, PHP, Python, C/C++, Java
**Note** that the lib can generate **very large** (and also **randomised**) combinatorial objects **without ever using** biginteger arithmetic due to design and implementation except if arbitrary `random`, `ranking` and `unranking` have to be used (see above)


###Credits and References
### Credits and References

See the comments in the code for algorithms and references used.

Expand All @@ -111,7 +111,7 @@ A variety of combinatorial algorithms & statistics are given, for example, i
* [Make good (Pseudo-)Random Number Generators](http://www0.cs.ucl.ac.uk/staff/d.jones/GoodPracticeRNG.pdf)


###Example API
### Example API

**permutations** (see `test/permutations.js`)

Expand Down Expand Up @@ -557,7 +557,7 @@ o.dispose()
```


###Todo
### Todo

* apply built-in language `iterator`/`iterable` patterns (e.g ES6 `iterator` protocol, Python `__iter__` interface, PHP `Iterator` interface, ..). Combinatorial objects additionaly support a `doubly-linked list`-like interface, i.e `prev`/`next` accessors [DONE]
* support `biginteger` combinatorial computations e.g large factorials [DONE, the lib **does not support** biginteger arithmetic, but arithmetic routines have been made **dynamicaly pluggable** and one can use an external implementation to support combinatorics with bigintegers where needed as needed, see test examples for an example]
Expand Down
Loading

0 comments on commit 86959a9

Please sign in to comment.