贪心算法及证明

贪心算法及证明

1、贪心选择性

一个问题的整体最优解可以通过一系列局部最优选择来达到,每次的选择还会依赖于已经做过的选择,这就时贪心选择性

2、最优子结构

一个问题的最优解包含这个问题分解过后子问题的最优解,或一个问题的最优解可以由该问题的一个或多个子问题最优解得到,则该问题具有最优子结构,也可理解为整体最优则局部最优。

3、贪心证明

一个问题能否用贪心算法求解的证明重点就在看这个问题是否具有贪心选择性和最优子结构性,例如有如下问题:

有一批集装箱(6个)要装上一艘最大载重量为100吨的轮船。其中,集装箱的重量分别为40吨、24吨、30吨、14吨、16吨、20吨。请在装载体积不受限制的情况下,将数量尽可能多的集装箱装上轮船。

采用重量最轻者先装的贪心选择策略,可产生最优装载问题的其中一个最优解。

14吨+16吨+20吨+24吨=74吨,可装入4个集装箱。

在进行贪心证明时只需要不用贪心法构造出一个解,然后证明贪心法不会比这个解更差即可。

假设问题存在最优解U且U中的第一个装载箱编号是i。

若i = 1,结论直接成立。

若i > 1,则设集合Y=U-{i}+{1},由于w1<=wk, 又因为U和Y集装箱个数相同,且U是最优的,则Y同样最优,因此第一个装载箱是可以存在于某个最优解中的。

则可证明此问题具有贪心选择性,贪心选择性确保了选择最轻的集装箱是对的

若0-1序列S=(x1,x2,...,xn)是最优装载问题装载量为T时的一个最优解,则S1=(x2,...,xn)一定是最优装载问题装载量为T-w1*x1的一个最优解。

则可证明此问题具有最优子结构,最优子结构性质确保了得到该问题每一步的最优解会得到整个问题的最优解。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值