我有需要計算下面的朋友:路徑在完全圖
在完全圖KN(K < = 13)中,有K *(K-1)/ 2的邊緣。 每條邊可以用2種方式定向,因此2^[(k *(k-1))/ 2]個不同情況。
她需要計算P[A !-> B && C !-> D] - P[A !-> B]*P[C !-> D]
X - > Y表示 「有從X到Y沒有路徑」,而P []的概率。
所以bruteforce算法是檢查2^[(k *(k-1))/ 2]中的每一個不同的圖形,並且由於它們是完整的,每個圖中只需要考慮一組A,B,C,D由於對稱性。然後計算P [A!→B]作爲「在節點1和2之間沒有路徑的圖的數量」除以圖的總數,即2^[(k *(k-1))/ 2]。
bruteforce方法可以在K8以下的mathematica中使用,但是她需要K9,K10 ...高達K13。
我們顯然不需要在案例中找到最短路徑,只需要查找是否存在最短路徑。
任何人都有優化建議? (這聽起來像一個典型的項目歐拉問題)。
實施例:
最小圖形K4具有4個頂點,給予6層的邊緣。因此,如果我們標記4個頂點A,B,C和D,則有2^6 = 64種可能的方式來分配方向到邊緣。
在一些圖中,沒有從A到B的路徑,讓他們說X),而在其他一些情況下,從C到D沒有路徑(讓我們說Y)。但是在一些圖表中,從A到B沒有路徑,並且同時沒有從C到D的路徑。這些是W.
因此P[A !-> B]=X/64
,P[C !-> D]=Y/64
和P[A !-> B && C !-> D] = W/64
。
更新:
- A,B,C和d是4個不同的vertives,因此,我們需要至少K4。
- 觀察到我們正在處理DIRECTED圖,所以UT矩陣的正常表示是不夠的。
- 在mathematica中有一個函數可以找到有向圖中節點之間的距離(如果它返回無窮大,沒有路徑),但這有點矯枉過正,因爲我們不需要距離,只要有是否有路徑。
請您增加一個小例子來使問題更清楚嗎? – 2009-08-24 18:21:17
A,B,C,D允許相等嗎? – 2009-08-24 18:51:42