簡體   English   中英

生成所有可能組合的分類和復雜性:P、NP、NP-Complete 或 NP-Hard

[英]Classification and complexity of generating all possible combinations: P, NP, NP-Complete or NP-Hard

該算法需要從給定的列表中生成所有可能的組合(不包括空集)。

list          =>         [1, 2, 3]
combinations  =>         [{1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}]

該算法需要 O(2 n ) 時間復雜度來生成所有組合。 但是,我不確定改進的算法是否可以降低這個時間復雜度。 如果存在改進的算法,請分享您的知識!

在需要 O(2 n ) 指數的情況下,我想了解一下該算法屬於 P、NP、NP-Complete 還是 NP-Hard 的類別。 提前致謝 :)

P、NP、NP-complete 和 NP-hard 都是決策問題的類別,它們都不包含涉及非二進制輸出的問題(例如這個枚舉問題)。

人們通常將FNP 中的問題通俗地稱為 NP。 這個問題也不在 FNP 中,因為關系的輸出字符串的長度必須受輸入長度的某個多項式函數的限制。 可能是 FNP-hard,但我們正在進入即使是研究生 CS 教育也無法覆蓋的雜草。 如果您足夠關心,值得在 CS Stack Exchange 上詢問。

除了可以說是 NP-hard 之外,這個問題都不在他們身上。

它不在 P 中,因為沒有多項式時間算法可以做到這一點。 您無法在多項式時間內生成指數數量的事物。

它不在 NP 中,因為沒有多項式時間算法來驗證答案。 您無法在多項式時間內處理指數數量的事物。

它不是 NP-complete,因為 NP-complete 中的所有內容都必須在 NP 中,而事實並非如此。

它在 NP-hard 中的論點是這樣的。 你可以對空集的成員說任何你想說的。 包括它們讓猴子從你的鼻子里飛出來,並且可以在多項式時間內解決 NP 中的任何問題。 所以如果我們能找到一個多項式解,我們就可以快速解決任何NP問題,因此它滿足NP-hard的定義。 但毫無用處 - 我們知道不存在多項式解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM