怎麼用拓撲排序判斷是否有環

2025-03-24 17:05:15 字數 2513 閱讀 4670

1樓:網友

a[i]記錄第洞陵i個結點當前入度數。

for i:=1 to n do

beginfor j:=1 to n doif v[i] and a[i]=0 then ..找到入度為0的點然後記錄下來 把與其相鄰的點的入度-1}

如果燃顫宴j從1到n掃完沒有入度為0且v[i]的點 則存在回皮銀路。

怎樣通過拓撲排序判斷圖是否有環

2樓:網友

拓撲排序的核心就是每次找入度為0的點 進入輸出佇列 然後將與此點相連的節點入度減1 重複做。

當做n-1 次後還有點沒進輸出佇列 那麼這些點就是環上的 因為環上的各點入度都為1 沒有0的 就不能更新。

下面哪乙個方法可以判斷出乙個有向圖中是否有環(迴路)

3樓:蜜蜂小玉公尺

a可以,深搜萬能,就是時間有點那個。

b當然可以,拓樸排序本來就是在無環圖才有解的c.求最短路徑,這個。一般不行,不過你用floyd修改我也無語了,可以,但時間代價有點大。

d.廣度優先遍歷,這個。。應該也可以吧,就是隻要佇列重複就有環,不過判斷很麻煩,得細細做才能出來。用寬搜是不是有點大材小用?

單選選b因為b是基礎的就可以,不需修改。

4樓:彤春竹

無環有向圖才可以進行拓撲排序,反之不對。選a。——參考《演算法》第四版p376頁。

5樓:江澄小嬌妻

b.拓撲排序。簡單地說,由某個集合上的乙個偏序得到該集合上的乙個全序,這個操作稱之為拓撲排序。得到的是線性序列。記住拓撲排序的作用是檢測有向無環圖中是否存在環。

6樓:最純淨的幸福

選2,我們考試的卷子答案。

c語言,有向圖裡如何檢測是否有環?

7樓:4終

1、為其定義乙個名稱,就叫【stackempty】。

2、接下來在引數中傳遞乙個top表過來。

3、好了後就可以定義他的返回型別,空表時返回1,非空返回0,因此為整形。

6、然後就能寫上這樣的一段判斷語句。

6、為了遵循乙個出口,不建議程式中有兩個return語句,建議定義乙個變數。

6、然後返回這變數,這樣就能更好的提高程式的可讀性。執行就可以了。

8樓:匿名使用者

有向圖是否有環的判定演算法,主要有深度優先和拓撲排序2中方法。

1、拓撲排序,如果能夠用拓撲排序完成對圖中所有節點的排序的話,就說明這個圖中沒有環,而如果不能完成,則說明有環。

2、strongly connected components。我們可以回憶一下強連通子圖的概念,就是說對於乙個圖的某個子圖,該子圖中的任意u->v,必有v->u,則這是乙個強連通子圖。這個限定正好是環的概念。

所以我想,通過尋找圖的強連通子圖的方法應該可以找出乙個圖中到底有沒有環、有幾個環。

3、改進的dfs

單純用dfs是不能夠的。如果題目給出的是乙個無向圖,dfs是可以解決的。但無向圖得不出正確結果的。

比如:a->b,a->c->b,我們用dfs來處理這個圖,我們會得出它有環,但其實沒有。

我們可以對dfs稍加變化,來解決這個問題。解決的方法如下:

圖中的乙個節點,根據其c[n]的值,有三種狀態:

0,此節點沒有被訪問過。

1,被訪問過至少1次,其後代節點正在被訪問中。

1,其後代節點都被訪問過。

1、如果c[v]=0,這是乙個新的節點,不做處理。

2、如果c[v]=-1,說明是在訪問該節點的後代的過程中訪問到該節點本身,則圖中有環。

3、如果c[v]=1,類似於2的推導,沒有環。 在程式中加上一些特殊的處理,即可以找出圖中有幾個環,並記錄每個環的路徑。

有向圖中怎麼用拓撲排序判斷環

9樓:網友

發現只要乙個點在排序時多於一次符合入隊條件。

有環有向圖究竟可以拓撲排序嗎???

10樓:匿名使用者

有環有向圖 在工程上是不可能實際存在的,因為不可能自己即是自己的先導又是自己的後驅 比如, 某學校規定,修完離散數學。

才能修資料結構。

修完資料結構以後的下一門課程一定不是離散數學了。 這裡的修完是指學完並考試通過,所以是重修的話還是進行不了下一道工序。 修完資料結構才能修離散,但修完理論就得修資料結構山帶巧,這顯然是乙個死迴圈行鬧 所以有環有向圖進行拓撲排序。

是乙個偽概念,嚴蔚敏書逗鍵上有講的 假設你有這樣乙個環,那麼理論是可能讓你一直在這裡環裡面做死迴圈的。 [

11樓:匿名使用者

有環的話,在這個環裡你找不到入度為0的節點,不能拓撲排序。

12樓:匿名使用者

無環有向圖當然可以拓撲排序了。

13樓:匿名使用者

哪個大大給個演算法啊!!!

怎麼樣判斷自己是否有牙周炎

我們通常所說的牙周炎就是指發生在自己牙周組織的一種常見的炎症現象,牙周炎是累及四種牙周支援組織 牙齦 牙周膜 牙槽骨和牙骨質 的慢 染性疾病,往往引發牙周支援組織的炎性破壞。牙周炎是一種比較常見的口腔疾病,該病一旦發作,將會給人們帶來極大的痛苦,所以要能夠事先認清牙周炎的徵兆,然後及早進行 與調理,...

怎麼判斷男生對你是否有好感,你們是否能發展

假裝不小心碰到他,以此觀察他的反應。比如當你們並排而坐時,不經意地用膝關節或手臂碰到他,如果他調整自己,很可能對你不感興趣。那就不能發展了。當你有事情找他幫助的時候,看他會不會竭盡全力幫助你,因為對你有好感的男生他會把你的事情看的比自己的事情還要重要。內心戲不要太多,保持正常朋友間的交往,實在不能控...

怎麼判斷是否肚子裡有蛔蟲呢,怎麼才能知道肚子裡有沒有蟲子

肚子有寄生蟲多有磨牙,腹痛,面頰或臉上有白色斑塊,一般2歲以後每年定期驅蟲。口服史可腸蟲清2片。每盒10元左右。診所或社群賣零的,可以買2片,每片1元 1.5元。藥店不零售要買一整盒。藥店有賣一種藥是專治蟲子的,叫做二片,自已有沒有長蟲子肯定是不知道的,所以我是定期半年吃一次,這藥不會有 的,所以不...