您好,登錄后才能下訂單哦!
如何進行數據結構之圖的深度優先搜索,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
遍歷原則:
從圖中某一個指定的頂點v出發,先訪問v,然后從該頂點未被訪問過的鄰接頂點w出發進行深度優先搜索,直到圖中與v想通的所有頂點都被訪問,此時相當于完成圖中一個包含頂點v的連通分量的遍歷。如果圖中存在尚未遍歷過的頂點,則從另一個未被訪問的頂點出發重復上述過程,直到圖中所有頂點均被遍歷到。
顯然,深度優先搜索算法是一種遞歸算法。
分析:
假設有一幅圖,如下圖所示。
該圖的鄰接表為:
如果對該圖進行深度優先搜索,步驟如下:
STEP1:從頂點A出發進行深度優先搜索。首先訪問頂點A,并將A標注為已訪問狀態(圖中標注為黃色),然后去找頂點A的第一個鄰接點,如果第一個鄰接點已被訪問,則搜索頂點A的下一個鄰接點。顯然,頂點A的第一個鄰接點為頂點B,且B未被訪問。
STEP3:訪問頂點C,并將C標注為已訪問狀態(圖中標注為橙色),尋找C的第一個鄰接點B,因為B已經被訪問,因此尋找下一個鄰接點D,D未被訪問過。
STEP5:訪問頂點E,并將E標注為已訪問狀態(圖中標注為紅色),訪問E的第一個鄰接點D,發現D已經被訪問過,然后去找E的下一個鄰接點,發現沒有鄰接點,則返回上一層,也就是STEP4。
STEP7:尋找頂點D的未被訪問的鄰接點,發現不存在這樣的鄰接點,則返回STEP3層;尋找頂點C的未被訪問的鄰接點,發現不存在這樣的鄰接點,則返回STEP2層;尋找頂點B的未被訪問的鄰接點,發現不存在這樣的鄰接點,則返回STEP1層;尋找頂點A的未被訪問的鄰接點,發現不存在這樣的鄰接點,則退出程序。此時,圖中各個頂點的訪問便結束了。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。