2016-11-29 43 views
-3

如何計算n個節點和n *(n-1)/ 2個有向邊強連通圖中有多少個3邊循環?此有向圖中有多少個3邊循環?

+2

到目前爲止您嘗試過什麼,以及您卡在哪裏?這是一個有向還是無向的圖? (請注意,對於無向圖,您的邊數是錯誤的。) –

+0

@RoryDaulton我說它是有向圖...仔細閱讀。我更新了一些邊緣。 – Horkynff4

+1

是的,你確實說過「有直接的邊緣」,我很抱歉。你確實修正了邊緣的數量。但是你仍然需要展示你到目前爲止已經嘗試過的東西,並且說出你被困住的地方。例如,您是否嘗試過使用3,4和5節點的圖形,並手動計算三邊循環,尋找模式? –

回答

0

您正在查找的數字不是一個常數,它取決於如何放置n(n-1)/2邊緣,因此無法以分析方式計算它。例如,圖G1=({1,2,3,4}, {(1,2), (2,3), (3,4}, (4,1), (2,1), (4,3)}具有n = 4節點和n(n-1)/2 = 6邊,但不包含3邊循環。相反,圖表G2=({1,2,3,4}, {(1,2), (2,3), (3,4), (4,1), (3,1), (4,2)}有兩個3邊沿週期。這個想法可以很容易地推廣到更大的值n,此外,如果您不允許「反向邊緣」(例如,您不能在G1中同時有(1,2)(2,1)),它仍然成立。這個例子有更多的涉及,你實際上需要5個節點。

因此,尋找計算特定圖的3邊循環數的算法是合理的。對於G=(V,E)蠻力算法會是這樣的:

count = 0 
for n1 in V: 
    for n2 in V: 
    for n3 in V: 
     if E(n1, n2) and E(n2, n3) and E(n3, n1): 
     count +=1 
return(count/3) # because each triangle is counted 3 times 

,如果你有這樣的節點可以優化和邊緣索引,但我想這超出了你的問題的範圍。我希望我能正確理解你的問題,我的答案是有幫助的。

+0

你的第一張圖沒有很強的聯繫。此外,我只計算5個邊而不是6個。 –

+0

事實上,我忘了在兩個例子中都包含邊(4,1)。我編輯了我的答案,現在沒問題。對不起,這個錯誤。 – thelastone