forked from ccccourse/alg111a
-
Notifications
You must be signed in to change notification settings - Fork 0
h4.md
Lin610313 edited this page Dec 31, 2022
·
4 revisions
NP-complete 是一類特殊的計算機科學中的問題。這類問題可以用非常短的時間(通常是多項式時間)來驗證一個給定的解是否正確,但是在最壞情況下,求出一個正確的解需要的時間是指數級別的(或者更長)。這類問題被稱為 NP 問題。
NP-complete 問題是 NP 類問題的一個子集,它們是最難的 NP 類問題。如果一個問題是 NP-complete 的,那麼這個問題是 NP 問題的最難的問題。如果我們能夠在多項式時間內解決一個 NP-complete 問題,那麼我們就能夠在多項式時間內解決所有的 NP 問題。
一個問題如果是 NP-complete 的,那麼這個問題必定是 NP 類問題,但是一個問題如果是 NP 類問題,不一定是 NP-complete 的。
一個例子:假設你有一個圖,圖中有很多節點和邊,你希望找到一條路徑使得這條路徑經過的邊的數量最少。這個問題是 NP-complete 的,因為你可以在多項式時間內驗證一條給定的路徑是否正確(即這條路徑是否經過的邊的數量最少),但是在最壞情況下,求出一條正確的路
NP-complete 問題通常用在計算機科學中的優化問題,即在給定的限制條件下,找到最優解的問題。這類問題的特點是,可以在多項式時間內驗證一個給定的解是否正確,但是求出一個正確的解的時間是指數級別的(或者更長)。
NP-complete 問題還有另外一個特點,就是如果我們能夠在多項式時間內解決一個 NP-complete 問題,那麼我們就能夠在多項式時間內解決所有的 NP 問題。
NP-complete 問題在實際應用中很常見,比如規劃、調度、資源分配等等。因為 NP-complete 問題的複雜度很高,所以通常只能使用近似算法來解決它們。
圖和超圖是兩種與 NP-complete 問題有關的概念。
圖(graph)是一種數據結構,由許多節點和邊構成。節點表示圖中的元素,邊表示兩個節點之間的關係。圖可以用來表示很多種信息,如交通網絡、社交關係、計算機網絡等。
超圖(hypergraph)是一種擴展了圖的數據結構,允許邊連接多個節點。超圖通常用來表示多對多的關係。
NP-complete 問題可以使用圖或超圖來表示。例如,最短路徑問題可以使用圖來表示,而費用流問題可以使用超圖來表示。
數學規劃的基本思路是,通過建立數學模型來表示優化問題,然後使用數學工具來解決模型。常見的數學工具包括數學規劃、線性規劃、非線性規劃、規劃計算機等。
數學規劃在工業、決策分析、經濟學、運輸規劃等領域有廣泛應用。它可以幫助我們在考慮各種限制條件的情況下,找到最優的決策方案。
# 建立图
graph = {
'A': {'B': 5, 'C': 1},
'B': {'A': 5, 'C': 2, 'D': 1},
'C': {'A': 1, 'B': 2, 'D': 4, 'E': 8},
'D': {'B': 1, 'C': 4, 'E': 3, 'F': 6},
'E': {
一開始看了NP-complete的維基百科時,完全不理解,後來用ChatGPT之後,雖然還是沒有完全理解,但至少不會滿臉問號了。