从贪心算法到暴力递归法——从局部最优到整体最优

前情提要

在上一篇文章(从贪心算法开始认识动态规划——硬币找零问题)里,我们已经学习了贪心算法的思想,并且发现贪心算法是一种使用局部最优思想解题的算法,即从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的速度去求得更好的解,当达到算法中的某一步不能再继续前进时,算法停止。

通过硬币找零问题,我们也发现了贪心算法本身的局限性:不能保证求得的最后解是最佳的

因此,我们需要从整体最优的角度来解决算法问题。

最优问题的本质

所谓最优化问题,就是指在某些约束条件下,决定可选择的变量应该取何值,使所选定的目标函数达到最优的问题。

从数学意义上说,最优化方法是一种求极值的方法,即在一组约束为等式或不等式的条件下,使系统的目标函数达到极值,即最大值或最小值。在数学里一切都是函数,现在我们先把这个问题用函数形式来表示。

目标函数

假定给出 y 元硬币,硬币面额是 5 元和 3 元,求出需要的最少硬币数量。所谓的最少硬币数量就是 5 元硬币和 3 元硬币的总数,假定 5 元硬币数量为 x 0 x_0 x0​,3 元硬币数量为 x 1 x_1 x1​,那么用函数表示就是:

  • f ( x 0 ​ , x 1 ​ ) = x 0 ​ + x 1 f(x_0​,x_1​)=x_0​+x_1 f(x0,x1)=x0+x1

这就是所谓的“目标函数”

但是这个函数现在是没有任何限制的,我们希望对此进行约束,使得 5 元硬币和 3 元硬币的面值综合为 y。为此我们需要给出一个约束:

  • 5 x 0 ​ + 3 x 1 ​ = y 5x_0​+3x_1​=y 5x0+3x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr.郑先生_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值