回溯法(Backtracking)是一種暴力搜尋法,主要通過逐一嘗試所有可能的解來解決問題,並增加中止條件判斷來提前排除不可行的解,也可說是一種優化版的枚舉法。
在這個過程中,回溯法會將每種可能性列出,再透過遞迴來試探所有可能的解,遇到符合中止條件的選擇時,會停止繼續深入搜索,然後回退到上一個選擇點,嘗試其他選擇。
回溯法適合解決各類組合問題、切割問題、子集問題、排列問題(無需排序的組合問題)以及棋盤問題等。由於回溯法在解空間中逐層深入並探索所有可能性,因此它也可以視為深度優先搜尋法 (DFS) 的一種應用。
範例說明
優點:
缺點:
參考資料: