Greedy Algorithms
Greedy Algorithms follow a problem solving approach wherein they make the locally optimal choice at each stage, with the hope of finding a global optimum.
The focus is, however, on finding the local optimums at each step, regardless of whether a global optimum is ever obtained.
The image below depicts the result of a greedy algorithm that needed to find the largest possible sum, starting from the root. It focused on choosing the maximum value at each step, leading to a solution that wasn't globally optimal.
The image below depicts the globally optimal solution (in green).
Pros of Greedy Algorithms:
simple
easy to implement
reasonable complexity
Cons of Greedy Algorithms:
may not result in a globally optimal solution for any given problem
Where do we use Greedy Algorithms?
Problems that can be solved using Greedy Algorithms satisfy the following properties:
Greedy choice property: from a local optimum we can reach a global optimum, without having to reconsider the decisions already taken
Optimal Substructure: an optimal solution can be constructed efficiently from the optimal solutions of its subproblems
A Greedy Algorithm never reconsiders its choices!
Some common problems solved using the greedy approach include:
Activity Selection problem
Fractional Knapsack Problem
Minimum Number of Coins
Huffman Coding
Job Sequencing problem
Kruskal's Minimum Spanning Tree
Prim's Minimum Spanning Tree
Dijkstra's Shortest Path problem
Last updated
Was this helpful?