本人小白,這是該賬號的第一篇文章,開場白到此。
最近在看《啊哈 演算法》這本書,在第4章中介紹了dfs演算法
dfs演算法框架如下
void dfs(int step){
判斷邊界
for(int i=0;i<=n;i++)迴圈嘗試每種可能{
book[i]=1;
嘗試下一步dfs(step+1)
book[i]=0;
return;
嘗試每種可能的過程中我們經常使用book陣列判斷該節點是否被訪問過,並且在下一次嘗試之後需要將所涉及的book陣列中的節點位置歸零。
在對本書後續問題的閱讀當中,筆者發現book[i]=0似乎可以省去
筆者給出對於 「book[i]=0」 可以省去的一些條件:
1.大部分dfs都會需要book[i]歸零;
2.是否需要歸零取決於該節點在同一次搜尋中是否可以被重複訪問。
dfs演算法由史丹福大學john e.hopcroft和robert e.tarjan發明。
無論是否需要book[i]=0這一條件:
dfs演算法都保證了圖的連通性(任意兩點能否互相訪問)和圖的平面性(圖中所有邊不交叉)
深度優先搜尋演算法(DFS)
1.深度優先搜尋屬於圖的遍歷演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。2.搜尋策略 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依次從v的未被訪問的鄰接點出發,對圖進...
DFS深度優先搜尋演算法
例題一 題目大意 約翰的農場被暴風雨給淹沒了,損失很大,他的保險公司將支付給他,但是支付金額取決於被淹沒的最大面積。這個農場是乙個邊長分別為n m的矩形,包含nm個空間,每個空間要麼是幹的,要麼是被淹沒的,一共有k個空間被淹沒。求最大的淹沒面積。ac include include include ...
DFS 深度優先搜尋演算法
深度優先搜尋演算法 depth first search,簡稱dfs 一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過或者在搜尋時結點不滿足條件,搜尋將回溯到發現節點v的那條邊的起始節點。整個程序反覆進行直到所有節點都被訪問為止。屬於盲...