贪心算法学习笔记
贪心算法
概念
维基:
贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。
步骤
1.建立数学模型来描述问题;
2.把求解的问题分成若干个子问题;
3.对每一子问题求解,得到子问题的局部最优解;
4.把子问题的局部最优解合成原来问题的一个解。
缺陷
- 不能保证求得的最后解是最佳的;
- 不能用来求最大或最小解问题;
- 只能求满足某些约束条件的可行解的范围。
模板
贪心算法没有固定的模板,需要针对不同问题分析来建立不同的解决框架。大致思路如下。
//伪代码模拟贪心算法
while ([没有得到可以组成最终解的所有局部最优解])
{
[利用决策,获得其中一个或多个局部最优解]
}
[通过已经获得的局部最优解构造最终解]