change_diophantine, a MATLAB code which sets up a Diophantine equation to solve the change making problem, which counts the number of ways a given sum can be formed using coins of various denominations.
The change making problem is given a target value C and a set of N coin denominations with value W. The task is to determine the minimum number of coins needed to form the given value.
In the unbounded change making problem, there are a limitless supply of coins of each denomination. In the bounded change making problem, each denomination is available only up to some given limit.
For some sets of denominations, there will be target values that cannot be formed. (This relates to Frobenius's problem.)
The computer code and data files described and made available on this web page are distributed under the MIT license
change_diophantine is available in a MATLAB version.
change_making, a dataset directory which contains test data for the change making problem;
combo, a MATLAB code which includes many combinatorial routines.
diophantine_nd, a MATLAB code which is given a Diophantine equation in N variables, and returns all strictly positive solutions, or all nonnegative solutions.
football_scores, a MATLAB code which counts the number of ways of achieving a given score in football.
mcnuggets, a MATLAB code which counts M(N), the number of ways a given number N of Chicken McNuggets can be assembled, given that they are only available in packages of 6, 9, and 20.
partition_brute, a MATLAB code which uses brute force to seek solutions of the partition problem, splitting a set of integers into two subsets with equal sum.
partition_greedy, a MATLAB code which uses a greedy algorithm to seek a solution of the partition problem, in which a given set of integers is to be split into two groups whose sums are as close as possible.
satisfy, a MATLAB code which demonstrates, for a particular circuit, an exhaustive search for solutions of the circuit satisfiability problem.
subset, a MATLAB code which enumerates, generates, ranks and unranks combinatorial objects including combinations, partitions, subsets, index sets, and trees.
subset_sum, a MATLAB code which seeks solutions of the subset sum problem, in which it is desired to find a subset of a set of integers which has a given sum.
tsp_brute, a MATLAB code which reads a file of city-to-city distances and solves the traveling salesperson problem, using brute force.
tsp_descent, a MATLAB code which is given a city-to-city distance map, chooses an initial tour at random, and then tries simple variations, seeking to quickly find a tour of lower cost for the traveling salesperson problem (TSP).
tsp_greedy, a MATLAB code which reads a file of city-to-city distances, and solves a small traveling salesperson problem (TSP) using the greedy algorithm. It picks a starting city at random, and then successively visits the nearest unvisited city.