使用贪心算法(也叫贪婪算法)解题的基本步骤如下:
将问题分解成若干个子问题
使用设定的贪心策略,求出每个子问题的局部最优解
将子问题的解合并成原问题的解
需要注意的是:
因为贪心算法不是站在全局的角度进行考虑,所以使用贪心算法得到的解通常不是全局最优解
贪心算法的关键是贪心策略的选择。贪心策略必须满足无后效性,也就是某个阶段的状态一旦确定,不再受以后的决策的影响
跟动态规划相比,贪心算法不会回退,因此比较简单
以背包问题为例:
背包总承重为:30kg 物品的名称/重量/价值分别为:A/28kg/30¥ B/12kg/20¥ C/12kg/20¥
设定三个贪心策略:
选价值最大者
选重量最小者
选单位重量价值最大者