如何解題

Posted by Mr. Saturday

人一生都在解決問題,尤其身為一個台灣的學生,從小到大就是面對一堆怎麼樣也寫不完的考卷和作業,想辦法解出一個又一個問題。問題解決得好或是解決的快,你的成績就名列前茅。Mr. Monday之前談到了大學生一定要學會的三件事情,其中一項談到了解決問題的能力。對於這一點我深有所感,所以來跟大家分享一下我的解題心得。當然以下的討論可能偏重於談論一些總是有標準答案的問題,但是我相信把一些概念推而廣之,類似的法則應用於真實世界中那些常常沒有標準答案的問題時同樣有效。

對於正確的問題有個近似的答案,遠勝過對於錯誤的問題有個精確的答案:很多人在解決問題時,老是望著題目複雜的敘述發楞,不知道自己到底該怎麼回答或是解決這個問題。其實很多人常常看完一遍題目之後,並沒有發現其實自己對於題目的了解並不是很清楚,甚至於題目中有些敘述根本看不懂,或是題目根本沒有看完!結果在並沒有完全了解題目的模模糊糊的情況之下,就急著想要解決它和找出答案,這是一件相當危險的事情,因為你可能在處理一個根本是錯誤的問題,結果無論你找出什麼答案都是徒勞無功。理解一個問題永遠是解決問題的第一步,甚至於有的時候是唯一的一步!下次你不妨這樣做,在你認為自己對於一個問題理解夠了之後,用你自己的話講給其他人聽,告訴他們這個問題是在問什麼,也許有的時候當你把自己對於題目的理解跟別人講述之後,你會發現答案在你講完時已經自動跳出來了。如果沒有人在你旁邊,你可以問問自己:這個問題到底在說什麼東西?在你自己還心存這個疑問的時候,千萬別動手去解決眼前的問題。當你充分了解了問題之後,即使你沒有辦法找出精確的答案,也不妨試著簡化題目,提出一些可能是近似的答案。有的時候答案不是這麼絕對,近似但合理的答案其實可以為人所接受。

如果你沒辦法解決一個問題,那麼在這個問題之中,一定有一個更簡單的問題是你還沒解決的,你先要做的就是找出這個比較簡單的問題是什麼,然後解決它:這樣一種經驗法則,可以幫助你把複雜的問題拆解,從簡單的子問題開始著手,然後把你對於多個子問題的答案拼湊起來。如果你是學電腦科學的,應該對於這種概念不陌生,這就是divide-and-conquer,有的時候也可以看成是一種recursion,主要的概念就是在於:在解決複雜或是大的問題之前,先解決簡單的或是小的問題。小的問題麻雀雖小,五臟俱全,往往可以讓你看出問題的具體結構,而又不為繁瑣的細節所分心。

我不知道答案是什麼,但是我知道答案在哪裡:資訊爆炸的時代,你不必要也不可能記住所有的資訊,這樣的情況之下,搜尋的工夫和瀏覽的工夫就顯得相當重要。以瀏覽而言,就我個人的習慣,當我要開始閱讀一本書時,我不會從第一頁馬上開始一個字一個字讀下去(除非是小說),我會先看目錄,來了解整本書的架構和所要講述的內容,然後我會把書略讀一遍,這個略讀相當的隨便,有些章節只是看看標題和第一句話就跳過去,簡單來說就是把書翻一遍而已。之後呢,要是我沒時間看了,就把這本書丟一邊,當作參考書籍,這個時候我已經大概知道在這本書裡面,有些什麼樣的資訊是我可能找到或是需要的,日後我找尋一些答案時,如果覺得書中可能有我要的答案,就來查閱。我沒有記住書的內容,甚至於連一半都沒仔細看完,但是我知道什麼時候它大概可以派上用場。就像是搜尋引擎一樣,我把一些書的大略內容indexing在我的腦袋裡面,需要時就找看看。另一方面,以搜尋而言,現在的搜尋引擎如此之發達,上面幾乎可以確定一定有你需要的資訊,只是看你找不找得到而已,別忘了你並非是在解決千古難題,同樣或是類似的問題可能已經有人解決過了,廣大的網路世界內一定有你解決問題所需要的資訊或甚至是直接的答案。

抄作業不是罪大惡極,但是在你把作業交出去之前,至少想辦法弄懂自己抄來的東西:我常常在BBS上面有關抄作業的討論,基本上,抄作業是一種不應該被鼓勵的行為,但是從小到大沒抄過作業的人我相信實在是少數,我認為抄作業不是什麼罪大惡極的事情,畢竟人常常有想不通的地方,也有時會因為某些不可抗之外力沒辦法把作業給準時寫出來,所以選擇便宜行事,把別人的答案複製一遍就交了出去。對於理工科的人而言,寫作業是一種鍛鍊解決問題思維相當有效的方式。失去自己練習的機會其實相當可惜,當然你可能常常對於某個學科沒興趣,而選擇以抄作業來應付。但是在你交出去之前,或是之後,把你抄來的東西弄懂吧!抄作業也可以是一種根據答案來進行反向學習的機會,別輕易放棄這個機會。寫數學證明題有一個技巧叫做倒證法,就是從你要證明的東西出發反推,看看能不能推成題目中給的初始條件,如果推得到,你就證明完畢了。這告訴我們,答案不是一個問題的終點,你應該常常試著從答案回溯整個解題的過程,從中獲取經驗和技巧。

真實生活中的一些問題我相信也可以用一些類似於上面的法則來加以分析及解決,大前研一的思考的技術一書內容所講的,就是在談論解決問題的藝術和方法。其實在現實生活中,我們看到一個覺得需要修正的現象,就代表著我們已經準備去尋找問題,而在發掘問題的過程之中,要把問題釐清和定義清楚其實本身就是件非常不容易的事情,其難度已經遠超過那些教科書上為我們早就準備好、定義好的問題。因此文章一開始所提到的充分理解問題就成了最重要而且也是不可或缺的第一步。另外真實世界的問題,其背後往往又潛藏著一個問題背後的問題,所以即使在我們以為自己已經發現問題所在時,也不可掉以輕心,要時時記得反思,在我們看到的問題背後,是否有著更為基本的一些問題?而這似乎又符合了之前所提到的recursion。

以上所談論的解決問題的法則,只不過是冰山一角,在真實生活中和單純的學術討論裡,都有著相當有趣和有系統的解決問題的辦法, Mr. Saturday隨便寫了一些關於解決問題的淺見,希望對於想破腦袋,孜孜不倦的解題眾生們有一丁點小小的幫助。

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!