簡體   English   中英

檢測無向圖中是否存在循環

[英]Detect if there exists a cycle in an undirected graph

我的問題是關於檢測是否存在循環。 我不關心循環發生在哪里,但只有在存在循環的情況下。 特別是,我正在研究(最大)生成樹算法的實現。 我按降序對邊緣進行了排序,然后我選擇了一條邊並將其放入圖形邊緣IFF的集合中,它不會導致循環。

我發現,對於無向圖,只能檢查是否no_of_edges> no_of_vertices - 1 這是正確的嗎? 我試圖找到一個不真實的案例,但我不能。 當然,這並不意味着這是正確的。

謝謝

只需運行DFS搜索; 它會自動檢測循環,因為這是DFS的停止條件 - 當你進入一個已經在堆棧中的節點時就停止了,當你找到一個循環時就停止了。

如果圖形斷開連接,或者兩個給定節點之間有多個邊緣,那么您的想法就會失敗。 如果您規定任何兩個節點之間最多只有一條邊,那么您仍然需要檢查連通性。

但是,是的,如果連接圖中的邊數<=頂點數-1,那么就沒有周期。

基本上說你的想法是正確的。 但可能存在一些陷阱:

1)首先運行DFS並找到所有連接的組件,檢查所有連接組件中的條件no_of_edges <= no_of_vertices - 1

2)檢查每個連接的組件是否包含多個邊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM