深搜與廣搜

2021-09-11 06:49:35 字數 514 閱讀 4414

深搜是一種一條路走到黑,碰壁就倒退的演算法。運用遞迴思想,如果到了不符合條件的節點就撤回一步,然後再選擇另一條路走下去。如果這個節點的所有路徑都走完了,再撤回一步。

//最簡單的模板

int x[4]

=;int y[4]

=;//上下左右四個方向走。也可以八個方向,這裡我就不寫了。

void

dfs(

int fx,

int fy)

//每一步要操作的東西

for(

int i=

0;i<

4;i++

)return

;}

廣搜就是一層一層搜尋,用乙個佇列儲存還未搜尋的節點。然後按照佇列的順序乙個乙個往下搜尋。如果搜完乙個節點就將它彈出佇列。當隊列為空或找到要找的那乙個點就結束搜尋。

廣蒐比深搜難懂,所以建議找一些權威的書或部落格看可能簡單一點。

深搜:將每乙個點的性質都找出來。

廣搜:將乙個點的性質找出來。

廣搜與深搜演算法

bfs 廣度優先搜尋 從起點開始,檢視與其相鄰並且滿足題中條件的周圍的所有點 第一層點 然後再以他們為 起點 再去檢視與他們相鄰的第二層的點,一層一層的遍歷,直到找到目標。廣搜一般用於尋找最小路徑等型別題目,因為是層層尋找,所以尋找到的目標一定是最好的解,其大概過程如同一滴水滴到水池產生的水波。但是...

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...

搜尋(深搜 廣搜)

我記得在遙遠的2017年,我會敲的搜尋也只有暴力列舉了。那個時候的我深搜剛會一丟丟,所以也只配切切水題,然而經常死迴圈re那是肯定的。如今的我因為在多次比賽中都死於搜尋,那就必須得認真磕一下了。其實是這樣的 我眼裡認為的暴力就真的只是暴力,暴力無非就兩種 列舉打表和模擬。然而在這麼多次比賽後,我總能...