| THE MONEY CHANGING PROBLEM REVISITED: COMPUTING THE FROBENIUS NUMBER IN TIME O(k a1) (2008) | |||||||||||||
Abstract | |||||||||||||
| Abstract. The Money Changing Problem is as follows: Let a1 < a2 < · · · < ak be fixed positive integers with gcd(a1,..., ak) = 1. Given some integer n, are there non-negative integers x1,..., xk such that � i aixi = n? The Frobenius number g(a1,..., ak) is the largest integer n such that the above problem has no decomposition x1,..., xk. There exist algorithms that, for fixed k, compute the Frobenius number in time polynomial in log ai. For variable k, one can compute a residue table of a1 words which, in turn, allows to determine the Frobenius number. The best known algorithm for computing the residue table has runtime O(k a1 log a1) using binary heaps, and O(a1(k + log a1)) using Fibonacci heaps. In both cases, O(a1) extra memory in addition to the residue table is needed. Here, we present an intriguingly simple algorithm to compute the residue table in time O(k a1) and extra memory O(1). In addition to computing the Frobenius number, we can use the residue table to solve the given instance of the Money Changing Problem in constant time, for any n. 1. | |||||||||||||
Publication details | |||||||||||||
| |||||||||||||