贪心算法证明

这里记录一下常见贪心算法的证明,也是算是我自己的一个总结和复习,感觉这个抽象,虽然算法不难,但是要证明比较难,而且每一个种贪心要是没见过还可能真的写不出来,网上看了不少资料结合老师的ppt,如果有说的不对的地方,欢迎大家讨论,单纯当记录。

无论什么贪心算法的证明,我们首先要知道,大体两个步骤:

1.贪心证明

2.最优子结构证明

无论是什么贪心问题,想要证明都是这2步,一般来说,我们的贪心证明常见的就是使用数学归纳法,先k=1,然后k>1,只要成立即可,最优子结构的证明的话,则通常我们是使用的反证法进行证明。
 

最优装载问题

首先还是证明贪心算法,当k=1,即选一个箱子,那没什么好说呀,就最小,就是贪心

如果k>1,那么在这里就有意思了,我们还是先假设一个解N={1,2,...k+1},按照题目意思,其中w1<=w2<=w3...<=wk+1,那么如果N* = {2,3,...k+1},则C* = C - w1,其最优就为I*,那么I={1}\cupI*,则I是最优,但是呢我感觉这种讲法不是很好。

我换一种,我在其他地方看到的证明法,其实思想差不多,但我觉得这种更好,如果k>1,假设N={x1=1,x2=0,...xk=0,xk+1,....xn},我们只需要证明N为最优解,1就是选,0就是不选嘛,对于重量来说,连加wiNi = 连加wixi - wk + w1 <= C,那也就是将k替换为了1,肯定更小,成立,至于个数1换1自然一样,其实和上面那种是一样的,这不过这个更具体了

最优子结构的证明的话呢,直接假设I不是最优,那么必然存在I**是最优,对吧,也就是说I*>I,那么I*是关于N*和C*的解且I** - {1} > I - {1} = I*,很显然是个悖论,故得证。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷眼睛亮亮的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值