【发布时间】:2021-02-24 10:46:03
【问题描述】:
如何通过 NetworkX 获得无向图的度数分布的二阶矩 (
【问题讨论】:
-
对所有节点求和k^2,然后除以节点数。
-
是图的二阶矩吗?各种网络之间有什么区别吗?谢谢@Joel
标签: python graph networkx social-networking
如何通过 NetworkX 获得无向图的度数分布的二阶矩 (
【问题讨论】:
标签: python graph networkx social-networking
我不确定您是否已经找到答案,但 here 是关于网络科学的一些很棒的文档。
对于您的问题,请特别查看第 4 章,部分:“The Meaning of Scale-Free”:
如 cmets 中所述,可以通过将度数的平方和除以节点数来计算二阶矩(假设每个节点仅存在一次并且所有节点的概率相同)。
这是计算第 n 时刻的这个计算的广义形式:
def nth_moment(g,n):
s = 0
for node in g.nodes:
s += g.degree[node] ** n
return (s/len(g))
some_graph = nx.barabasi_albert_graph(10000, 2, seed=1)
print(nth_moment(some_graph, 2))
import numpy as np
import networkx as nx
g = nx.barabasi_albert_graph(10000, 2, seed=1)
def nth_moment_v2(g,n):
degree_np = np.array(list(dict(g.degree).values()))
return (sum(degree_np**n)/len(g))
次:
st = time.time()
print(nth_moment(g,2))
print(time.time()-st)
st = time.time()
print(nth_moment_v2(g,2))
print(time.time()-st)
58.3626
0.017042160034179688
58.3626
0.005998849868774414
【讨论】: