算法——贪婪算法

思想:

贪婪算法(greedy method)采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。

作出贪婪决策的依据称为贪婪准则(greedy criterion)。

主要应用:

货船装箱

0/1背包

拓扑排序

二分覆盖

单源最短路径

最小生成树

具体实现:

1.       货船装箱

有一艘大船准备用来装载货物。所有待装货物都装在货箱中且所有货箱的大小都一样,但货箱的重量都各不相同。设第 i 个货箱的重量为Wi1in),而货船的最大载重量为c,我们的目的是在货船上装入最多的货物。

解答:设存在一组变量Xi,其可能取值为01。如Xi0,则货箱i将不被装上船;如Xi1,则货箱i 将被装上船。我们的目的是找到一组Xi,使它满足限制条件:

Xi 属于{0, 1}, 1in。相应的优化函数是 。满足限制条件的每一组Xi都是一个可行解,能使取得最大值的方案是最优解。

C++代码:

你可能感兴趣的:(算法——贪婪算法)