精于“算计”的同时,也要学会“松弛”
2022/3/2 伯凡时间

    

     渺小的我们在面对多变的、不确定的、信息不全的世界时,常常会慌乱犹豫,不知该如何做出决策,但冷峻的算法可以有效帮助我们解决问题,让我们在纷繁复杂的选项中选中最优的那个。

     37%法则告诉我们,在找房子的时候,观望和下手之间最合适的时机是37%;对于预测未来,贝叶斯法则提示我们要事先给事件分配一个先验概率,有根据地做出准确预判;而基廷斯指数表,则对于应该探索未知还是利用当下,为我们提供了有效参考。

     采用被计算机通过大量运算证实的算法,渺小的我们得以在充满变数的生活中实现“人定胜天”,找到最优选择。但这并不意味着我们在生活中的每一个环节都可以完全依赖于精确的计算。为我们提供算法解决方案的《算法之美》一书不仅分享了很多解决生活难题的算法,同时它也提醒我们,有的时候过于依赖于计算,往往会让我们与真正的目标南辕北辙。面对复杂问题,有时我们也需要让自己“松弛”一下。

    

     例如我们准备在深圳买房,想看看深圳的房屋面积和房价之间的关系,以便在有限的资金预算下,选中最合适的房子。此时我们需要画出这样一个直角坐标系来,X轴是面积,Y轴是房价。最理想的情况是,面积和房价呈正比,两者的关系通过一条直线就可以清晰地展示出来。

     但现实情况是,面积与房价呈正相关而不是正比,我们不能凭空来想象面积和房价的走势,而是需要通过搜集各种数据点,然后设法连接这些点以得到我们需要的走势线,但由于这些点无法连接成一条直线,而是分散在直线的两边,此时需要通过多项式来拟合这些点,最终得到了一条非常复杂的多项式曲线。但我们都知道,其实找到一条贯穿在这些散乱点之间的直线,就可以看出房价的大致变化了,如果期望曲线完美走过这些点,不仅公式会变得更复杂,而且可预测性也将变得更低,这就是过于依赖计算可能引起的过度拟合的危险。

    

     因此,面对复杂的计算问题,我们需要反问自己:目标究竟是什么。算法是辅助我们达到目标的工具,而非目标的终点。例如你有个假期旅游计划,期望尽可能少花钱,而如果穷尽所有可能计算最便宜的旅游路线需要花费你3天的时间,那么这种计算就大可不必,在计算完成时假期很可能已经过了一半了,这时你参考攻略或参考以往经验来规划路线则是一种更好的选择。

     复杂问题的计算常常会耗费大量的时间,有时甚至花费了时间也无法计算出最优解,《算法之美》这本书中提到过一个安排婚宴座位的案例,主人公梅根·贝洛斯博士正在为安排自己的婚礼座位而发愁。现在已经有9个大学朋友坐在一起,她正在考虑再让谁加入才能让这样一个小小的团体凑够10个人一桌,更糟糕的是她数了数自己有11位亲戚。

     她需要通过合理的安排,避免因为人数的变动而避免的尴尬。对此,身为博士的她尝试用数学方法解决此问题:首先她使用数字来定义客人之间的关系,如果彼此不相识,就是0分,如果认识,就会得1分,如果是夫妻,则得50分……接着,她设定了最大桌容量、每桌的最低分值等约束条件,以保证座位被充分利用的同时,也不会出现每一桌都坐了陌生人的情况。最后,她给整个“项目”设定了一个总目标——最大限度提高每桌客人之间的关系得分。

     这听起来没有什么问题,设置一个固定程序让计算机自己去计算,然后按照最后得出的最优解去安排座位就可以了。但事实上,穷尽所有可能的座位安排需要运算10^107次,要知道宇宙的原子总数才有10^80个,穷尽所有可能的计算是无法完成的,这是最先进的电脑也无法处理的数据。

    

     那么遇到这种问题该如何解决呢?冷峻的计算机科学告诉我们,完美的答案有时并不存在,但我们可以通过给问题“松弛“,找一个次优解。

     上述问题之所以难以得出答案,是因为这是一个离散问题,在离散问题中变量只能是区间内的整数(如1、2、3、4),此时我们可以通过持续松弛将离散问题放宽为一个连续问题。在连续问题中,变量可以是区间内的无限个数值,因此,我们就可以向某人发送1/4或2/3的邀请使计算简化,最后再将得出的分数解化为最相近的整数解,依此得到安排座位的方案。尽管它没有提供真正的最佳答案,但它给我们提供了一个容易计算,且接近最优解的方案。

     除此之外,我们还可以运用拉格朗日松弛法来解决这个问题。这个方法简而言之就是:当我们面对一个“必须如何做”的约束时,可以问一句“如果不这么做会如何”。也就是说我们可以放弃一些约束条件让复杂的问题变得简单,同时为这种选择付出应付的成本。例如其实可以将上述的10人每桌的限制放弃,然后直接安排为9人桌和11人桌,尽管这样让两桌显得有些松散或拥挤,但巧妙避免了分桌的尴尬。

     “松弛”这种方法启示人们,在遇到死胡同时不妨从之前的思维定式中跳脱出来,通过改变或消除一定的限制条件然后继续探寻答案。过度热衷于完美主义可能会让我们与目标渐行渐远,此时我们应该从紧绷的状态中松弛下来,看一眼自己的目标。

     算法给我们的生活提供了很多帮助,通过精确的计算,我们可以掌握做决策的最佳时机,同时它也告诉我们,未必事事都要求最优解,松弛一下可能是更好的选择。而对于一个难题,到底要精于“算计”,还是“松弛”简化,则取决于我们到底想要达到什么目标。我们需要谨记,算法并非终点,而是我们接近终点的工具。

    

     推荐阅读:

    

     到底应该“活在当下”,还是“追求远方”?

    

     悟来往之不谏,知钉钉犹可追

    

     盯着目标看,而不是对手看

    

     用“算法”给我们的生活决策增加一点“底气”

    源网页  http://weixin.100md.com
返回 伯凡时间 返回首页 返回百拇医药