新聞中心
采用鄰接表存儲(chǔ)的圖的深度優(yōu)先遍歷算法類似于二叉樹(shù)的先序遍歷,為什么是先序呢?
這是因?yàn)閳D的深度優(yōu)先遍歷算法先訪問(wèn)所在結(jié)點(diǎn),再訪問(wèn)它的鄰接點(diǎn)。與二叉樹(shù)的先序遍歷先訪問(wèn)子樹(shù)的根結(jié)點(diǎn),再訪問(wèn)它的孩子結(jié)點(diǎn)(鄰接點(diǎn))類似。圖的廣度優(yōu)先遍歷算法類似于二叉樹(shù)的按層次遍歷。

有向圖和無(wú)向圖的深度優(yōu)先一樣嗎?
有向圖和無(wú)向圖的深度優(yōu)先遍歷并不相同。在有向圖中,深度優(yōu)先遍歷的起點(diǎn)是入度為 0 的頂點(diǎn),沿著有向邊進(jìn)行訪問(wèn),直到所有可達(dá)頂點(diǎn)都訪問(wèn)完畢。
而在無(wú)向圖中,深度優(yōu)先遍歷的起點(diǎn)是任意一個(gè)頂點(diǎn),沿著任意條邊進(jìn)行訪問(wèn),直到所有可達(dá)頂點(diǎn)都訪問(wèn)完畢。因此,有向圖和無(wú)向圖的深度優(yōu)先遍歷的順序是不同的。
無(wú)向圖和有向圖的深度優(yōu)先搜索算法并不完全一樣。雖然它們都是從一個(gè)起點(diǎn)開(kāi)始,遞歸地遍歷圖中的節(jié)點(diǎn),但有向圖中的邊是有方向性的,因此需要考慮已經(jīng)訪問(wèn)過(guò)的節(jié)點(diǎn)的入度,以避免死循環(huán)。
另外,在無(wú)向圖中,我們需要記錄每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn),以便在回溯時(shí)能夠正確地返回到上一個(gè)節(jié)點(diǎn)。
因此,雖然深度優(yōu)先搜索在無(wú)向圖和有向圖中都是一種常用的圖遍歷算法,但它們的實(shí)現(xiàn)方式在細(xì)節(jié)上存在一些差異。
不一樣。
在有向圖中,深度優(yōu)先遍歷是從起始節(jié)點(diǎn)開(kāi)始,沿著一個(gè)路徑盡可能深地訪問(wèn)圖的節(jié)點(diǎn),直到達(dá)到一個(gè)沒(méi)有未訪問(wèn)鄰居的節(jié)點(diǎn)為止。然后回溯到前一個(gè)節(jié)點(diǎn),繼續(xù)探索其他路徑,直到遍歷完所有節(jié)點(diǎn)。在有向圖中,一個(gè)節(jié)點(diǎn)可能有多個(gè)后繼節(jié)點(diǎn),但是只有一個(gè)前驅(qū)節(jié)點(diǎn)。
而在無(wú)向圖中,深度優(yōu)先遍歷也是從起始節(jié)點(diǎn)開(kāi)始,沿著一個(gè)路徑盡可能深地訪問(wèn)圖的節(jié)點(diǎn),直到達(dá)到一個(gè)沒(méi)有未訪問(wèn)鄰居的節(jié)點(diǎn)為止。然后回溯到前一個(gè)節(jié)點(diǎn),繼續(xù)探索其他路徑,直到遍歷完所有節(jié)點(diǎn)。在無(wú)向圖中,一個(gè)節(jié)點(diǎn)可能有多個(gè)相鄰節(jié)點(diǎn),沒(méi)有前驅(qū)節(jié)點(diǎn)和后繼節(jié)點(diǎn)的概念。
不一樣。有向圖和無(wú)向圖的深度優(yōu)先搜索算法有些許不同。
在無(wú)向圖中,深度優(yōu)先搜索算法從圖中的一個(gè)節(jié)點(diǎn)開(kāi)始,遞歸地探索其相鄰節(jié)點(diǎn),直到所有可達(dá)節(jié)點(diǎn)都被訪問(wèn)過(guò)為止。在訪問(wèn)一個(gè)節(jié)點(diǎn)時(shí),通常會(huì)將其標(biāo)記為“已訪問(wèn)”,以避免重復(fù)訪問(wèn)。
在有向圖中,深度優(yōu)先搜索算法同樣從一個(gè)節(jié)點(diǎn)開(kāi)始,但在遞歸地探索其相鄰節(jié)點(diǎn)時(shí),需要考慮節(jié)點(diǎn)的出度和入度關(guān)系。具體來(lái)說(shuō),在訪問(wèn)一個(gè)節(jié)點(diǎn)時(shí),只有當(dāng)這個(gè)節(jié)點(diǎn)的所有出邊所指向的節(jié)點(diǎn)都已經(jīng)被訪問(wèn)過(guò),才會(huì)遞歸地訪問(wèn)這些出邊所指向的節(jié)點(diǎn)。這樣做是為了確保深度優(yōu)先搜索算法能夠遍歷完整個(gè)有向圖。
因此,盡管深度優(yōu)先搜索算法在無(wú)向圖和有向圖中都是從一個(gè)節(jié)點(diǎn)開(kāi)始,但在探索相鄰節(jié)點(diǎn)和回溯方面,有向圖的深度優(yōu)先搜索需要額外考慮節(jié)點(diǎn)的出度和入度關(guān)系。
DFS什么意思?
DFS的意思為深度優(yōu)先遍歷。
一、DFS的簡(jiǎn)介:
深度優(yōu)先遍歷(DFS)也叫深度優(yōu)先搜索。它的定義是:不斷地沿著頂點(diǎn)的深度方向遍歷。頂點(diǎn)的深度方向是指它的鄰接點(diǎn)方向。
二、DFS的實(shí)現(xiàn)步驟:
1、從頂點(diǎn)出發(fā)。
2、訪問(wèn)頂點(diǎn),也就是根節(jié)點(diǎn)。
3、依次從頂點(diǎn)的未被訪問(wèn)的鄰接點(diǎn)出發(fā),進(jìn)行深度優(yōu)先遍歷;直至和頂點(diǎn)有路徑相通的頂點(diǎn)都被訪問(wèn)。
4、若此時(shí)尚有頂點(diǎn)未被訪問(wèn),則從一個(gè)未被訪問(wèn)的頂點(diǎn)出發(fā),重新進(jìn)行深度優(yōu)先遍歷,直到所有頂點(diǎn)均被訪問(wèn)過(guò)為止。
三、計(jì)算機(jī)算法中對(duì)圖常用的遍歷:
到此,以上就是小編對(duì)于java深度優(yōu)先遍歷是什么意思啊的問(wèn)題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。
新聞名稱:Java深度優(yōu)先遍歷是什么
轉(zhuǎn)載來(lái)源:http://www.fisionsoft.com.cn/article/ccojgpi.html


咨詢
建站咨詢
