triadic_census#
- triadic_census(G, nodelist=None)[源代码]#
确定有向图的三元组普查结果。
三元组普查(triadic census)统计了有向图中存在的16种可能的三元组类型的数量。如果传入节点列表(nodelist),则只考虑包含该列表中节点的那些三元组。
- 参数:
- G有向图
一个 NetworkX DiGraph 对象
- nodelist列表
要计算三元组普查的节点列表
- 返回:
- census字典
以三元组类型为键,出现次数为值的字典。
- 抛出:
- ValueError
如果
nodelist
包含重复节点或不在G
中的节点。如果要忽略此情况,可以使用set(nodelist) & G.nodes
进行预处理。
另请参阅
triad_graph
注意
此算法的时间复杂度为 \(O(m)\),其中 \(m\) 是图中的边数。
对于无向图,可以通过首先使用
G.to_directed()
方法将图转换为有向图来计算三元组普查。转换后,在无向图情境下,只会出现三元组类型 003、102、201 和 300。参考文献
[1]Vladimir Batagelj 和 Andrej Mrvar,《用于具有小最大度的大型稀疏网络的亚二次时间三元组普查算法》,卢布尔雅那大学,http://vlado.fmf.uni-lj.si/pub/networks/doc/triads/triads.pdf
示例
>>> G = nx.DiGraph([(1, 2), (2, 3), (3, 1), (3, 4), (4, 1), (4, 2)]) >>> triadic_census = nx.triadic_census(G) >>> for key, value in triadic_census.items(): ... print(f"{key}: {value}") 003: 0 012: 0 102: 0 021D: 0 021U: 0 021C: 0 111D: 0 111U: 0 030T: 2 030C: 2 201: 0 120D: 0 120U: 0 120C: 0 210: 0 300: 0