下面的函数返回一个大小为nxn
的随机生成的邻接矩阵,表示一个图。
import random
def random_adjacency_matrix(n):
matrix = [[random.randint(0, 1) for i in range(n)] for j in range(n)]
# No vertex connects to itself
for i in range(n):
matrix[i][i] = 0
# If i is connected to j, j is connected to i
for i in range(n):
for j in range(n):
matrix[j][i] = matrix[i][j]
return matrix
这是一个非常简单的解决方案,我希望它能满足两个额外的需求。
矩阵表示的图必须是完全连接的,换句话说,在某些步骤中,不能有任何节点无法从任何其他节点访问。
每个节点都有许多边。现在它是完全随机的,因此一个节点有多少条边是相当一致的,当n
很大时,所有图的平均边数也会很大。我希望每个节点的平均边数变化更大,与图的大小无关,这样一些图很少有连接,而另一些图有很多连接。
编辑: 使用networkx包,这似乎是我想要的,只有上面的第1点也满足了:
import networkx, random
G = networkx.binomial_graph(50, random.random()) # 50 nodes, random probability of an edge
目前没有回答
相关问题 更多 >
编程相关推荐