回溯演算法 (Backtracking)#
回溯演算法(Backtracking)是一種透過試錯來尋找問題解的演算法策略,本質上是帶有剪枝功能的深度優先搜尋(DFS)。
核心思維#
回溯法的精髓:嘗試 ➡️ 檢查 ➡️ 遞迴 ➡️ 失敗則撤銷
這是對解空間樹的深度優先走訪,遇到死路就「回溯」到上一步嘗試其他可能。
回溯三要素#
| 要素 | 說明 |
|---|---|
| 選擇列表 | 當前可做的選擇 |
| 路徑 | 已經做出的選擇 |
| 結束條件 | 到達決策樹底層的條件 |
與其他演算法的關係#
| 演算法 | 特點 | 效率 |
|---|---|---|
| 暴力搜尋 | 窮舉所有可能 | 最低 |
| 回溯法 | DFS + 剪枝 | 中等 |
| 動態規劃 | 記憶化 + 最優子結構 | 最高(適用時) |
回溯法是暴力搜尋的最佳化版本,透過剪枝提前排除無效分支。
跨倉庫導讀#
- 對應 LeetCode 練習:Backtracking ↗