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 的稀疏线性代数后端。