![](/img/trans.png)
[英]How to detect if an undirected graph has a cycle and output it using BFS or DFS
[英]Determining if a graph has a cycle without using DFS
我在考試中遇到以下問題之一:
使用Kahn算法的地標排序要求該圖為DAG(有向無環圖)。 如果不先使用DFS / BFS,如何確定圖形是否不包含循環?
我想回答這個問題太久了,我感到困惑。 誰能給我指出一種算法,該算法確定一個圖形沒有不使用DFS的循環,還是我應該向老師講課?
當且僅當在卡恩算法的某個時刻沒有源可供選擇(並且其余圖形仍然為空)時,存在一個循環
證明:
方向1 <--
:
如果存在循環,則將其設為v1->v2->v3->vk->v1
。
在算法的每個步驟中, v1,v2,...,vk
都不是源-通過歸納證明您從未刪除任何這些邊來通過歸納證明
方向2- -->
:
如果在卡恩算法的某個時刻,雖然算法還沒有完成,但沒有可供選擇的源,那么每個節點(在提醒圖中)都會有一個輸入邊。
假設沒有循環,並讓v1->v2->..->vk
是提醒圖中最長的簡單路徑。
但是, v1
有一個輸入邊,因此存在一些節點v0
,因此v0->v1->...->vk
也是一條路徑,並且由於我們假設沒有循環,所以它也是一條簡單的路徑。
與v1- v1->..->vk
最大值矛盾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.