我正在使用python和igraph库:
from igraph import *
g = Graph()
g.add_vertices(4)
g.add_edges([(0,2),(1,2),(3,2)])
print g.betweenness()
我想生成一个包含10000个节点和100000条边的随机图。边缘可以是随机的。请建议一种随机边缘的方法(使用numpy.random.rand)
答案 0 :(得分:13)
你必须使用numpy.random.rand
吗?如果没有,只需使用Graph.Erdos_Renyi
,即可直接指定节点数和边数:
g = Graph.Erdos_Renyi(n=10000, m=100000)
答案 1 :(得分:0)
使用numpy.random.rand
执行此操作,生成随机数组,以您想要的概率对其进行阈值处理,然后将其传递给Graph.Adjacency
:
adj = numpy.random.rand(edges, edges)
adj[adj > 0.999] = 1 # sets everything over 0.999 to 1
adj[adj <= 0.999] = 0 # sets everything below to 0
graph = Graph.Adjacency(adj)
这会生成一个有向图,其中adj [i,j]告诉你是否有来自i - >的边缘。学家如果您想要一个无向的,请使用Graph.Ajacency(adj, ADJ_UNDIRECTED)
- 如果有adj[i, j] == 1
或adj[j, i] == 1
,则会有优势。
这不能保证准确地为您提供100,000条边 - 您需要吗?