未來數學家的挑戰 計算量問題 楊照崑;楊重駿
|
有數學家說過「一個好的問題勝過十個好解答」。因為解答一出,此問題已是到了終點,對不斷求創新的人們而言,已不構成挑戰。而新的問題是源頭活水,能開拓新的境界。多數人都不願沉醉在好的解答中不斷的玩味,而希望找到新的問題,不斷的思考,摸索。 大家在《數播》上已看見了不少好的問題,尤其最近康明昌教授談到的費馬定理,幾何三大難題,都是極有趣的問題。有的已有了解答,有的尚待解決。除了上面的題目外,像四色問題(即任何一個地圖只要用四種顏色就可以把國界分開),五次以上方程式的公式解,及數論上質數分佈問題,都曾在職業及業餘數學家的心目中佔有相當的地位。本文所要介紹的是一個最近(1970年代開始)一種許多數學家及電子計算機學家所關心的大問題──NP 問題。 NP 所代表的意思,你看完本文之後自然會明白,現在你不妨記住「NP-hard」這個偉大的字。將來如果你對某人說你的問題是「NP-hard」,他也許就要對你刮目相看了,NP-hard 不但代表 hard(難),而且是 NP 的難! NP 問題的代表問題之一是售貨員旅行問題 (traveling salesman problem)。有一個售貨員要開汽車到 n 個指定的城市去推銷貨物,他必須經過全部的 n 個城。現在他有一個有此 n 城的地圖及各城之間的公路距離,試問他應如何取最短的行程從家中出發再到家中?
如圖1中,A,B,C,…,G 表示 7 個城市,而售貨員要從 A 城出發再回到 A 城並訪問 B,C,…,G,所有的城,一個可行的方法是 ![]() 問題是:這是否是最短的途徑?也許 ![]() 更近呢?加起來的結果第一路徑總長235里,而第二路徑總長為230里,故第二路徑較短,但是否存在一個更短的路徑呢?目前的方法接近一個一個的排著試,還沒有找到更好可以尋得最短路徑的方法。對七個城而言,共有 6!=720 個排法,尚不算難,但若有 20 個城,則排法就有 19! 種。因 ![]() 故 ![]() 在排列組合裡 n! 寫起來輕鬆,但 1.21 x 1017 是一個大得不得了的數字,若每秒鐘排一次,要排 3.84 x 109 年(一年約為 3.15 x 107 秒),即使使用計算機,每秒排一百萬次(不容易做到)也得重做三千年才能找到答案。「生也有涯,知也無涯」,想不到區區二十個城,要三十個世紀才能找到答案。 由於電子計算機的發展,有許多以前認為枉費時的計算,像行列式之值,反矩陣,高次方程式的解,都可以在極短的時間內解決。但也突然出現了一些新問題,連大型計算機也望之興嘆。像售貨員問題,因為找不到比硬排好得很多的做法,使得數學家們開始想要證明,根本找不到比硬排好得很多的做法。這個證明至今尚未找到。就像以前一角三等分問題一樣,既然找了幾千年找不到用圓規直尺三等分任一角的方法,也許我們可以證明絕對不可能用圓規直尺三等分一角。現在我們要證明絕不可能寫一個計算機程式大大的簡化售貨員旅行問題。與三等分一角問題不同的是,前者是一種數學上的好奇,而當今的問題與實際用途卻有密切的關連。 在此我們一直強調一個好得很多的方法。原因是對這類的問題,你若能計算快一倍或十倍、千倍,往往起不了什麼大作用,好像剛才的二十城旅行問題,即使快了千倍,仍需三年的計算時間,而再加三城立刻就把這個計算法的效果抵消了,因此我們所要的是計算量基本層次的減少,這就是我們在下一節所要討論的。
| 對外搜尋關鍵字: .NP問題 .售貨員旅行問題 |
未來數學家的挑戰 楊照崑;楊重駿 |
.原載於數學傳播十卷二期 .作者當時任教於美國佛羅里大學統計系;美國海軍研究實驗所 ‧註釋 ‧對外搜尋關鍵字 |
計算量,顧名思意,是指解決某問題所需要計算的時間,但因每個複雜問題的計算往往都要經過許多不同的運算,除加減乘除四則外,還要包含比較,取數據,存數據等等,若仔細計算起來,十分困難,一般都只繪出一兩個主要的量,加以統計,以上節中售貨員旅行問題為例,其主要的工作是對每一個排法加起總路徑之長,因對 n 城而言,有 (n-1)! 的排法,我們就定其計算量為 O(n!),即在 n! 之層次(order 即 O 縮寫之來源)之內。 舉二個例子,我們若要求 n 個數的和或平均值,則其計算量為 O(n)。但若我們要把 n 個數字依次排列,則其計算量會因做法的不同而有相當的差別,一個直接了當的方法是,先求出最大的(比 (n-1) 次),再從不是最大的中間求次大的(比 (n-2) 次),再求第三大的(比 (n-3) 次),……如此一共比了 ![]() 次就可以完成此工作。因此我們以 O(n2),即在 n2 之層次來表此方法的計算量。另外一種快排法,先把 n 個數分成若干小塊,每塊排好之後再合起來,則可以證明此種方法之計算量為 ![]() ![]() 一般計算量的層次多以下表來區分, ![]() 在上表中,k 為某一大於 2 的正整數,它們中間都有一道鴻溝,有基本層之不同,在計算機理論上,若某人能發現一個新的方法,降低一個層次的計算量,那麼他的新方法有資格稱之為一個突破,可以不朽矣。表1 有一個對上項各量之比較,是以計算機每秒作一百萬次 (106) 計算為原則。
在這個表中,特別注意 n3 與 2n 中之差異,一般稱 2n 為計算量呈指數上升,而 n3 或 nk 之計算量呈 n 的方次上升 2 ,對目前及未來的計算機而言,一個呈方次上升的計算量應可以應付,但對一個呈指數上升的計算量在 n 相當大時則毫無希望。因此計算機學家所集中精力的方向在如何將一個呈指數上升的計算量問題,簡化成一個方次上升的計算量問題。我們定義凡對一個問題中最重要的參數 n 而言,若能找到一個方法可以以方次上升的計算量完成,我們稱此問題為一 P-問題(P 為英文多項式 Polynomial 之第一字母),包含所有此類問題之集合以 P 表示之。 |
未來數學家的挑戰 楊照崑;楊重駿 |
.原載於數學傳播十卷二期 .作者當時任教於美國佛羅里大學統計系;美國海軍研究實驗所 ‧註釋 ‧對外搜尋關鍵字 |
本節之題目有點不平常,我們的目的是提醒讀者本文中常用之英文大寫的 P 是一個凡能用 O(nk) 計算量解決之問題之集合。而 P 之外加一個問號係指到目前為止,我們尚不知道 P 之外是否是一個空集合。 到目前為止,除了售貨員旅行問題之外,已經有上百有趣或有用的問題,無法用 O(nk) 的計算量來解決,我們在此列舉幾個例子。
現在可以看出這類問題的一般結構了。很顯然的,有些是極有用的問題,而有些可以轉換成有用的問題。例如舞伴問題,若把男孩與女孩換成工人與工頭,或醫生與病人就有大用了。這些問題到目前沒有一個可以證明是屬於 P 的,大家都猜測它們可能在 P 之外,即其計算量是呈指數增加的。 在60年代,已有些人把某些問題歸於一類了,即是幾個問題是互依的,若其中之一若屬於 P,則其他幾個也屬於 P,其證明方法大都是證明兩個互依問題中間有一個只需要用 O(nk) 時間來完成的橋樑。直到1971年古克 (Stephen A. Cook) 發表了〈The Complexity of Theorem Proving Procedures〉才把 P 之外約問題歸成了三大類,即 NP, NP-complete 及 NP-hard 4 ,現在談古克定律。
|
未來數學家的挑戰 楊照崑;楊重駿 |
.原載於數學傳播十卷二期 .作者當時任教於美國佛羅里大學統計系;美國海軍研究實驗所 ‧註釋 ‧對外搜尋關鍵字 |
古克定律的證明很難,就是瞭解它也不容易,我們將從幾個角度來看這個問題,試著去暸解它。它的主要結果是把前節那類問題大部歸於一個較易證明的集合,稱之為 NP,而在 NP 中找到一批互依的問題稱之為 NP-complete 類並得到下面的結果。
又換句話說,NP-complete 是 NP 中的難題,NP-complete 解決了 5 , NP 就解決了。但若有一個屬於 NP 而不屬於 NP-complete 的問題解決了,則其他的 NP 問題不一定可以解決。 什麼叫做 NP?NP 是英文 nondeterministic polynomial 的縮寫,意思就是非確定性的多項式時間。要暸解這個字。我們先看一看普通計算機的作用。 現在已知用一個計算機,要解決售貨員旅行問題非常困難,但若我們有許多計算機同時用,是否可以快到把原問題在 O(nk) 時間內解決?「許多」,不是一、二,多一二個是於事無補的,多百個千個仍是杯水車薪,不能有很大的作用,因為就是一千個機子可以分開做,也最多只能快一千倍,在第一節內已說過,幫助不大。因此計算機學家先放眼望去,乾脆允許你可以無限的增加機器。現在我們要注意的是並不是有了無限多的機器所有的問題就可以立刻解決了,因有的問題有先後次序,例如在算下式的時候
[(a1+a2)a3+a4]a5+a6
除非換個形式,否則必須一步一步的解括弧,機子多了並不能加快計算的速度,而且機子多了,其間之聯絡千變萬化,一個機子要應付千千萬萬別的機子送來的信號也疲於奔命了。因此我們只假定所有的機子都只承上啟下,單線作業,不作任何橫向聯絡 6 ,也就是說,機器1可以把它的結果傳給它下面的機子,像 a1,a2,…,an 而每一個機子又可以把它們的結果傳給自己的子機,但在 a1,a2,…,an 之間不互相聯絡。以售貨員旅行問題為例,若有20個城,第一個機子開始,叫下面19個機子各取一個不同的城及計算與 A 距離,而這個19個機子又將它所求得的距離交給自己的18個子機令它們取一個與自己不同的城加上距離,如此往下,在第十次時,第十階段的機子把它已取9城及總距離告訴下一個機子,叫他們再取一與已取之城不同之城加上距離,如此一直做到第19次,所有路線的距離都有了,在時間上求得所有的距離是 O(n)(但用了 19! 個計算機),古克定義凡可以在 O(nk) 時間內用無限多計算機解決的問題為一 NP 問題。 現在要記住的是由於無橫向連絡,在所有路徑的距離都有了之後,並沒有解決售貨員問題(甲),因為不知誰是最短(若加以比較以求最短距離,則要 O(n!) 個比較),因此我們不能說售貨員旅行問題(甲)是一個 NP 問題。但上節問題2,售貨員旅行問題乙,任何一個單線都可以知道它的總距離是否不大於 B,因此每單線都有一個「Yes」或「No」的答案。只要有一個「Yes」的答案,我們即知道本問題已解決,故問題二是一個 NP 問題。在單線作業中,每個機子可以作三件事。
從上項作用,很容易看出找出答案的計算時間即某線叫停的時間,亦即任何一個有「Yes」答案線中計算量之總和,也就是說找到答案「捷徑」上所需的時間。易言之,在一非確定性計算機系統下,其子機像有「猜測」到捷徑的功能。若在任何計算步驟中,某人猜了一個答案,而計算機可以在 O(nk) 時間內回答「Yes」或「No」,這個問題即是一個 NP 問題。再以售貨員旅行(甲)及圖1為例,若你猜一個路徑 ![]() 我們無法知道此路是否最短,但在(B)問題中,一個「Yes」或「No」的結果只要7個加法就可以回答了。因此根據新的定義,問題2是一個 NP 問題。 由這兩個定義,讀者不難看出問題2,4,6,7,8,9(乙)與10皆為 NP 問題,特別是問題9之(甲),(乙),其實是一樣的問題,但如果你猜二個 m,n,立刻就可知道 a 是否是 mn。 古克定理的關鍵在證明若一種叫滿足問題 (Satisfactability Problem) 的例子屬於 P,則所有 NP 問題均屬於 P(即此問題屬於 NP-complete),令 ![]() 為一可滿足函數,取 u1=u2=u3=1 即可,但 ![]() 永為 0,故此 f 為不可滿足。 直覺上,這類問題除了將 u1, u2,…,un 一個一個以 0,1 代入檢查 2n 次之外,顯無捷徑可循,古克1971年之論文即證明這是一切 NP 問題之母。
現在已可證明在前節中之問題,除了問題1,3,5,9 之外,全是 NP-complete 問題。
|