贪心算法总结
一、解释:
在求问题最优解的时候,从问题的初始状态出发,去求每一步的最优解,通过若干次的贪心选择最终得到整个问题最优解的方法
二、理论基础:
1.每一步都采用当前状态下最好的选择,
2.通过局部最优得到全局最优。
3.并不能保证总是能够得到所有问题的最理想结果
4.利用贪心算法需要知道:
(1).该题是否适合贪心算法.
(2)如何选择贪心标准。
5.贪心算法的每一次操作都会对结果产生直接的影响
6.问题的最优子结构性质是该问题求解的关键
三、贪心算法的求解过程
1.候选集合
2.解集合
3.解决函数
4.选择函数又称贪心策略
5.可行函数
四、经典问题
1.活动安排问题
struct action{
int s;
int f;
int index
};
然后排序
用数组记录被选中的活动
2.背包问题(物品可以分割)
struct bag{
int w;
int v;
double c;
};
按性价比排序
选性价比高的装入
3.最优装载问题
struct load{
int index;
int w;
};
按集装箱的重量排序
将重量最轻者先装
4.删数问题
按最近下降点优先的贪心策略