vlambda博客
学习文章列表

动态规划算法和贪心算法


“动态规划算法”和“贪心算法”,它们的思想都是通过分治法,求一个大问题的最优解。主要过程就是,将一个大问题分解成很多小问题,分别求每个子问题的局部最优解,分而治之,最终合成大问题的最优解。

“动态规划”的理念是“反复回头”,也就是,我们分解的小问题之间存在关联性,在一个子问题上得到的最优解,也许会在下一个子问题上被证伪,那么这个算法就会返回去,修改上一个子问题的选择。在这种理念下,获得的将是“全局的绝对最优解”。

而“贪心算法”则恰恰相反,它的理念是“有便宜就占,绝不回头”,也就是在每个子问题上取最优解,直到所有子问题被处理完,再合成大问题的最优解,过程中不会回头修改任何已经计算过的子问题的解。这种理念下,获得的将是“局部的相对最优解”。

我们每天面对各种生活事件,都在做抉择,不能回到过去,也无法修改。

生活其实就是(也仅仅只能)在每个当下已知的条件下做当下的最优选择,所以我们每天都在做“贪心算法”。想明白这一点对我的改变在于,我不再抱怨“要是...就好了”,也不再害怕,“如果当时坚持...,会更好吗?”,“如果当时....?”,生活从来就没有如果,我们在三维的空间内仅能随时间流逝而不断舍弃已发生的部分,只能看着当前的部分。

我永远只能基于当下的认知水平,在不完美的条件下做我认为最利于当下的选择,而不是在理想情况下做最优解,抱怨“为什么条件不完美”是没有意义的。没有任何情况可以保障自己获得百分比完美,也从来不具备“全部条件均最为理想”的状态。

每个个体的认知差异非常大,更不必因为外界的“认为”来决定自己的选择。当下的一秒钟瞬间已是绝版,能让自己在每时每分都充盈,愉悦,充分的接纳自己的一切,即是最好的算法。

2022.4.20 小憩