思想:
贪婪算法(greedy method)采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。
作出贪婪决策的依据称为贪婪准则(greedy criterion)。
主要应用:
货船装箱
0/1背包
拓扑排序
二分覆盖
单源最短路径
最小生成树
具体实现:
1. 货船装箱
有一艘大船准备用来装载货物。所有待装货物都装在货箱中且所有货箱的大小都一样,但货箱的重量都各不相同。设第 i 个货箱的重量为Wi(1≤i≤n),而货船的最大载重量为c,我们的目的是在货船上装入最多的货物。
解答:设存在一组变量Xi,其可能取值为0或1。如Xi 为0,则货箱i将不被装上船;如Xi为1,则货箱i 将被装上船。我们的目的是找到一组Xi,使它满足限制条件:
且Xi 属于{0, 1}, 1≤i≤n。相应的优化函数是 。满足限制条件的每一组Xi都是一个可行解,能使 取得最大值的方案是最优解。
C++代码: