BFS DFS Back

1,BFS


可以求解最短路徑等?最優(yōu)解?問題

BFS? 先進(jìn)先出

在程序?qū)崿F(xiàn) BFS 時(shí)需要考慮以下問題:

隊(duì)列:用來存儲(chǔ)每一輪遍歷得到的節(jié)點(diǎn);

標(biāo)記:對(duì)于遍歷過的節(jié)點(diǎn),應(yīng)該將它標(biāo)記,防止重復(fù)遍歷


?path?=?[[0,0]]? ? ##頭結(jié)點(diǎn)放入

????????while?path:

????????????for?_?in?range(len(path)):? ?遍歷每一層節(jié)點(diǎn)

????????????????for?new_x,?new_y?in?[[x?-?1,?y?-?1],?[x?-?1,?y],?[x?-?1,?y?+?1],?[x,?y?-?1],

?????????????????????????????????????[x,?y?+?1],?[x?+?1,?y?-?1],?[x?+?1,?y],?[x?+?1,?y?+?1]]:? #幾個(gè)方向的遍歷

? ? ? ? ? ? ? ? ? ? ? ? ? ? 各種邊界條件的判斷

? ? ? ? ? ? ? ? ? ? ? ? ? ? 將新的節(jié)點(diǎn)加path

2,DFS



在程序?qū)崿F(xiàn) DFS 時(shí)需要考慮以下問題:

棧:用棧來保存當(dāng)前節(jié)點(diǎn)信息,當(dāng)遍歷新節(jié)點(diǎn)返回時(shí)能夠繼續(xù)遍歷當(dāng)前節(jié)點(diǎn)??梢允褂眠f歸棧。

標(biāo)記:和 BFS 一樣同樣需要對(duì)已經(jīng)遍歷過的節(jié)點(diǎn)進(jìn)行標(biāo)記。

先進(jìn)后出

帶數(shù)組的版本

不帶數(shù)組,用遞歸代替



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 深度優(yōu)先搜索(DFS) 深度優(yōu)先搜索,重點(diǎn)就在于“深度”一詞,不碰到死胡同就不回頭。深度優(yōu)先搜索是一種枚舉所有完整...
    荷包蛋要三分熟閱讀 1,049評(píng)論 0 0
  • DFS 以迷宮搜索為例說明DFS。 如圖8-1,從起點(diǎn)開始前進(jìn),當(dāng)碰到岔道口時(shí),總是選擇其中一條岔道前進(jìn)(例如圖中...
    一斗閱讀 655評(píng)論 0 0
  • 如果需要閱讀代碼,請(qǐng)移步:A*算法 引言 1968年,的一篇論文,“P. E. Hart, N. J. Ni...
    taylar_where閱讀 2,657評(píng)論 0 4
  • Python掃雷游戲 #coding: utf-8__note__ = """* 掃雷小游戲* 需要python3...
    側(cè)耳聽偑閱讀 408評(píng)論 0 1
  • 題目鏈接 Bobo has a string of length 2(n + m) which consists ...
    kinoud閱讀 221評(píng)論 0 0

友情鏈接更多精彩內(nèi)容