我们还可以从许多可能的启发式类型中进行选择。现在已经知道启发式是什么了,接下来的问题是它们与多样性有什么关系。在这里,先描述四类常见的启发式:拓扑启发式(topological heuristics)、梯度启发式(gradient heuristics)、允许犯错启发式(error-allowing heuristics)和群体启发式(population heuristics)。这些类型的启发式之间有一定的重叠,但是通过这样的分类,能够更清晰地阐明启发式的多样性。
事实上,大多数人都经常使用以上四种类型的启发式。假设,卡特在准备晚餐。他打开了冰箱,盯着鸡胸肉看,心里想着:“要不要做个咖喱鸡?”除非他的家人非常喜欢他以前做的咖喱鸡,这样的话,他只需要完全按照以前的方式做就可以,否则他应该尝试一下某种启发式,在他以前做过的最好的咖喱鸡的基础上做得再好一点。再假设他决定加入更多的红辣椒。如果卡特是按类型有序地摆放各种香料的,那么“加点辣椒”实际上就是一种拓扑启发式,因为辣椒在香料柜中的位置是靠近咖喱的。或者,卡特可能听他的家人说过之前咖喱鸡味道太咸了,所以他可能会决定少放点盐。这是梯度启发式的应用,因为卡特正朝着他最应该提高满意度的方向前进。另外,卡特也可能会闭上眼睛,随机选出一种香料,可能是迷迭香,也可能是小茴香,这种方法也许有效,也许没效。在这样做的时候,他遵循的是一个允许犯错启发式,需要注意的是他的家人可能不喜欢这个味道。最后,卡特可能会决定加一点大蒜小茴香酱,因为他在前几天做豆腐的时候也加了大蒜小茴香酱,结果非常美味。如果他真的这样做了,那么他就是在运用一种群体启发式;他借用了另一个解决方案的一部分来帮助找到一个适用于这种情境的解决方案。
由于启发式的类型多种多样,因此一个问题就自然而然地出现了:哪一种启发式的效果最好?我们已经证明,在用于不同问题的启发式之间进行比较是愚蠢的行为。在所有可能的问题上都比其他启发式更好的启发式是不存在的。这个结论也被称为“天下没有免费的午餐定理”。7对于这个定理,可以从两个角度来进行解读。首先,它意味着,对于任何一个给定的问题,既存在好的启发式,也存在坏的启发式。其次,它也意味着,对于任何一个启发式,既存在能让它大显身手的问题,也存在会被它搞得一地鸡毛的问题。如果有一个人不断向你推销声称放之四海而皆准的某种启发式,那么他有可能是“不怀好意”。举个例子,有一个因励志大师史蒂芬·柯维(Steven Covey)大力推荐而广为人知的启发式:先处理更大的问题。试想一下,你必须把一堆大石头和一堆小石子装进一只桶里。如果你先把小石子放进去,那么就不能再放下所有的大石头了;但是如果先把大石头放进去,还可以把小石子塞进大石头周围的空隙里。在很多问题上,都可以应用先处理大问题这个启发式,而且效果很好。再比如,你必须先熄灭厨房里的炉火,再去清洗洗碗机,而不是反过来。
然而,尽管这个启发式在很多情况下都能发挥强大威力,但是说它适用于一切情况的结论仍然与“天下没有免费的午餐定理”的逻辑相冲突。这个启发式不可能在所有问题上都比其他任何方法好。事实上,有时也可以做相反的事情:先处理小问题。也许先处理好了小问题,大问题也就自己消失了,或者变成了小问题。例如,当必须在有很多石头的地面挖洞时,这种“反其道而行之”启发式的效果就非常好。首先得去掉小石子,然后才能轻松地把大石头拉出来。当然,也不一定非得在柯维的启发式与《宋飞正传》中乔治的启发式之间做出非此即彼的选择;事实上应该同时采用他们的启发式。每个启发式都有自己的位置。要想取得成功,一个人最少得拥有七个以上的启发式。