NP問題

數學上著名的NP問題,完整的叫法是NP完全問題,也即“NP COMPLETE”問題,簡單的寫法,是 NP=P?的問題。問題就在這個問號上,到底是NP等於P,還是NP不等於P。證明其中之一,便可以拿百萬美元大獎。
    這個獎還沒有人拿到,也就是說,NP問題到底是Polynomial,還是Non-Polynomial,尚無定論。
  NP裏面的N,不是Non-Polynomial的N,是Non-Deterministic,P代表Polynomial倒是對的。NP就是Non-deterministic Polynomial的問題,也即是多項式複雜程度的非確定性問題。
  美國麻州的克雷(Clay)數學研究所於2000年5月24日在巴黎法蘭西學院宣佈了一件被媒體炒得火熱的大事:對七個“千僖年數學難題”的每一個懸賞一百萬美元。以下是這七個難題。
  “千僖難題”之一: P (多項式算法)問題對NP (非多項式算法)問題
  “千僖難題”之二: 霍奇(Hodge)猜想
  “千僖難題”之三: 龐加萊(Poincare)猜想
  “千僖難題”之四: 黎曼(Riemann)假設
  “千僖難題”之五: 楊-米爾斯(Yang-Mills)存在性和質量缺口
  “千僖難題”之六:納維葉-斯托克斯(Navier-Stokes)方程的存在性與光滑性
  “千僖難題”之七:貝赫(Birch)和斯維訥通-戴爾(Swinnerton-Dyer)猜想
  NP完全問題排在百萬美元大獎的首位,足見他的顯赫地位和無窮魅力。
NP就是Non-deterministic Polynomial的問題,也即是多項式複雜程度的非確定性問題。
  什麼是非確定性問題呢?有些計算問題是確定性的,比如加減乘除之類,你只要按照公式推導,按部就班一步步來,就可以得到結果。但是,有些問題是無法按部就班直接地計算出來。比如,找大質數的問題。有沒有一個公式,你一套公式,就可以一步步推算出來,下一個質數應該是多少呢?這樣的公式是沒有的。再比如,大的合數分解質因數的問題,有沒有一個公式,把合數代進去,就直接可以算出,它的因子各自是多少?也沒有這樣的公式。
  這種問題的答案,是無法直接計算得到的,只能通過間接的“猜算”來得到結果。這也就是非確定性問題。而這些問題的通常有個算法,它不能直接告訴你答案是什麼,但可以告訴你,某個可能的結果是正確的答案還是錯誤的。這個可以告訴你“猜算”的答案正確與否的算法,假如可以在多項式時間內算出來,就叫做多項式非確定性問題。而如果這個問題的所有可能答案,都是可以在多項式時間內進行正確與否的驗算的話,就叫完全多項式非確定問題。
  完全多項式非確定性問題可以用窮舉法得到答案,一個個檢驗下去,最終便能得到結果。但是這樣算法的複雜程度,是指數關係,因此計算的時間隨問題的複雜程度成指數的增長,很快便變得不可計算了。
  人們發現,所有的完全多項式非確定性問題,都可以轉換爲一類叫做滿足性問題的邏輯運算問題。既然這類問題的所有可能答案,都可以在多項式時間內計算,人們於是就猜想,是否這類問題,存在一個確定性算法,可以在指數時間內,直接算出或是搜尋出正確的答案呢?這就是著名的NP=P?的猜想。
  解決這個猜想,無非兩種可能,一種是找到一個這樣的算法,只要針對某個特定NP完全問題找到一個算法,所有這類問題都可以迎刃而解了,因爲他們可以轉化爲同一個問題。另外的一種可能,就是這樣的算法是不存在的。那麼就要從數學理論上證明它爲什麼不存在。
  前段時間轟動世界的一個數學成果,是幾個印度人提出了一個新算法,可以在多項式時間內,證明某個數是或者不是質數,而在這之前,人們認爲質數的證明,是個非多項式問題。可見,有些看來好象是非多項式的問題,其實是多項式問題,只是人們一時還不知道它的多項式解而已。
  上回說到可憐的旅行商想找出走遍所有城市的最短路徑。讓我們用計算機幫他搜索一下。這就需要用到本篇文章中要介紹的第一門學科了:《人工智能》。人類的許多活動,如解算題、猜謎語、進行討論、編制計劃和編寫計算機程序,甚至駕駛汽車和騎自行車等等,都需要"智能"。如果機器能夠執行這種任務,就可以認爲機器已具有某種性質的"人工智能"。現在我們就要利用人工智能,用計算機模擬人的思維來搜索最短路徑。
  想像一下,我們人思考問題時,有兩種方法:一種是精確搜索,就是試驗所有的可能性,找出最精確的一個方案。但它在搜索過程中不改變搜索策略,不利用搜索獲得的中間信息,它盲目性大,效率差,用於小型問題還可以,用於大型問題根本不可能;另一種叫做啓發式搜索,它在搜索過程中加入了與問題有關的啓發性信息,用以指導搜索向着一個比較小的範圍內進行,加速獲得結果。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章