Why does the greedy coin change algorithm not work for some coin sets?
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
The problem of making change using the least number of coins arises frequently in computational settings and real-life situations. The greedy coin change algorithm is a straightforward approach to solving this problem, where the algorithm repeatedly selects the largest denomination of coin that does not exceed the remaining amount. While this algorithm provides the correct solution for many standard coin systems, such as the U.S. currency denominations, it fails for certain other sets of coins. This article explores the reasons behind such failures, supported by technical explanations and examples.
Greedy Algorithm Overview
The greedy algorithm for the coin change problem attempts to minimize the number of coins by always picking the largest available denomination that doesn't exceed the target amount, then subtracting the value of that coin and repeating the process.
Steps Involved
- Start with the target sum.
- Select the largest coin denomination that is less than or equal to the target sum.
- Subtract the value of the selected coin from the target sum.
- Repeat the process until the remaining amount is zero.
Example with Standard U.S. Coins
For a target amount of 63 cents using U.S. coins (quarters, dimes, nickels, and pennies), the greedy algorithm yields:
- 2 quarters (50 cents)
- 1 dime (10 cents)
- 3 pennies (3 cents)
This makes a total of 6 coins, which is optimal.
Instances Where the Greedy Algorithm Fails
The greedy approach may fail to provide an optimal solution when the coin denominations do not form a canonical coin system. A canonical system is a set where the greedy algorithm always gives the minimal number of coins. The following is a classic example where the greedy approach falls short.
Coin Set Example
Consider a set of coins with denominations: 1, 3, and 4 cents.
Problem Scenario
- Target amount: 6 cents
- Greedy solution: 4 cents + 1 cent + 1 cent = 3 coins
- Optimal solution: 3 cents + 3 cents = 2 coins
In this example, the greedy method gives a solution with three coins while the optimal solution requires only two.
Explanation of Failure
The failure of the greedy algorithm in non-canonical systems is due to its local optimization strategy. The algorithm works under the assumption that making a locally optimal choice (choosing the largest applicable denomination) will lead to a globally optimal solution. However, this assumption does not hold for all sets of coin denominations.
Technical Insight
To better understand why the greedy algorithm fails in certain coin sets, consider the conditions that make a coin system non-canonical:
- Presence of Non-trivial Sub-combinations: When a certain amount can be optimally made using a combination of smaller denominations rather than using the largest possible denomination plus additional coins.
- Lack of Representation Property: If removing a specific coin creates an amount that cannot be represented optimally, the system may be non-canonical.
Mathematical Formulation
Formally, for a coin set to be canonical, if are the coin denominations such that , then for any amount , the value should be expressible using the same strategy recursively, ensuring that the combinatorial representation is optimal at each stage.
Table: Summary of Key Points
| Aspect | Greedy Algorithm | Non-Greedy Example (1, 3, 4) |
| Denominations Involved | A large denomination selected repeatedly | Avoidance of local optimum pitfalls |
| Solution Type | Locally optimal but not necessarily global | May require a strategic method for global optima |
| Result for Amount = 6 | 4 + 1 + 1 = 3 coins | 3 + 3 = 2 coins |
| Applicability to Systems | Works for most modern currencies | Fails in some non-standard systems |
| Key Shortcoming | Local optimization strategy | Requirement to look past immediate advantage |
Conclusion
The greedy algorithm is a straightforward yet efficient tool for solving many real-world coin change problems, especially with standard currency systems. However, it fails in certain coin sets where a more sophisticated approach is necessary. The key to understanding these failures lies in recognizing the limitations of local optimization and identifying coin systems where such strategies will not yield the global optima. These insights underscore the importance of considering both local and global strategies in algorithm design, particularly in diverse and non-standard coin systems.

