DFS——深度优先搜索基础
生活随笔
收集整理的這篇文章主要介紹了
DFS——深度优先搜索基础
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【0】README
0.1) 本文總結(jié)于 數(shù)據(jù)結(jié)構(gòu)與算法分析, 源代碼均為原創(chuàng), 旨在 review DFS——深度優(yōu)先搜索 的基礎(chǔ)知識;
【1】深度優(yōu)先搜索的應(yīng)用
1.1)深度優(yōu)先搜索算法描述(轉(zhuǎn)自天勤計(jì)算機(jī)考研高分筆記——數(shù)據(jù)結(jié)構(gòu))
- 1.1.1)圖的深度優(yōu)先搜索遍歷(DFS)類似于二叉樹的先序遍歷。它的基本思想是(steps):
- step1)首先訪問出發(fā)點(diǎn)v, 并將其標(biāo)記為已訪問過;
- step2) 然后選取與v 鄰接的未被訪問的任意一個(gè)頂點(diǎn)w , 并訪問它;
- step3)再選取與w 鄰接的未被訪問的任一頂點(diǎn)并訪問它, 依次重復(fù)進(jìn)行;
- step4)當(dāng)一個(gè)頂點(diǎn)所有的鄰接頂點(diǎn)都被訪問過時(shí), 則依次退回到最近被訪問過的頂點(diǎn)(這里就是一個(gè)遞歸訪問的過程), 若該頂點(diǎn)還有其他鄰接頂點(diǎn)未被訪問, 則從這些未被訪問的頂點(diǎn)中取一個(gè)重復(fù)上述的訪問過程, 直至圖中所有頂點(diǎn)都被訪問過為止;
1.2)全局布爾型數(shù)值 Visited[] 初始化為false。 通過只對那些尚未被訪問的節(jié)點(diǎn)遞歸調(diào)用該函數(shù), 我們保證不會陷入無限循環(huán)。如果圖是無向的且不連通的, 或是有向的但非強(qiáng)連通的,這種方法可能會訪問不到某些節(jié)點(diǎn)。 此時(shí),我們搜索一個(gè)未被標(biāo)記的節(jié)點(diǎn), 然后應(yīng)用深入優(yōu)先遍歷, 并繼續(xù)這個(gè)過程直到不存在未標(biāo)記的節(jié)點(diǎn)為止。 因?yàn)樵摲椒ūWC每一條邊只訪問一次, 所以只要使用鄰接表, 則執(zhí)行遍歷的總時(shí)間就是 O(|E| + |V|);
總結(jié)
以上是生活随笔為你收集整理的DFS——深度优先搜索基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么取消服务器禁ping(服务器禁用怎么
- 下一篇: DFS应用——遍历无向图