combo, a FORTRAN77 code which includes routines for ranking, unranking, enumerating and randomly selecting balanced sequences, cycles, graphs, Gray codes, subsets, partitions, permutations, restricted growth functions, Pruefer codes and trees.
Routines are available to count, list, rank and unrank such objects
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 computer code and data files made available on this web page are distributed under the GNU LGPL license.
combo is available in a C version and a C++ 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.