有關於深度優先搜索的二三事兒(《算法設計與實現》摘要)

一、深度優先搜索算法的基本思想

從初始狀態S開始,利用規則生成搜索樹下一層任一個節點,檢查是否出現目標狀態G。

若未出現,則以現在的狀態利用規則生成下一層任一個節點,檢查是否爲目標節點G。

若未出現,繼續以上操作過程,一直進行到葉節點(既不能再生成新狀態節點),若它仍不是目標狀態G時,回溯到上一層結果,取另一個可能擴展搜索的分支,生成新狀態節點。若仍不是目標狀態,就按照該分支一直擴展到葉節點,若還不是目標,採用相同的回溯方法回退到上一層節點,擴展可能的分支生成新狀態。如此進行下去,直到找到目標狀態G爲止。


二、深度優先搜索算法的實現框架

從深度優先的策略上看,深搜一般是用遞歸來實現的。一般框架爲:

void dfs (int n)
{
      if(滿足條件,即搜索到終點)
         return;
      else 
         dfs(n + 1);
}

三、例題

HDU 1312 Red And Black(最基礎題)

HDU 1241 Oil Deposits(經典題)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章