当你在一个大城市租房时,怎样才能使自己租到最好房子的概率达到最大?认知科学家说,假如你给自己一个月的寻找时间,你应该把其中37%的时间(约11天)用于探索你的选项。过了这个时间点之后,你就要租下你看到的第一个胜过之前看过的房子的那套房子。找房子属于数学上的“最优停止”问题,37%法则是解决这类问题的算法。
布莱恩·克里斯蒂安是《华尔街日报》的记者,汤姆·格里菲斯是加州大学伯克利分校的心理学和认知科学教授,二人合著了《赖以生存的算法》一书。书中说:“‘算法’一词总让人觉得高深莫测,但一个算法其实就是用于解决问题的有限的步骤序列。”
许多人对电脑都有一个误解,以为电脑会为困难的问题找出简单、正确的答案。其实计算科学关心的是困难问题的近似答案。我们让计算机以闪电般的速度做许多事情,但它们的处理能力是有限的,于是总要权衡。什么时候快比准确更好?在什么时候要停止搜寻完美的解决方法,转而给出一个手头就有的办法?这跟人在生活中遇到的问题类似。
找停车位跟找房子一样,属于“最优停止”问题。人们都想找一个离自己的目的地比较近的停车位,但在不断靠近目的地时,每当经过一个空的车位,你都要做一个决定:就停在这里,还是看看自己的运气是否足够好,前面还有车位?假如你走在一条无限长的路上,停车位是均匀分布的,你的最优选择是驶过一定距離内的所有空车位,然后停在之后的第一个空车位上。至于多远的距离,这取决于车位的被占用比率。如果99%的车位都被占用了,你应该从距离目的地还有大约70个车位的地方(约0.4公里)开始,再看到空车位就该停车了。与之类似,如果一个人打算从18岁开始找对象,并在40岁以前结婚,他应该选择在26岁时遇到的心仪对象。
另一个对日常生活有帮助的算法叫摩尔算法。冰箱里的每一样食物都有各自的保质期,先吃马上要过保质期的食物能够最大限度地减少浪费。但有时候快过期的并不是你最想吃的,为了把坏掉的食物量降到最低,可以使用摩尔算法。根据摩尔算法,我们按照食物的保质期食用,最先过期的要最先食用,可一旦看上去无法及时吃掉下一样食物,我们就该暂停,检视一下计划中想吃的食物,然后扔掉最大的那一种,即需要最多时间才能吃掉的那一种。比如扔掉那个好几次才能吃完的西瓜,这样才能早点食用后面的食物。然后重复这一模式,按照保质期的长短摆放食物,赶不上时就扔掉其中最大的。