generalized_degree#

generalized_degree(G, nodes=None)[source]#

计算节点的广义度。

对于每个节点,广义度表示该节点连接到具有给定三角形重数的边的数量。边的三角形重数是指该边参与的三角形数量。节点 \(i\) 的广义度可以写成向量 \(\mathbf{k}_i=(k_i^{(0)}, \dotsc, k_i^{(N-2)})\),其中 \(k_i^{(j)}\) 是连接到节点 \(i\) 且参与了 \(j\) 个三角形的边的数量。

参数:
G
nodes节点容器,可选(默认为G中的所有节点)

计算此容器中节点的广义度。

返回:
out计数器,或计数器字典

指定节点的广义度。计数器的键是边的三角形重数。

注意

忽略自环。

在N个节点的网络中,一条边可以具有的最高三角形重数是N-2。

如果没有特定三角形重数的边存在,返回值不包含 zero 条目。

节点 \(i\) 连接到的三角形数量可以通过广义度 \(\mathbf{k}_i=(k_i^{(0)}, \dotsc, k_i^{(N-2)})\) 通过 \((k_i^{(1)}+2k_i^{(2)}+\dotsc +(N-2)k_i^{(N-2)})/2\) 来恢复。

参考文献

[1]

V. Zlatić, D. Garlaschelli 和 G. Caldarelli 在 EPL (Europhysics Letters), Volume 97, Number 2 (2012) 发表的论文《Networks with arbitrary edge multiplicities》。 https://iopscience.iop.org/article/10.1209/0295-5075/97/28005

示例

>>> G = nx.complete_graph(5)
>>> print(nx.generalized_degree(G, 0))
Counter({3: 4})
>>> print(nx.generalized_degree(G))
{0: Counter({3: 4}), 1: Counter({3: 4}), 2: Counter({3: 4}), 3: Counter({3: 4}), 4: Counter({3: 4})}

恢复连接到节点的三角形数量

>>> k1 = nx.generalized_degree(G, 0)
>>> sum([k * v for k, v in k1.items()]) / 2 == nx.triangles(G, 0)
True
----

其他后端实现了此函数

graphblas : 启用 OpenMP 的稀疏线性代数后端。