【陪女朋友逛街】引起的算法问题

本文通过实际场景展示了如何运用分治、贪心、动态规划等算法解决女朋友在北京路逛街时的美食选择问题,兼顾口味和预算,实现高效满足胃口的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

女朋友去北京路逛街的时候看到了很多好吃的,特别想吃,但是咱豪气,女朋友想吃啥就买啥

在这里插入图片描述

“背包问题”

遇到了一个问题,女朋友的胃口有限,咱该如何处理呢

在这里插入图片描述

五大算法

1. 分治法

我:这么多美食,咱能吃的也不多,不过可以分成3大类:主食、小吃、饮料

女朋友:主食的话,有猪脚卤粉、麻辣烫、凉拌… 算了,我们还是吃螺蛳粉吧~
在这里插入图片描述

女朋友:小吃的话,有周黑鸭、串串、兔头… 算了,我们还是吃臭豆腐吧~

在这里插入图片描述

女朋友:饮料的话,有酸奶、西瓜汁、金桔柠檬… 还是喝菠萝啤吧~
在这里插入图片描述


我提出了将想吃的分成了3大类,等于将 “ 吃什么 ” 这个大问题分成了 “ 怎么选择主食、小吃、饮料 ” 3个小问题

分治法(分而治之):待解决复杂的问题能够简化为几个若干个小规模相同的问题,然后逐步划分,达到易于解决的程度。

女朋友的3次回答都是重复思考怎么在同种类美食里选择自己最喜欢的

递归:直接或者间接不断反复调用自身来达到解决问题的方法,要求原始问题可以分解成相同问题的子问题

2. 贪心算法

女朋友不同意我的上一个说法,就是想吃
在这里插入图片描述

我:真拿你没办法,据我对宝宝的了解,我给你按你最喜欢吃的给你排序:小龙虾 > 牛蛙 > 臭豆腐 > 炸串 > 蕨根粉 > 凤爪 …

女朋友:那我们先吃小龙虾~

在这里插入图片描述

(一个小时后)

女朋友:小龙虾吃得好饱啊,牛蛙和臭豆腐我已经吃不下了,可是我还能吃炸串,冲冲冲~

在这里插入图片描述

(半小时后)

女朋友:好饱啊,其它都吃不下了,只能喝点东西了,有奶茶、水果茶… 那我们买杯西瓜汁吧~

在这里插入图片描述


女朋友在吃完最爱吃的东西后,再根据剩下的胃口选择最喜欢的

贪心算法:就问题而言,选择当下最好的选择,而不从整体最优考虑,通过局部最优希望导致全局最优

3. 动态规划

我:既然不知道该吃啥,咱把问题简化一下,假定 “6成饿” = “4成饱” ,“7成饿” = “3成饱” ,如果现在你只有 0成饿,也就是非常饱,你会吃什么?

女朋友:0成饿 当然是什么都吃不下了
在这里插入图片描述

我:如果只有 1成饿,你会吃什么?

女朋友:那我只能吃个甜筒 ~
在这里插入图片描述

我:如果只有 2成饿,你会吃什么?

女朋友:虽然能吃的有很多,像 奶茶 / 柠檬茶 等等,但是我还是打算喝杯 酸奶 ~
在这里插入图片描述

我:是不是也可以吃2个 甜筒 ~那如果只有 3成饿,你会吃什么?

女朋友:能吃的就多了~ 有 凤爪 / 臭豆腐 / 炸串 ~但我还是最喜欢 臭豆腐 ~
在这里插入图片描述
我:其实还可以吃 甜筒 + 酸奶~如果只有 4成饿,你会吃什么?

女朋友:牛蛙 / 火锅 / 炸串 等等 但我最喜欢牛蛙~
在这里插入图片描述

我:列出一个表格

饿度01234
食物甜筒酸奶
2个甜筒
臭豆腐
甜筒+酸奶
3个甜筒
牛蛙
臭豆腐+甜筒
2杯酸奶
4个甜筒

我:考虑到重复的美食不纳入考虑范围,进行表格优化

饿度1234
食物甜筒酸奶臭豆腐
甜筒+酸奶
牛蛙
臭豆腐+甜筒

在这里插入图片描述

女朋友:我觉得再加上考虑价格的因素~就像 3成饱的时候,臭豆腐 比 甜筒 + 酸奶 要划算; 4成饱的时候,牛蛙 比 臭豆腐 + 甜筒 要划算,再次优化表格

饿度1234
食物甜筒酸奶臭豆腐牛蛙

我:那我们以此类推,补充剩余表格

饿度12345610
食物甜筒酸奶臭豆腐牛蛙牛蛙+甜筒
臭豆腐+酸奶
牛蛙+酸奶
臭豆腐+酸奶+甜筒
牛蛙+2个甜筒
2个臭豆腐
f(9)+f(1)
f(8)+f(2)

我们先把问题拆分至不可再拆分的问题再倒推回去

动态规划:组合子问题的解来解决原问题的解

4. 回溯算法

女朋友:我也拿不定主意

我:这里整个商业区那么多美食,还错综复杂那么多的分岔口,不如我们先沿着这条道一直往下走,碰到想吃的咱就买

女朋友:好啊,可是这条道走到尽头了也没有吃饱怎么办

我:我们就回到最近的分岔口,走到另一条道继续看嘛~

在这里插入图片描述


我们先选择某条路走到底,直到走到尽头再返回到路口,选择另一条道继续走下去

(尝试某一特定路线,如果没有后续也解决方案则 回溯 到上一步)

回溯算法:深度优先策略的典型应用,回溯算法就是沿着一条路向下走,如果此路不同了,则回溯到上一个分岔路,在选一条路走,一直这样递归下去,直到遍历万所有的路径

5. 分支界限法

我:这里也太大了,不如我们就选择这条街的美食,其它地方的我们以后再尝

女朋友很愉快地答应了~
在这里插入图片描述

分支界限法:在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解

其它算法

6. 暴力法

考虑到最近涨薪,我决定豪气一把,所有女朋友爱吃的通通买了,然后就吃一口,剩下的全扔了,虽然啥都吃上了,可是造成的浪费非常大(不推荐)
在这里插入图片描述


最后,我和女朋友都吃饱了回家了~

大家也学会了算法~完结撒花
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘泽宇Developer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值