• Java Data Structures Tutorial

Components of Greedy Algorithm



An algorithm is designed to achieve optimum solution for a given problem. In greedy algorithm approach, decisions are made from the given solution domain. As being greedy, the closest solution that seems to provide an optimum solution is chosen.

Greedy algorithms try to find a localized optimum solution, which may eventually lead to globally optimized solutions. However, generally greedy algorithms do not provide globally optimized solutions.

Components of Greedy Algorithm

Greedy algorithms have the following five components −

  • A candidate set − A solution is created from this set.

  • A selection function − Used to choose the best candidate to be added to the solution.

  • A feasibility function − Used to determine whether a candidate can be used to contribute to the solution.

  • An objective function − Used to assign a value to a solution or a partial solution.

  • A solution function − Used to indicate whether a complete solution has been reached.

Areas of Application

Greedy approach is used to solve many problems, such as

  • Finding the shortest path between two vertices using Dijkstra’s algorithm.

  • Finding the minimal spanning tree in a graph using Prim’s /Kruskal’s algorithm, etc.

Where Greedy Approach Fails

In many problems, Greedy algorithm fails to find an optimal solution, moreover it may produce a worst solution. Problems like Travelling Salesman and Knapsack cannot be solved using this approach.

Counting Coins

This problem is to count to a desired value by choosing the least possible coins and the greedy approach forces the algorithm to pick the largest possible coin. If we are provided coins of ₹ 1, 2, 5 and 10 and we are asked to count ₹ 18 then the greedy procedure will be.

  • Select one ₹ 10 coin, the remaining count is 8.

  • Then select one ₹ 5 coin, the remaining count is 3.

  • Then select one ₹ 2 coin, the remaining count is 1.

  • And finally, the selection of one ₹ 1 coins solves the problem.

Though, it seems to be working fine, for this count we need to pick only 4 coins. But if we slightly change the problem then the same approach may not be able to produce the same optimum result.

For the currency system, where we have coins of 1, 7, 10 value, counting coins for value 18 will be absolutely optimum but for count like 15, it may use more coins than necessary. For example, the greedy approach will use 10 + 1 + 1 + 1 + 1 + 1, total 6 coins. Whereas the same problem could be solved by using only 3 coins (7 + 7 + 1)

Hence, we may conclude that the greedy approach picks an immediate optimized solution and may fail where global optimization is a major concern.

Advertisements