【專欄】跟波利亞學解題(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月獲得南京大學計算機系碩士學位,現在微軟亞洲研究院創新工程中心從事軟件研發工程師工作。)
網絡編輯:小碧