总结 贪心算法_数模干货 | “贪心算法”

本文介绍了贪心算法的基本思想和三个经典案例,包括纸币问题、世界杯比赛策略和小组赛策略。通过这些例子,展示了贪心算法如何寻找局部最优解以构成整体最优解。最后,文章提供了一个用MATLAB实现的贪心算法示例,用于找到10个点之间的最短路径。
摘要由CSDN通过智能技术生成

6a1fcc3837510b69dc7e6d873ddd3e9d.gif

5c2e6e6977101844361e64e0fc183870.png

“贪心算法”

aae7662f9a85fd5de038c3b9dbc0cdec.png

Greedy Algorithm

我们都知道,在去自助餐的时候,为能了能吃回本金,一般会选择不去考虑吃的搭配,而是从最小的如虾和蟹这类,按递减其他低价值的,当不足填饱胃口时才去考虑下一个较小价值,如面包,这就是贪心算法的核心思想。

DEFINITION

贪心算法是指在对问题求解时,总是做出看起来是最好的选择。它是对问题进行逐一进行构造最优解,在每个阶段,都作出一个看上去最优的决策。决策一旦作出,就不可再更改。

af89dc5f4a9368c59872bd319ba5f5b4.png

三大案例

c6c851816570c0720ec69bd0dd137204.png 979bd02a494c670a074c0fdf7072da4e.png 14e44771dee2f0396468e2a224b50a4b.png

Part 1

纸币问题。比如,在2010年左右,你要买一台998元的手机,当柜台询问你是否有零钱,这时候问题就来了——应该用至少多少张的纸币才能刚好凑出998元?这是个非常经典的问题,那么贪心的策略又是什么呢?贪心策略,就是先使用最大面额的纸币去尽可能凑齐总金额,如果再多一张100元就超值了。那就用50元的,如果再多一张就超值,就用20元的,然后再用10元,以此类推,总要有一轮,刚好凑齐998元。以整体为目标,分解出多个逐步的最优部分,最终能得到问题整体的最优解。

e5094f3aa14c7eecf5a2b8df18fcb01e.png d6a90935974ada811d5bc9aebc161494.png 1260ceae01a5c497ade1ee10b4d8970d.png

Part 2

世界杯进入到了淘汰赛阶段。一个球队想要取得最好成绩,那么一定会采用这样的策略,就是努力打好当前的比赛,赢下对手,打赢了当前第一轮就相当于局部胜利,一直打赢到最后就是整体胜利,努力打好每场比赛的策略就是贪心策略。但这总是最优解吗?不。

2b14f2e281099eff990e5e9f8eecb71f.png e2365ae6c0efdb0d7c91f43712e46bcb.png c87358875561162992f4eb4bb0c86cfc.png b11a349edd120ba35879e6365a701f81.png

Part 3

如果不是淘汰赛,而是小组赛。若球队在此之前已经踢了两场,并成功拿下胜利。那肯定可以出线了,最后一场如果再赢,就很有可能遇到上届冠军,如果打平或者打输了,球队就有可能避开上届的冠军,那么这个时候那个教练大概率情况下会选择把主力撤下来,然后让一个相对来说不是非常强的阵容上,让主力球员们得到充分休息,养精蓄锐,在下一场到了淘汰阶段时再来拼尽全力,这样的才算是最优解。既避开了难以攻破的球队,又保住了自家球队的出线机会。

SUMMARY

由此,我们总结贪心算法即是:

局部最优解

069f224e16fc5ed62d3743a56cf3f10a.gif

整体最优解

例题:如果有10个点,起点已经固定,

不断选出最近的目标点。以此类推

串起来所有的点(用数学软件MATLAB表示)

进行贪心策略所用的MATLAB代码

向上滑动阅览

424098db0c663fdd3fcfea5b1f66e3df.png b976657f11e098a1a43b262881f0dd54.png 5a4046c1edd3b5bef950ef44bc14e14f.png eb3ec3b3ad3dbc0a3fc11851c1aa8875.png 74e83f6f88b2356a5213584f0a1612d6.png 5f726c2f1afb176755f0ca6fc21f993b.png

图中依据贪心算法按最近顺序连接,可得推出最短路径距离。

7f990134bf04186b79965671f9782dcf.png f644ae553fd08abe36368a856830f220.png

撰稿| 许斯杰

排版| 许斯杰

终审| 文秘部

29540ae5be0c9947e191a39cebdba644.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值