贪婪算法,又名贪心算法,即将一个整体的任务划分为串行的每一小步,在每一小步中采取最优最好的解法,不需要考虑最终为何,当然希望这样最终的结果就是最优的。
特性
- 贪婪算法并没有固定的算法解决框架,算法的关键是贪婪策略的选择,根据不同的问题选择不同的策略。
- 必须注意的是策略的选择必须具备无后效性,即某个状态的选择不会影响到之前的状态,只与当前状态有关,所以对采用的贪婪的策略一定要仔细分析其是否满足无后效性。
评价
贪婪算法名副其实,在很多种场景中不一定能得到真正的最优解(例如动态规划等),但在某些场景中,的确是一种高效简单的得到最接近正确答案的方式,其最关键还是贪婪策略的选择问题。
java代码
package greedy;
/**
- 贪婪算法之会议室预订
- 思路:
贪婪算法:每次只寻找最快结束的那个会议,同时下一场会议的开始时间要满足在上一场会议的结束时间之后
1. 先将会议信息按照结束时间排序
2. 依次遍历会议信息,挑出会议开始时间在上一个结束时间之后的会议即可。
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Meetings implements Comparable{