您的位置:首页 > 其它

贪心算法专题总结

2016-03-30 21:44 190 查看
这一段时间学的是贪心算法,从字面上看,就是选取贪的标准,就是按照一定的标准进行选择,寻找局部最优解,换句话说,就是在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得到整个问题的最优解,通过贪心算法,每一步的选择在当前状态下具有某种意义的最好选择,并且每次贪心选择都能将问题化简为一个更小的与原问题具有相同形式的子问题。

贪心选择性质

对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选择最终导致问题的整体最优解。首先考虑问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始,做了贪心选择后,原问题简化为规模更小的类似子问题。

贪心算法的基本思路:

从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。

该算法存在问题:

1. 不能保证求得的最后解是最佳的;

2. 不能用来求最大或最小解问题;

3. 只能求满足某些约束条件的可行解的范围。

实现该算法的过程:

从问题的某一初始解出发;

while 能朝给定总目标前进一步 do

   求出可行解的一个解元素;

由所有解元素组合成问题的一个可行解;

几个适用贪心算法的问题:

背包问题: 给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量wi,价值vi,要求把物品装满背包,且使背包内的物品价值最大。经过思考,单纯的按照重量或长度比较都有缺陷,最好的方法是按照性价比进行排序。

最优装载问题: 有一批集装箱要装到一艘重量为c的轮船,其中集装箱i的重量为wi,最优装载问题要求确定在装载体积不受限制的情况下,尽可能多的集装箱装上轮船。

利用贪心算法,采用重量最轻的先装的策略,可得到装载问题的最优解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: