我有一个包含25万个节点和100万个边的大型图形,以计算其顶点之间的间隔(不计任何权重)。我的目标是使用python-igraph完成这项工作,因为它支持与其他软件包的并行计算。当我在具有100个顶点的相对较小的晶格上比较python-igarph和networkx的结果时(见图)。我发现它们完全不同。即使对于具有9个节点的晶格,igraph的结果全为0,而networkx的结果似乎是正确的。谁能帮我解决python-igraph这个问题?
代码如下:
from igraph import *
import networkx as nx
print("\tUse python-igraph with Vertices=100 ")
ig = Graph.Lattice([10, 10], 4, False, False, False)
bt1 = ig.betweenness(directed=False, cutoff=None,nobigint=False)
print("\tBetweenness of python-igraph:")
print(bt1)
print("\tUse networkx with Vertices=100")
G_la= nx.grid_2d_graph(10,10,periodic=False)
bt2 = nx.betweenness_centrality(G_la)
print("\tBetweenness of networkx:")
print (bt2)
在此处enter image description here enter image description here
输入图片描述答案 0 :(得分:0)
根据我对igraph Lattice函数的documentation的理解,您拥有的数字4
表示一个节点将连接到最多相距4步的任何节点在格子上。 networkx图将仅连接到4个最近的邻居。所以igraph有很多联系。在9节点的示例中,igraph的所有节点都已连接。
为清楚起见,networkx会将节点(1,1)
与(1,0)
,(0,1)
,(1,2)
和(2,1)
连接起来,而您的igraph命令将其与所有这些,还有(1,3)
,(1,4)
,(1,5)
,(0,4)
等。 (由于igraph不在我的计算机上,因此我没有明确检查,但我可以肯定这是对文档的正确理解。)