【专栏】跟波利亚学解题(7)
在我看来,好题目即测试一个人思维的习惯的题目,因为知识性的东西是更容易弥补的,尤其是在这样一个年代;而好习惯不是一朝一夕养成的。好题目各有各的好,而坏题目都是相似的。
3. 好题目、坏题目。在我看来,好题目即测试一个人思维的习惯的题目(因为知识性的东西是更容易弥补的,尤其是在这样一个年代;而好习惯不是一朝一夕养成的),它应有这样一些性质:
1) 不需要用到未知的知识。
2) 需要用到未知的知识,但一个敏锐的解题者可以通过对题目的分析自行发现这些所需的知识。
3) 考察解题的一般性思路,而不是特定(ad hoc)的解题技巧,尤其是当这个技巧几乎不可能在短时间内通过演绎和试错发现的时候。譬如题目需要用到某种性质,而这个性质对于不知道它的人来说几乎是无法从对题目的考察中得出来的。
4) 考察思维能力。联想能力、类比能力、抽象能力、演绎能力、归纳能力、观察能力、发散能力(思维不落巢臼的能力)。
5) 考察一般性的思维方法:通过特例启发思考、通过试错寻找规律、通过泛化试探更一般性命题、通过倒过来推导将问题进行归约、通过调整(分解、删除、增加等等)题目的条件来感知它们之间的联系以及和结论的联系、通过系统化的分类讨论来覆盖每种可能性。
6) 好题目举例:烙饼排序问题(考察特例启发法以及观察能力)、Nim问题(还有简单版本的取火柴问题)(烙饼排序问题和Nim问题可参见《编程之美》)、9公升4公升水桶倒6公升水的问题(考察倒过来思考问题的能力)、9点连线问题、6根火柴搭出4个面的问题、“木板”问题(考察思维定势,此外《心理学与生活》的第九章也有好几个经典的问题)、许多数论问题(观察能力、演绎能力、归纳能力)。此外,我们最近也在讨论好题目。
作者:刘未鹏 出版:电子工业出版社
而坏题目呢:
1) 好题目各有各的好,坏题目都是相似的。
2) 坏题目基本上就是指那些所谓的unfair questions,什么是unfair,举个例子:一个人住在一栋非常高的楼上,每天早晨他乘电梯下到一楼,出门上班。但晚上回来之后却最多只能坐到一半高度的楼层,剩下一半只能走楼梯上去,除非是下雨天。问为什么。这个例子据说不少人小时候在脑筋急转弯里面做过,但我很怀疑基本上任何正常人是不是可能想出来。这个问题的问题在于他需要用到千百个有可能与问题有关的性质中的一个,而且这个性质还根本无法通过对题目本身的考察得出来,只可能某天我们碰巧遇到类似的场景也许才能想到。知道答案的人也许会说答案很显然,但别忘了心理学上的事后偏见——一旦知道结果之后,所有指向结果的证据看上去都那么显然和充分,而同时所有反结果的证据看起来都那么不显然和不充分。譬如这题关键是要想到这人是矮子和雨天要带伞,也许你会说“只要考虑一下电梯的按钮面板就会发现了”,或者“看到下雨,那还不想到带伞么?”,然而这只是事后的合情推断。在不知道答案的情况下,这个故事中有数不清的因素可能会成为问题的解释,除非某天我们碰到类似的问题,否则大致也只能一个个穷举了去使劲往上凑,譬如除了身高之外还有:是不是瞎子、是不是聋子、是不是哑子、男人女人、什么牌子的电梯、大厦是哪种大厦?这些因素重要吗?不重要吗?最令人头疼的是,在不知道答案的时候,我们也根本不知道他们重不重要,一个出谜语的人可能从任何一个微小的地方引申出某个谜语来;更头疼的是,我们不知道我们不知道的那些因素是不是也可能与题目的解有关,譬如这样一个问题:一个人走进酒吧,问酒保要一杯水,酒保掏出一只枪,拉上扳机;这人说声“谢谢”,走了出去。这些题目固然有趣,但几乎没有价值。
3) 值得注意的是,这样的问题跟著名的9点连线问题和6根火柴搭出4个面的问题(还有《如何解题:现代启发式方法》里面那个经典的“小球在盒内碰撞何时回到原轨迹”的问题)不同,后者的条件都在眼前,并且解的搜索空间无论如何很小,就看思维能不能突破某一个框框。而上面这些问题则是要人进行根本不可能的联想。9点问题实际上是可以系统化思考解决的,但unfair question则像许多谜语一样,随便哪个人都可以出一个另一个人根本无法想出来的谜语,因为从谜语隐含的信息加上人可能从谜语中联想出来的信息,加起来也不足以构成解题的充分条件;这种情况下除非你遇到出题人在出题时的心理或所处情况,否则是无法解的。
4) 最后,发散性思维其实是可以系统化的,参见前文“联想的规则”。
出题的误区:
1) 最大的误区就是把知识性的题目误当成能力型的题目。如果题目中需要用到某个重要的定理或性质,而对于一个原本不知道这个定理或性质的人来说是无法通过题目本身到达这个性质的,那这就属于知识性的题目。
2) 虽然几乎所有题目归根到底都是知识性的,但有些题目更为知识性,尤其是当解题中需要用到的定理或性质并不那么trivial的时候。
3) 一个最好的题目就是问题明明白白,而且最终的解也没有用到什么神秘的定理,但要想获知到解,取决于你会不会思考一个问题(参见“好问题”)。譬如烙饼问题和Nim问题,还有许许多多问题简洁明确但很锻炼思考的算法问题。
(待续;此文的修订版已收录《暗时间》一书,由电子工业出版社2011年8月出版。作者于2009年7月获得南京大学计算机系硕士学位,现在微软亚洲研究院创新工程中心从事软件研发工程师工作。)
网络编辑:小碧