Greedy algorithms are used for optimization problems.An optimization problem can be solved using Greedy if the problem has the following property: At every step, we can make a choice that looks best at the moment, and we get the optimal solution of the complete problem.
If a Greedy Algorithm can solve a problem, then it generally becomes the best method to solve that problem as the Greedy algorithms are in general more efficient than other techniques like Dynamic Programming. For example, Fractional Knapsack problem (See this ) can be solved using Greedy, but 0-1 Knapsack cannot be solved using Greedy. ![]() Prims Minimum Spanning Tree: In Prims algorithm also, we create a MST by picking edges one by one. We maintain two sets: a set of the vertices already included in MST and the set of the vertices not yet included. The Greedy Choice is to pick the smallest weight edge that connects the two sets. Dijkstras Shortest Path: The Dijkstras algorithm is very similar to Prims algorithm. We maintain two sets: a set of the vertices already included in the tree and the set of the vertices not yet included. The Greedy Choice is to pick the edge that connects the two sets and is on the smallest weight path from source to the set that contains not yet included vertices. Huffman Coding: Huffman Coding is a loss-less compression technique. It assigns variable-length bit codes to different characters. The Greedy Choice is to assign least bit length code to the most frequent character. A Greedy choice for this problem is to pick the nearest unvisited city from the current city at every step. This solutions dont always produce the best optimal solution but can be used to get an approximately optimal solution. You are given n activities with their start and finish times. Select the maximum number of activities that can be performed by a single person, assuming that a person can only work on a single activity at a time. We can sort the activities according to their finishing time so that we always consider the next activity as minimum finishing time activity. Sort the activities according to their finishing time 2) Select the first activity from the sorted array and print it. Do following for remaining activities in the sorted array..a) If the start time of this activity is greater than or equal to the finish time of previously selected activity then select this activity and print it. How come the activity 1 always provides one of the optimal solutions. We can prove it by showing that if there is another solution B with the first activity other than 1, then there is also a solution A of the same size with activity 1 as the first activity. Let the first activity selected by B be k, then there always exist A B k U 1.(Note that the activities in B are independent and k has smallest finishing time among all. We sort all activities by finish time (Refer sort in C STL ). Once we have activities sorted, we apply same above algorithm. It takes O(n) time when it is given that input activities are always sorted. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |