对于四节点图(a、B、C、D),有6条潜在边:AB、AC、AD、BC、BD、CD。选择边的概率为0.2。你知道吗
由于只有38个连接图的边的可能组合,下面的代码可以计算概率。你知道吗
但是,它是组合的手动输入。所以我的问题是,如果有6个节点(A,B,C,D,E,F)有15个可能的边,我如何修改我的代码以应用于n个节点。你知道吗
如果节点数大于4,则此代码将不可行。你知道吗
有没有办法不输入连通图的所有可能组合就解决这个问题?你知道吗
def graph_sim(X):
possible_edges = ['AB', 'AC', 'AD', 'BC', 'BD', 'CD']
distinct_connected_graphs = [
['AB', 'AC', 'AD', 'BC', 'BD', 'CD'],
['AB', 'AC', 'AD', 'BC', 'BD'], ['AB', 'AC', 'BC', 'BD', 'CD'], ['AB', 'AC', 'AD', 'BD', 'CD'],
['AB', 'AC', 'AD', 'BC', 'CD'], ['AC', 'AD', 'BC', 'BD', 'CD'], ['AB', 'AD', 'BC', 'BD', 'CD'],
['AB', 'AC', 'AD', 'BC'], ['AB', 'AC', 'AD', 'BD'], ['AB', 'AC', 'AD', 'CD'],
['AB', 'AC', 'BC', 'BD'], ['AB', 'AC', 'BC', 'CD'], ['AB', 'AC', 'BD', 'CD'],
['AB', 'AD', 'BC', 'BD'], ['AB', 'AD', 'BC', 'CD'], ['AB', 'AD', 'BD', 'CD'],
['AB', 'BC', 'BD', 'CD'], ['AC', 'AD', 'BC', 'BD'], ['AC', 'AD', 'BC', 'CD'],
['AC', 'AD', 'BD', 'CD'], ['AC', 'BC', 'BD', 'CD'], ['AD', 'BC', 'BD', 'CD'],
['AB', 'AC', 'AD'], ['AB', 'AC', 'BD'], ['AB', 'AC', 'CD'], ['AB', 'AD', 'BC'],
['AB', 'AD', 'CD'], ['AB', 'BC', 'BD'], ['AB', 'BC', 'CD'], ['AB', 'BD', 'CD'],
['AC', 'BC', 'BD'], ['AC', 'AD', 'BD'], ['AC', 'BC', 'CD'], ['AC', 'AD', 'BC'],
['AC', 'BD', 'CD'], ['AD', 'BC', 'BD'], ['AD', 'BC', 'CD'], ['AD', 'BD', 'CD']
]
directed_graph = [
[edge for prob, edge in zip(np.random.uniform(low= 0.0, high= 1.0, size=6), possible_edges) if prob < 0.2]
for i in range(X)]
connected_realisations = [i for i in directed_graph if i in distinct_connected_graphs]
print("-------------------------")
print("* The probability that a graph is connected in", X, "realisations is:", len(connected_realisations)/X)
print("* The number of connected graphs in", X, "realisations is:", len(connected_realisations))
return
graph_sim(2000)
目前没有回答
相关问题 更多 >
编程相关推荐