← 拆书合集 · x → f → f(x)
算法之美

算法之美

Algorithms to Live By · 2016
Brian Christian & Tom Griffiths
x
何时停止物色、尝新还是守旧、东西怎么放——这类越想越纠结的人生难题,真的只能靠「想得更透」来解决吗?
f
许多人生难题在结构上就是计算机科学早已证明最优解的经典问题;理性不靠意志力,靠认出是哪道题、套用现成的最优算法——而最优算法本身就含「适时接受足够好的」。
f(x)
纠结时先认题再动手:良定义的题套 37% 法则、探索 vs 利用、LRU,并把「没选到完美」当作最优输出接受;标准会漂移的题(关系、意义)先拦在算法门外。
x · 作者在讨论什么问题

看到第几套房子该出手?去新开的餐厅,还是回熟悉的老店?桌面和柜子里的东西按什么规则摆?这类难题的共同点是:越想越纠结,选完还总怀疑自己选错。惯常的解释把它归给性格——不够果断、意志力不足、没想清楚。

Brian Christian(作家)与 Tom Griffiths(认知科学家)要拆的正是这个直觉。这类纠结靠硬想解决不了,不是因为想得不够,而是「想」本身没有终点:找房时你永远不知道下一套会不会更好,把利弊清单再列一百遍,也推不出该停在哪里。

但换一双眼睛看,这些难题会显出另一种形状:选项按顺序出现、只能看一次、错过不再来、必须在不知道后面还有什么的情况下选定一个——这在计算机科学里叫「最优停止问题」,几十年前就被证明了最优解。于是问题换了性质:不是你不够果断,而是你在用硬想的方式,做一道早已有标准答案的计算题。

f · 作者怎样回答

全书的回答由三个部件加一个推论构成,合起来才是完整的机制。

部件一:结构同构。 别看场景,看计算结构。找房、招聘、相亲表面不同,共享同一结构(序列选项、错过不再来),都是最优停止;尝鲜还是守旧,是在有限次机会里分配「获取新信息」与「兑现已知收益」,这是探索 vs 利用;有限的手边空间放什么,是缓存问题。人生难题因此可以直接借用计算机科学的题库。

部件二:已被证明的最优策略。 题库里的答案不用你发明。最优停止的解是 37% 法则:前 37% 的选项只看不选,用来建立标准,之后第一个超过之前所有的就出手。探索 vs 利用的解取决于剩余机会数:时间还长就多探索,时间不多就多利用——年轻人爱冒险、老年人念旧,在数学上都是理性的。缓存的解是 LRU:最近最常用的放最近,所以乱桌子可能恰恰最优——常用的东西自然浮在上面。

部件三:识别替代硬想。 前两个部件接通后,理性的动作就从「更努力地想」变成「认出这是哪道题」。纠结时的正确反应不是加大思考强度,而是先做问题分类:题认对了,最优策略是现成的。

关键推论:次优的正名。 37% 法则并不保证选到绝对最好的,它保证的是在无法预知未来的约束下期望值最高。换句话说,最优策略本身就包含「适时停止、接受一个足够好的」。「没找到完美答案」常常不是你的失败,恰恰是最优算法的正常输出——这是全书最解放的一步,给了完美主义一个数学上的赦免。

x:何时停手?尝新还是守旧?东西怎么放?——越想越纠结
        │ 别加大思考强度,先认题
        ▼
f:这在计算机科学里是哪道已解的题?
   ├─ 序列选择、错过不再来 = 最优停止 → 前 37% 建标准,之后见好即收
   ├─ 有限机会分给尝新还是守旧 = 探索 vs 利用 → 按剩余机会数定比例
   └─ 有限空间放什么 = 缓存(LRU) → 最近用的放最近
        │ 套用被证明的最优策略
        ▼
f(x):接受「足够好」= 最优输出;标准会漂移的题拦在算法门外
f(x) · 怎样回应这个世界

接受这套回答后,变化落在四个层面。

判断的第一步变了。以前纠结时先列利弊、反复比较;现在先认题:这是最优停止(错过不再来的序列选择)、探索 vs 利用(有限机会怎么分)、还是缓存(有限空间放什么)?纠结本身从性格缺陷变成一个信号——题还没认出来。

行动的标准变了。找房和招聘不再「再看一个,万一更好」,而是前 37% 只建标准不出手,之后见到第一个超过所有前者的就定下;选餐厅先问「我还会在这座城市待多久」,剩的时间长就多试新店,快离开就回老店;收纳不再追求分类完美,最近用的放手边即可。

对人的方式变了。「你想怎样都行」看似客气,实则把决策的计算成本整个甩给对方;给出两三个明确选项才是体贴——书里称之为「计算的善」(computational kindness)。

最重要的是多了一道克制。套算法之前先问:这道题是良定义的吗?目标清楚、选项可枚举、错过不再来的——找房、招聘、排程——交给算法;标准会变、可以回头、连「好」的定义都在漂移的——要不要继续一段友谊、我到底想要什么——别硬塞进算法的形状。算法能告诉你如何最优地达成目标,对「这个目标值不值得」完全沉默。认出哪些题不该进算法,与套对算法同样重要。

资料校准