讀古今文學網 > 心智社會:從細胞到人工智能,人類思維的優雅解讀 > 7.4 問題解決 >

7.4 問題解決

從原則上來說,我們可以用「生成與測試」的方法,也就是試錯的方法,來解決任何已經知道解決方案的問題。但在實際操作中,就算是最強大的計算機,要測試出可能的解決方案所需的時間也還是會太長。就算是用十幾根木頭組裝一個簡單的房子,要搜索完所有的可能性,一個孩子一生可能都試不完。下面是對盲目試錯方法的一個改良版本。

進展原則(The Progress Principle) :如果我們擁有某種方法可以檢測到「進展」,任何窮舉搜索程序都可以在很大程度上簡化。之後我們可以朝著解決問題的方向追蹤,就像一個人可以在黑暗中攀登不熟悉的山峰一樣,通過在每一步感覺四周來尋找上升坡度最大的方向。

許多簡單的問題都可以通過這種方式來解決,但對於一個困難的問題,識別出「進展」幾乎和解決問題本身一樣難。如果沒有更寬闊的視野,那個「登山者」可能會一直被困在某個小山丘上,永遠也找不到頂峰。要避免這一點沒有什麼簡單的方法。

目標與子目標(goal and subgoal) :想知道如何解決一個困難的問題,我們所知的最有力的方式就是想辦法把這個問題拆分成若干個簡單一些的問題,每個問題都可以分別解決。

在所謂的人工智能(Artificial Intelligence)領域,許多研究關注的都是找到一些方法可以把一個問題拆分成若干個子問題,然後如果有必要,再把這些子問題拆分成更小的問題。在接下來的幾部分中,我們將會看到如何用「目標」的形式來表述問題,從而可以實現上述過程。

使用知識(using knowledge) :解決一個問題最高效的方法就是已經知道如何解決它。這樣人們就可以避免檢索所有可能性。

相應地,人工智能研究的另一個分支就是找到一些方法把知識收錄到機器中去。但這個問題本身就分為幾個部分:我們必須知道如何獲得所需的知識,必須學會如何表述這些知識,最後必須開發一些程序以有效地利用這些知識。要完成所有這些事,記憶必須優先呈現那些對我們實現目標可能有幫助的關係,而不是大量的細枝末節。這類研究已經引領出許多可以實際操作的問題解決系統,它們都是「以知識為基礎」的系統。其中有一些常常被稱為「專家系統」,因為它們的基本原理就是模仿一些特別的從業人員的方法。

這類研究中還浮現出一個奇怪的現象。與大部分人認為很容易的問題相比,比如用兒童積木搭建一個玩具房子,讓機器去解決一些只有受過教育的人努力思考才能解決的特殊問題反而更容易一些,比如下棋,或者證明邏輯或幾何定理。這也是我在本書中常常強調「簡單」問題的原因。