NP完全問題
如果一個演算法的最差時間效率屬於 O ( p ( n )) ,其中 p (n ) 是問題輸入規模 n 的一個多項式函式,我們說該演算法能夠在多項式的時間內對問題求解。
我們把可以在多項式時間內求解的問題稱為易解的,而不能在多項式時間內求解的問題則稱為難解的。
非正式地說,我們可以把那些能夠在多項式時間內求解的問題當作電腦科學家所說的* P 集合*。
正式點,只有那些能夠回答是或否的問題(又稱判定問題)才屬於 P。
P 類問題是一類能夠用確定性演算法在多項式時間內求解的判定問題。
這種問題型別也稱為多項式型別。
絕大多數判定問題的一個公共特性是:
雖然在計算上對問題求解可能是困難的,但在計算上判定一個待定解是否解決了該問題卻是簡單的,並且,這種判定可以在多項式時間內完成。
一個不確定演算法是一個兩階段的過程,它把一個判定問題的例項 l 作為它的輸入,並進行下面的操作:
- 猜測(非確定)階段:
生成一個任意串 S,把它當作給定例項 l 的一個候選解,但 S也可能是完全不著邊際的。
- 驗證(確定)階段:
確定演算法把 l 和 S 都作為它的輸入,如果 S 的確是 l 的一個解的話,就輸出“是”;
如果 S 不是 l 的一個解,該演算法要麼返回“否”,要麼就根本停不下來。
如果一個不確定演算法在驗證階段的時間效率是多項式級的,我們說它是不確定多項式型別的演算法。 **NP 類問題**(Non-deterministic Polynomial)是一類可以用不確定多項式演算法求解的判定問題。我們把這種問題型別稱為不確定多項式類。 我們說一個判定問題 D 1 可以多項式地化簡為一個判定問題 D 2 ,條件是存在一個函式 t 能夠把 D 1 的例項轉化為D 2 的例項,使得:
- t 把 D 1 的所有真例項對映為 D 2 的真例項,把 D 1 的所有假例項對映為 D 2 的假例項。
- t 可以用一個多項式演算法計算。
我們說一個判定問題 D 是 NP 完全問題,條件是:
- 它屬於 NP 型別。
- NP 中的任何問題都能夠在多項式時間內化簡為 D。
NP 完全問題:
合取正規化的可滿足性問題
哈密頓迴路問題
旅行商問題
NP 完全問題的定義意味著,如果我們得到了一個 NP 完全問題的多項式確定演算法,就說明所有的 NP 問題都能夠用一個確定演算法在多項式的時間內解出,因此,P = NP.換句話說,得到了一個 NP 完全問題的多項式確定性演算法可以表明,對於所有型別的判定問題來說,檢驗待定解和在多項式時間內求解在複雜性上沒有本質的差別。
這種推論使得大多數電腦科學家相信 P ≠ NP但是,到目前為止,還沒有人能從數學上證明這一猜想。
相關文章
- NP-完全問題
- 讀人工智慧全傳04NP完全問題人工智慧
- 博基計劃(3)---P問題、NP問題、NPC問題、NP-hard問題
- NP-Hard問題
- 什麼是P問題、NP問題和NPC問題
- NP難問題求解綜述
- [轉載]什麼是P問題、NP問題和NPC問題
- AI數學基礎之:P、NP、NPC問題AI
- 通俗易懂的P vs NP問題解釋 -@AlejandroPiad
- HDU Piggy-Bank(完全揹包問題)
- Codeup 貨幣系統(完全揹包問題)
- 從【零錢兌換】問題看01揹包和完全揹包問題
- 揹包問題(01揹包與完全揹包)
- 01揹包和完全揹包問題解法模板
- Python:range、np.arange和np.linspacePython
- 圖解二維完全揹包問題——降維打擊圖解
- numpy 中np.array 與 np.ndarry的區別
- python np.hstackPython
- python---np.shufflePython
- echarts柱狀圖示籤顯示不完全的問題Echarts
- numpy中np.array()與np.asarray的區別以及.tolist
- [np-ml] Ridge Regression
- np.random.multivariate_normal()randomORM
- np.stack函式函式
- P、NP、NPC和NP-Hard相關概念的圖形和解釋
- python--之np.deletePythondelete
- np.array-tensor(cpu)-tensor(gpu)-np.array哪一步最耗時GPU
- python 對矩陣進行復制操作 np.repeat 與 np.tile區別Python矩陣
- [20191213]不完全恢復疑問.txt
- OpenAI釋出了ChatGPT資料洩露補丁,但問題尚未完全解決OpenAIChatGPT
- 【LeetCode動態規劃#08】完全揹包問題實戰與分析(零錢兌換II)LeetCode動態規劃
- 深度學習-在ubuntu16.04安裝CUDA9.1-總結(問題完全解決方案)深度學習Ubuntu
- HDU - 1114 Piggy-Bank(完全揹包板題)
- 【Numpy學習】np.count_nonzero()用法解析
- 一個ViewGroup#dispatchDraw()中的NP分析View
- VA03銷售訂單螢幕增強,欄位顯示不完全的問題
- 問題 C: 百雞問題
- 【問題】Nacos 使用問題整理