combo, a Fortran77 code which ranks, unranks, enumerates, lists and randomly selects balanced sequences, cycles, graphs, Gray codes, subsets, partitions, permutations, restricted growth functions, Pruefer codes and trees.
The objects include:
Some of these sets of objects can be ordered in several different ways, and in some cases, a separate set of ranking, unranking, and successor routines are available for the various orderings (lexical, colexical, revolving door, Trotter-Johnson).
Kreher and Stinson provide C source-code for the routines, as well as other information, at their web site.
The information on this web page is distributed under the MIT license.
combo is available in a C version and a C++ version and a Fortran77 version and a Fortran90 version and a MATLAB version and an Octave version and a Python version.
change_making, a Fortran77 library which considers the change making problem, in which a given sum is to be formed using coins of various denominations.
combination_lock, a Fortran77 program which simulates the process of determining the secret combination of a lock.
FLOYD, a Fortran77 library which implements Floyd's algorithm for finding the shortest distance between pairs of nodes on a directed graph.
KNAPSACK, a Fortran77 library which solves a variety of knapsack problems.
KNAPSACK_01, a Fortran77 library which uses brute force to solve small versions of the 0/1 knapsack problem;
KNAPSACK_01, a dataset directory which contains test data for the 0/1 knapsack problem;
LAMP, a Fortran77 library which solves linear assignment and matching problems.
LEGENDRE_PRODUCT_POLYNOMIAL, a Fortran77 library which defines Legendre product polynomials, creating a multivariate polynomial as the product of univariate Legendre polynomials.
MONOMIAL, a Fortran77 library which enumerates, lists, ranks, unranks and randomizes multivariate monomials in a space of M dimensions, with total degree less than N, equal to N, or lying within a given range.
PARTIAL_DIGEST, a Fortran90 library which solves the partial digest problem.
PARTITION_PROBLEM, a Fortran77 library which seeks solutions of the partition problem, splitting a set of integers into two subsets with equal sum.
POLYNOMIAL, a Fortran77 library which adds, multiplies, differentiates, evaluates and prints multivariate polynomials in a space of M dimensions.
SELECT, a Fortran77 library which generates various combinatorial objects.
SET_THEORY, a Fortran90 library which demonstrates various set theoretic operations using several models of a set.
SUBSET, a Fortran77 library which generates, ranks and unranks various combinatorial objects.
SUBSET_SUM, a Fortran77 library which seeks solutions of the subset sum problem.
UNICYCLE, a Fortran77 library which considers permutations containing a single cycle, sometimes called cyclic permutations.