在無向/有向圖中尋找訪問每個頂點恰好一次並回到起點的迴路(哈密爾頓回路),屬於 NP-Complete 問題,優化目標為縮小搜索空間或求近似解。
| 算法 | 時間複雜度 | 空間複雜度 | 適用規模 |
|---|---|---|---|
| 回溯 + 剪枝 | O(N!) | O(N) | N ≤ 20 |
| 動態規劃 Held-Karp | O(N²·2ᴺ) | O(N·2ᴺ) | N ≤ 22 |
| 分支限界 | 指數級(實際較快) | O(N) | N ≤ 30 |
// dp[mask][v] = 從起點 0 出發,訪問 mask 集合中的頂點,最後到達 v 的最短路徑長度
vector> dp(1<(N, INF));
dp[1][0] = 0;
for (int mask = 1; mask < (1<
百度文檔 哈密爾頓回路優化算法實現詳解 包含完整 C++ 代碼。