1. 程式人生 > >回溯演算法的理解與使用

回溯演算法的理解與使用

       最近在做題的過程中發現很多我不會的題目的解決方法都使用了回溯演算法的思想,說明我對這個演算法目前掌握的還不夠牢固,因此今天花時間來好好了解這個演算法。

       回溯演算法是一種演算法思想,而遞迴則是具體的程式碼結構。

       就我的學習感受:回溯演算法就是樹結構的思維過程。

       圖示:

       

       回溯演算法解決問題的例子:n皇后問題,0-1揹包問題,貨郎問題。

       這些問題的共同點是它們的解或者解集都是向量或者向量集,它們的搜尋空間:樹。可能是n叉樹、子集樹、排列樹等。樹的節點對應於部分向量,可行解在葉節點。 搜尋方法有:DFS、BFS,或者二者結合。

       回溯演算法適用於求解搜尋問題和優化問題,它採用DFS/BFS隱含的遍歷搜尋樹。

       回溯演算法的使用條件:多米諾性質,即:X1...Xn+1成立→X1...Xn成立,逆否命題也成立。