我有需要计算下面的朋友:路径在完全图
在完全图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