If you can’t explain it simply, you don’t understand it well enough.
我把之前一篇文章发给一个女性朋友看,得到的反馈是“卖弄概念,表述单薄,缺乏深度,收尾草率,一通胡扯”。
好吧,我承认,我写的就是一坨屎。
今天,我决定抛开一切概念,以第一人称的视角,重新解释动态规划
这种行动策略。
小偷偷东西
我是一个小偷,现在是凌晨12点,我正在入室盗窃。屋主的主人随时可能醒来,所以我要在天亮之前,偷窃屋内所有价值最高的东西,然后跑路。我要制定一个详细的行动纲领,指导我做这件事情。
这件事情就是:在有限的时间里面偷窃价值最高的物品。
偷取物品需要成本,这个成本我们简单地当成时间成本,单位是小时。
我创建了一个符号来表示物品的大致属性。
1
2
3
4
5
6
7
8
# 偷iPhone需要1小时,而它价值5000块
iPhone(1,5000)
# 偷洗衣机需要3小时,而它价值2000块
洗衣机(3,2000)
# 偷现金需要1小时,而它价值10000块(现金)
现金(1,10000)
以此类推......
表格的内容为当前最佳决策产生的价值
物品\时间 | 0:00 | 1:00 | 2:00 | 3:00 | 4:00 | 5:00 | 6:00 |
---|---|---|---|---|---|---|---|
洗衣机(3,2000) | 0 | 0 | 0 | 2000 | 2000 | 2000 | 2000 |
switch游戏机(1,1500) | 0 | 1500 | 1500 | 2000 | 3500 | 3500 | 3500 |
iPhone(1,5000) | 0 | 5000 | 6500 | 6500 | 6500 | 8500 | 8500 |
保险柜里的现金(3,10000) | 0 | 5000 | 6500 | 6500 | 6500 | 16500 | 16500 |
结论是显而易见的,如果我有5个小时的时间,偷switch游戏机
+ iPhone
+ 保险柜里的现金
(1500+5000+10000=16500)是最优选择;如果屋内没有现金,那么我只能选择 洗衣机
+ switch游戏机
+ iPhone
;而如果这个房间只有一台洗衣机,那么我就只能花3个小时的时间偷走洗衣机。
至此,我们可以得出第一个结论:有限的条件(时间)制约了我收益的最大化
但这里有一个问题,直接给我5个小时干就不完事了,横轴的这个时间的意义是什么?我们接着来看第二个例子。
秦王扫六合
秦王扫六合,虎视何雄哉!挥剑决浮云,诸侯尽西来。
明断自天启,大略驾群才。收兵铸金人,函谷正东开。
铭功会稽岭,骋望琅琊台。刑徒七十万,起土骊山隈。
尚采不死药,茫然使心哀。连弩射海鱼,长鲸正崔嵬。
额鼻象五岳,扬波喷云雷。鬐鬣蔽青天,何由睹蓬莱?
徐氏载秦女,楼船几时回?但见三泉下,金棺葬寒灰。
我现在是秦王了,立志要扫六合(国)。我参照第一节的内容,对春秋六国进行建模。
1
2
3
4
5
6
# 韩国离我秦国最近,它的领土价值1,实力计为1
韩国(1,1)
# 燕国虽然小,但离我很远,打它比较费力,成本比较高,所以实力计为2
燕国(2,1)
其他以此类推......
这里我们定个新规矩:
- 只有实力>其他国家实力,才能实现兼并
- 兼并其他国家,能够把其他国家的价值加到自身的实力上面
所以我们会得到这样一个表:
其他国家\自身实力 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
韩国(1,1) | 0 | ||||||
赵国(2,3) | 0 | ||||||
燕国(2,1) | 0 | ||||||
魏国(1,1) | 0 | ||||||
楚国(5,8) | 0 | ||||||
齐国(2,3) | 0 |
可以看到,我作为秦王,如果本国只有1的实力,那么呆在家里扫地就行了,还搞什么兼并战争?
这个表格的其余部分我就不填了。
最终我们会得出这样的结论:
- 当我有实力时,可以一举击破比我弱小的人
- 当我实力增长,就可以挑战以前打不过的人
这个时候,我们就解答了第一个故事里面的问题:横轴(时间)的意义。
条件是有限的,并且条件会随着自身的能力的增长/衰弱和时间的推移,而发生变化
这就是“动态”的意思。
而且对于这个游戏来说,每一个参与的国家,他们也有自己的算盘。对于他们来说,这也是一个动态规划的问题。主语和宾语发生互换。
至此,我们可以得出一个新的结论:
- 当自身弱小时,只能团结一切可以团结的力量(内援外援)
绿茶骗舔狗
我直接把上面的表格拿来用。
舔狗\绿茶的时间 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
舔狗A(1,1) | 0 | ||||||
舔狗B(2,3) | 0 | ||||||
舔狗C(2,1) | 0 | ||||||
舔狗D(1,1) | 0 | ||||||
舔狗E(5,8) | 0 | ||||||
舔狗F(2,3) | 0 |
到这里,我觉得可以更抽象化一点,讲清楚各个概念了。
有限的条件: 绿茶的青春年华
基本策略:广撒网,多认识点男的,才有多种排列组合
局部最优解:在有限的条件,让N个舔狗给我花钱买礼物。比如,本绿茶正在跟舔狗A逛街,于是发消息给舔狗B,让舔狗B给我打钱。这是一种多线程的高级操作,这种人对事务锁的理解远超常人。
最大价值:在有限的时间内,所有舔狗付出的总和
那这里有个问题,秦王和绿茶都是动态规划的践行者,但是我们为什么那么讨厌绿茶婊呢?
因为绿茶婊无视了道德契约,不尊重公序良俗。
而且她这种做法,只顾短期收益而忽略了长期收益。
想想,如果舔狗ABCDEF一起开个会,那场面想想就刺激。
结语
动态规划其实不止是算法,更是一种方法论,能够帮助你更好地规划自己的人生和时间。