Discrete Optimization (Coursera) week 2-1 贪心算法求解背包问题

在这里首先以背包问题为例子,介绍一下贪心算法。

Greedy Algorithm

贪心算法非常直观,就是每一步都 take local optimum steps。

这可能是最直觉的算法,但是其实可能也是最常用的,最实际的算法。尽管 greedy algorithm往往不能获得 global optimal solution,它却非常容易 implement。在实操中,我们遇到什么问题,不要怕,要勇敢面对它,上来就是拿Greedy一通操作——起码能跑,这就之后给我们的答案提供了一个 baseline:你看,我随便写个算法就有这个performance,之后怎么地也得比这个高才能说我们在进步吧?

不过贪婪也可以玩出花样来的——就knapsack problem为例,可以让策略为:

  1. 先拿重量最重的

  2. 先拿价值最高的

  3. 先拿拿重量小的

  4. 先拿密度最大的。

    这几种不同的策略得到的结果是迥异的。

举个例子:你来到一个宝库前面,但是你只能拿10 kg的物品。这个宝库也不大,里面有一个 8kg的物品A,价值 13亿元;一个3kg的物品B,价值7亿元;两个5kg的物品C,价值各10亿元;还有三个2kg的物品D,价值各1亿元。

在这里插入图片描述

如果优先选择最重的:拿Ax1, Dx2,最后得到总价值15亿元;

如果优先选择最贵的:拿Ax1, Dx2,最后得到总价值15亿元;

如果优先选择最轻的:拿Dx3, Bx1,最后得到总价值10亿元;

如果优先选择密度最大的:则首先进行简单的除法,那么A密度 13/8 = 1.625亿元/kg;B密度7/3=2.33亿元/kg;C密度10/5=2亿元/kg;D密度1/2=0.5亿元/kg。因此这种情况下首先选择B,则还剩7kg容量;接下来C的密度最大,选择C,还剩下2kg容量;最后A的密度更大,但是装不下,所以选择Dx2。最后得到Bx1, Cx1, Dx2,总价值18亿元!

可见,即使是贪婪算法,也是有不同的贪婪标准,进而会导致不同的结果的。

不过,贪婪算法通常不会给出最优解,在这个问题中,更优的选择(实际上,也是最优)显然是选择Cx2,得到总价值20亿元。当然,我们能够看到这样一个更好的解是因为sample size很小。在实操中,贪婪算法真的算是蛮不错的方法啦!

那么,有没有可以确定无疑找到最优解的方法呢?有的,当然是有的。不过通常来说,解的quality越高,那么当问题的sample size变大,取得解的时间将会疯狂增长;而一些很naive的方法,虽然一般得到的不会是最优解,甚至比较low quality,但是它们通常求解非常快,不太会随着sample size增大而增大很多。这大概也是 quality and speed的一个trade-off吧。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《离散事件系统模拟第五版》是由Jerry Banks等人合著的一本关于离散事件系统模拟的教材。本书主要介绍了离散事件系统模拟的概念、原理和方法,并提供了大量的实际案例和应用。 这本教材首先介绍了离散事件系统模拟的基本概念,包括模拟的定义、离散事件和连续事件、系统和模型等。然后详细介绍了模拟的建模过程,主要包括问题分析、模型建立、数据采集和验证等步骤。接着,书中介绍了常用的模拟实验设计方法,包括单因素实验设计、多因素实验设计和灵敏度分析等。此外,本书还介绍了一些高级的模拟技术,如模态建模、代理的应用等,以及与仿真相关的统计分析方法。 《离散事件系统模拟第五版》的特点之一是实例丰富。书中提供了大量的实际案例和应用,涵盖了不同领域的模拟问题,如生产调度、物流管理、服务系统优化等。这些实例不仅有助于读者理解模拟的概念和方法,还帮助读者将模拟技术应用于实际问题解决中。 此外,本书还提供了大量的习题和案例分析,用于巩固读者对于离散事件系统模拟的理解和应用能力。书中还介绍了一些常用的模拟工具和软件,如Simul8、AnyLogic等,帮助读者更好地进行模拟实验。 总之,《离散事件系统模拟第五版》是一本全面介绍离散事件系统模拟的教材,既系统性地介绍了模拟的概念和建模方法,又通过实例和习题帮助读者理解和应用模拟技术。这本教材对于学习和研究离散事件系统模拟的读者来说是一本重要的参考书。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值