常用算法-回溯法

1、概念

回溯算法實際上一個類似枚舉的搜索嘗試過程,主要是在搜索嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就“回溯”返回,嘗試別的路徑。
回溯法是一種選優搜索法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇并不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。
許多復雜的,規模較大的問題都可以使用回溯法,有“通用解題方法”的美稱。

2、基本思想

在包含問題的所有解的解空間樹中,按照深度優先搜索的策略,從根結點出發深度探索解空間樹。當探索到某一結點時,要先判斷該結點是否包含問題的解,如果包含,就從該結點出發繼續探索下去,如果該結點不包含問題的解,則逐層向其祖先結點回溯。(其實回溯法就是對隱式圖的深度優先搜索算法)。
若用回溯法求問題的所有解時,要回溯到根,且根結點的所有可行的子樹都要已被搜索遍才結束。
而若使用回溯法求任一個解時,只要搜索到問題的一個解就可以結束。

3、一般步驟

1)針對所給問題,確定問題的解空間: 首先應明確定義問題的解空間,問題的解空間應至少包含問題的一個(最優)解。
2)確定結點的擴展搜索規則
3)以深度優先方式搜索解空間,并在搜索過程中用剪枝函數避免無效搜索。

4、例題

持續更新

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 回溯法與分支限界法 時間 2016-03-24 標簽 搜索 回溯法 1、概念 回溯算法實際上一個類似枚舉的搜索嘗...
    wangchuang2017閱讀 2,357評論 0 4
  • B樹的定義 一棵m階的B樹滿足下列條件: 樹中每個結點至多有m個孩子。 除根結點和葉子結點外,其它每個結點至少有m...
    文檔隨手記閱讀 13,352評論 0 25
  • 五大常用算法之一:分治算法 基本概念: 把一個復雜的問題分成兩個或更多的相同的或相似的子問題。再把子問題分成更小的...
    親愛的破小孩閱讀 4,947評論 0 1
  • 1.基本概念 回溯算法實際上一個類似枚舉的搜索嘗試過程,主要是在搜索嘗試過程中尋找問題的解,當發現已不滿足求解條件...
    RavenX閱讀 8,319評論 1 2
  • 因為我喜歡故事,所以一口氣買了,大冰的所有書,工作的時候沒舍得帶,只帶了一本,一口氣對完了《好嗎 好的》這本書,有...
    瓊如夏花閱讀 345評論 0 1