dfs & bfs
1. dfs概念
dfs:演算法會盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過,搜尋將回溯到發現節點
v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在
未被發現的節點,則選擇其中乙個作為源節點並重複以上過程,整個程序反覆進行直到所有節點
都被訪問為止。這種演算法不會根據圖的結構等資訊調整執行策略。
----from wikipedia
bfs類似。
2.dfs流程
1. 首先將根節點放入
stack
中。
2. 從
stack
中取出第乙個節點,並檢驗它是否為目標。
3. 重複步驟2。
4. 如果不存在未檢測過的直接子節點。
5. 重複步驟4。
6. 若stack
為空,表示整張圖都檢查過了
——亦即圖中沒有欲搜尋的目標。結束搜尋並回傳「找
不到目標」。
2023年12月31日,下午7點
dfs和bfs
主要作為一種遍歷圖或解空間樹的思想,一般不會單獨出現,更多的是輔助其他圖論
演算法,或配合特殊優化的手段遍歷解空間樹篩選正確解。
在藍橋杯這種類
oi賽制中,會一手
dfs基本就可以省一,而國賽更多的是動態規劃(當然也可以
dfs嗯跑)。
在天梯賽中,
dfs是經常考查的演算法,難度通常在
l2左右(因為
l1不涉及任何演算法)。 在
xcpc
(ccpc
和icpc
)中,dfs
和bfs
幾乎從不單獨出現,一般作為其他圖論演算法的一部分 (
tarjan
求連通分量,網路流求增廣路),或考察部分圖上的性質(樹的重心
/直徑)。
清北學堂noip2018集訓D4
p.s.最小生成樹,最短路問題,spfa演算法,強連通分量。鄰接矩陣 時間 如下 include using namespace std int n,m n n int graph 105 105 intmain for int i 0 i cout return0 鄰接錶鏈表儲存 遍歷圖最短路 單...
D4 迭代器和生成器
一 迭代器 iterator 訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有元素被訪問 完結束。迭代器只能前進不能後退,但實際應用時很少在迭代中後退。迭代器的一大優點是不需要 事先準備好整個迭代過程中的所有元素,僅在迭代到某個元素時 才計算該元素,在這之前或之後,元素可以不存...
寒假 福州集訓 Day4
後補的.這天的早上仍然考試,沒有爆零的我簡直興奮。t1 資料我覺得有點大 做不來 就準備拿個暴力分 直接用了遞迴 我想了很多辦法優化 包括儲存加數的方法數什麼的 但是都沒有成功 所以我最後只拿了20的暴力分 t2 是我沒考慮周全 沒有考慮 兩點在同一位置的時候線路最短的情況 只是單純的分別找了兩個點...