这些一般性的思维方法,就是波利亚用了整整三本书,五卷本(《How To Solve It》、《数学的发现》、《数学与猜想》)来试图阐明的。波利亚的书是独特的,从小到大,我们看过的数学书几乎无一不是欧几里德式的:从定义到定理,再到推论。是属于“顺流而下”式的。这样的书完全而彻底的扭曲了数学发现的真实过程。举个例子,《证明与反驳:数学发现的逻辑》在附录一中讲了一个非常有趣的例子:柯西当年试图将函数的连续性从单个函数推广到无穷级数上面去,即证明由无穷多个连续函数构成的收敛级数本身也是一个连续的函数,柯西给出了一个巧妙的证明,似乎漂亮地解决了这个问题。然而傅立叶却给出了一个噩梦般的三角函数的收敛级数,它的和却并不是连续的。这令柯西大为头疼,以至于延迟了他的数学分析教程的出版好些年。后来,赛德尔解决了这个问题:原来柯西在他看似无懈可击的证明中非常隐蔽(他自己也不知觉的情况下)引入了一个潜在的假设,这个假设就是后来被称为的“一致收敛”条件。当时我看到这里就去翻我们的数学分析书,发现“一致收敛”这个概念第一次出现的时候是这样写的:定义:一致收敛…
除了这个简单的例子之外,我们也不妨看一看一些算法上的例子,同样一个算法,不同的人来理解,也许你脑子里记得的是某个特定的巧妙技巧(也许这个技巧在题目的某步关键的地方出现,从而带来了最令人意外的转折点),然而另一人个记得得也许是“递归”这种手法,还有另外一个人记得的也许是“分治”这种更一般化的解题思路。从不同的抽象层面去掌握这道题目的知识信息,以后遇到类似的问题,你能够想起这道题所提供的知识的可能性是有极大的差异的。《Psychology of Problem Solving》的第11章举了这样一个例子:先让被试(皆为大学生)阅读一段军事材料,这个材料是说一小撮军队如何通过同时从几个不同方向小规模攻击来击溃一个防守严实的军事堡垒的。事实上这个例子的本质是对一个点的同时的弱攻击能够集聚成强大的力量。然后被试被要求解决一个问题:一个医生想要用X射线杀死一个恶性肿瘤,这个肿瘤只可以通过高强度的X射线杀死,然而那样的话就会伤及周围的良好组织。医生应该怎么办呢?在没有给出先前的军队的例子的被试中只有10%想到答案,这是控制基线。然后,在先前学习了军队例子的被试中,这个比例也仅仅只增加到30%,也就是说只有额外20%的人“自动”地将知识进行了转移。最后一组是在提醒之下做的,达到了75%,即比“自动”转移组增加了45%之多。这个例子说明,知识的表象细节会迷惑我们的眼睛,阻碍我们对知识的运用,在这个例子中是阻碍问题之间的类比。
解题练习的最重要目的不是将特定的题目解出来,而是在于反思解题过程中的一般性的,跨问题的思维法则。简单的将题目解出来(或者解不出来看答案,然后 “恍然大悟”),只能得到最少的东西,解出来固然能够强化导致解出来的那个思维过程和方法,但缺少反思的话便不能抽取出一般性的东西供更多的题目所用。而解不出来,看答案然后“哦”的一声更是等同于没有收获,因为“理解”和“运用”相差何止十万八千里。每个人都有过这样的经历:一道题目苦思冥想不得要领,经某个人一指点其中的关键一步,顿时恍然大悟——这是理解。但这个理解是因为别人已经将新的知识(那个关键的一步)放到你脑子里了,故而你才能理解。而要运用的话,则需要自己去想出那关键的一步。因此,去揣测和总结别人的思维是如何触及那关键的一步,而你自己的思维又为什么触及不到它,有一些一般性的原则可以指导你下次也能想到那个“关键的一步”吗,是很有意义的。我们很多时候会发现,一道题目,解不出来,最终在提示下面解出来之后,发现其中并没有用到任何自己不知道的知识,那么不仅就要问,既然那个知识是在脑子里的,为什么我们当时愣是提取不出来呢?而为什么别人又能够提取出来呢?我怎么才能像别人那样也提取出相应的知识呢?实际上这涉及到关于记忆的最深刻的原理,实际上文中已经提到了一些。(有兴趣的建议参考以下几本书:《追寻记忆的痕迹》,《找寻逝去的自我》,《Synaptic Self》,《Psychology of Problem Solving》)一般性的思维法则除了对于辅助联想(起关键的知识)之外,另一个作用就是辅助演绎/归纳(助探),一开始学解题的时候,我们基本上是先读懂题目条件,做可能的一些显然的演绎。如果还没推到答案的话,基本就只能愣在那里等着那个关键的步骤从脑子里冒出来了。而所谓的启发式思维方法,就是在这个时候可以运用一些一般性的,所有题目都适用的探索手法,进一步去探索问题中蕴含的知识,从而增大成功解题的可能性。启发式的思维方法有很多,从一般到特殊,最具一般性的,在波利亚的《How to Solve It》中已经基本全部都介绍了。一些更为特殊性的(譬如“如果全局搜索空间没有递归结构,那么考虑分割搜索空间”,譬如那些“看到XX,要想到YY”的联系),则需要自己在练习中不断抽象总结。