有向圖和無向圖的環檢測


1.無向圖

並查集:檢查每一條邊的兩個端點是否是相同的連通子圖,如果是相同的,說明存在環;

深度遍歷:使用鄰接矩陣,只需要用一個數組標記是否訪問過,如果訪問過且不是該節點的父節點,則有環;

廣度優先:可以;

2.有向圖

拓撲排序:用一個隊列記錄入度為0的點,然后將他們去除時,另邊的另一頭節點的入度減一,不斷記錄入度為0的點,若最后沒有入度不為0的點,則沒有環,否則有環;不斷的插入隊尾,循環;

深度遍歷:和無向圖不同的是,我們不能直接和無向圖的深度遍歷一樣,因為有可能出現,一個節點同時是2個節點的孩子節點,但這個時候不是環,所以需要去除標記,或者使用三種標記:0代表節點沒有訪問過,-1代表節點被訪問過一次,但它還有孩子節點未被訪問完,1代表該節點的深度遍歷已經結束;這種方法比較巧妙,不需要去除標記;

廣度優先:不可以,深度優先記錄的是經過的路徑,環出現在經過的路徑上;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM