赞
踩
此篇文章不讲述算法与代码之间的关系(即没有算法干货),只是叙述我个人对算法与生活之间的某种联系与感悟,但是在面试时面试官问起自己对于算法的理解时还是有一定帮助。
在这个日新月异的时代里生活,越来越觉得这个世界很多事情是无解的,越来越觉得平衡是最难处理的问题。
一个经典的贪心算法生活例子:
假设我们有 1 元、2 元、5 元、10 元、20 元、50 元、100 元这些面额的纸币,它们的张数分别是 c1、c2、c5、c10、c20、c50、c100。我们现在要用这些钱来支付 K 元,最少要用多少张纸币呢?
问题目的:
要尽可能用最少的纸币来支付K元
解决方案:
在生活中,很显然,我们肯定是先用面值最大的来支付,如果不够,就继续用更小一点面值的,以此类推,最后剩下的用 1 元来补齐。
算法思想:很直接,每次决策都选择当前方案的最优解。
两个经典的回溯算法电影:
2004 年上映了一部非常著名的电影《蝴蝶效应》,讲述的就是主人公为了达到自己的目标,一直通过回溯的方法,回到童年,在关键的岔路口,重新做选择。
还有一部2014年上映的电影《明日边缘》,同样也是主人公为了拯救世界,通过不断重启时间进行回溯“刷熟练度”,熟练的让人心疼,最终如愿成功。
算法思想:其实本质上就是一种暴力枚举,尝试所有的解决方案,要么成功要么成仁。(与暴力枚举不同的是回溯在某些情况下可以进行剪枝,从而少走冤枉路)
一个经典的动态规划案例:(0-1背包问题)
对于一组不同重量、不可分割的物品,我们需要选择一些装入背包,在满足背包最大重量限制的前提下,背包中物品总重量的最大值是多少呢?
有关此题的具体求解在这里我就不做叙述,有兴趣的朋友可以自行百度,这里我直接给出动规思想的结论。
算法思想:拥有全局观,目标只为达到最终目的,每一步棋都必须在高效且在意料之中。
人这一生往往会有许许多多的选择岔路口,那么又该如何选择呢?
现实的世上没有后悔药,想要通过回溯思想找到最好的那合适的那条岔路口必然不可能;
偷懒一点,选择当前对于自己最好的那条路,这就是贪心思想;
至于动规,拥有上帝视角,我们知道自己的最终目标是什么,也知道各种道路的选择后果以及如何为自己规划一条长远的道路来实现此目标,但是往往绝大多数都没能达到目标,因为他们都倒在了中途。
x2=-1 这道题在初中(实数域)中的确是一道无解题,但是换个角度放在高中(复述域)却是一道有解题。或许无解题本身也并非是绝对无解。有时候船到桥头未必直,车到山前也未必有路,但是对于无边的苦海,回头必定有岸!
mentor给我分配一个feature,我发现其中的一个功能以我目前的能力无法实现。
也许这本就是一个无解的问题,但是实际上也没这么简单。
首先,自己刚开始得使用回溯思想尽可能尝试过每种方案思路,然后最终确认自己确实做不了。后面通过沟通后发现选择贪心思想放弃此功能至少是当前的最优解,至于日后自己能力更上一层楼后回头再看这个“无解”的问题,也许它本身已不再是无解。
在男女关系中一个最常见的无解话题就是我不喜欢你,不喜欢就是不喜欢,没有为什么
遇到这种问题,一些人的解决方案就是我不服气,我要把所有可能的希望都把握住,都尝试过,难道这样就真的能找到解吗?未必,就像x2=-1 在实数域求解一样,最终也许自己就成为了“舔狗”。
另一些人的解决方案就是既无解则弃之,不得不说很多时候这确实是当前的最优方案。
而还有一些人发现了无解的本质,通过换药进入一个新的层次来自解无解题。
这三种算法思想在生活中各有利弊:
回溯思想体现了一种不放弃的心境,从好的方面来说自己尽力了问心无愧,但是很多时候的无解题用这种思想去处理问题最终只会是赔了夫人又折兵那般的身心俱疲;贪心思想体现了一种及时止损的心境,既然此题本无解,那我就直接放弃它,至少此选择对于当前的自己来说是最优方案,但是这种思想会导致自己眼界很低,不再有全局观又何谈去实现自己的最终目标;动规思想体现了一种全局观的心境,这无疑是最好的选择方案,但是为了往往绝大多数人都不会选择它,因为行百里者半九十,而很多人连九十都达不到,最终的结局很可能还不如贪心思想的结局更好。
也许,选择哪种算法思想也成为了一道无解题,也正如前言所述,世上很多事情是无解的,平衡才是最难处理的问题。无解题本无解,生活终究还是快乐最重要,所以站在生活的角度对于无解题不去思考它不去尝试解决它或许才是最好的方案!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。