回溯法基本思想

2022-01-14 20:16:43 字數 1590 閱讀 8764

回溯法又稱試探法。回溯法的基本做法是深度優先搜尋,是一種組織得井井有條的、能避免不必要重複搜尋的窮舉式搜尋演算法。

回溯演算法的基本思想是:從一條路往前走,能進則進,不能進則退回來,換一條路再試。

當我們遇到某一類問題時,它的問題可以分解,但是又不能得出明確的動態規劃或是遞迴解法,此時可以考慮用回溯法解決此類問題。

回溯法的優點在於其程式結構明確,可讀性強,易於理解,而且通過對問題的分析可以大大提高執行效率。但是,對於可以得出明顯的遞推公式迭代求解的問題,還是不要用回溯法,因為它花費的時間比較長。

回溯法中,首先需要明確下面三個概念:

(二)狀態空間樹:剛剛已經提到,狀態空間樹是乙個對所有解的圖形描述。樹上的每個子節點的解都只有乙個部分與父節點不同。

(三)擴充套件節點、活結點、死結點:所謂擴充套件節點,就是當前正在求出它的子節點的節點,在深度優先搜尋中,只允許有乙個擴充套件節點。活結點就是通過與約束函式的對照,節點本身和其父節點均滿足約束函式要求的節點;死結點反之。由此很容易知道死結點是不必求出其子節點的(沒有意義)。

利用回溯法解題的具體步驟

首先,要通過讀題完成下面三個步驟:

(1)描述解的形式,定義乙個解空間,它包含問題的所有解。

(2)構造狀態空間樹。

(3)構造約束函式(用於殺死節點)。

然後就要通過深度優先搜尋思想完成回溯,完整過程如下:

(1)設定初始化的方案(給變數賦初值,讀入已知資料等)。

(2)變換方式去試探,若全部試完則轉(7)。

(3)判斷此法是否成功(通過約束函式),不成功則轉(2)。

(4)試探成功則前進一步再試探。

(5)正確方案還未找到則轉(2)。

(6)已找到一種方案則記錄並列印。

(7)退回一步(回溯),若未退到頭則轉(2)。

(8)已退到頭則結束或列印無解

以下參考北大公開課:

參考:北大《演算法設計與分析》公開課

希爾排序法基本思想

希爾排序 shell sort 又稱為 縮小增量排序 是1959年由d.l.shell提出來的。該方法的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序 增量足夠小 時,再對全體元素進行一...

回溯法基本思想 資料結構之簡單的回溯演算法

回溯演算法在資料結構中是一種常用的演算法,也是一種暴力求解法,基本思想是深度遍歷,選擇一條路一步一步走,當走不通的時候或者已經求得正確的結果,返回上一步,接著選擇另一條路走,直到遍歷完所有節點。回溯演算法是一種思想,真正用 實現的時候,大多時候都需要用的方法是遞迴。一.回溯演算法最出名的是8皇后問題...

MVP基本思想

mvp的邏輯性思維都在p層,他降低了頁面的耦合度,具備低耦合的特性,mvp的出現使 更具邏輯性 首先我們看到分包的嚴謹性 mvp的結構分析 p層負責整體邏輯並且將m層和v層聯絡起來,m層主要負責 塊,callback將結果集返回p層,v層最後展示檢視 注意以下介面 public inte ce my...