triadic_census#
- triadic_census(G, nodelist=None)[source]#
确定有向图的三元组普查。
三元组普查是计算有向图中存在的16种可能的三元组类型的数量。如果传递了一个节点列表,则只考虑包含节点列表元素的三元组。
- Parameters:
- G有向图
一个NetworkX有向图
- nodelist列表
要计算三元组普查的节点列表
- Returns:
- census字典
以三元组类型为键,出现次数为值的字典。
- Raises:
- ValueError
如果
nodelist
包含重复节点或不在G
中的节点。 如果想要忽略这一点,可以预处理为set(nodelist) & G.nodes
See also
triad_graph
Notes
该算法的时间复杂度为:math:
O(m)
,其中:math:`m`是图中的边数。对于无向图,可以通过首先使用
G.to_directed()
方法将有向图转换为无向图来计算三元组普查。转换后,只有三元组类型003、102、201和300会出现在无向图中。References
[1]Vladimir Batagelj和Andrej Mrvar,一种适用于具有小最大度的大稀疏网络的次二次三元组普查算法, 卢布尔雅那大学, http://vlado.fmf.uni-lj.si/pub/networks/doc/triads/triads.pdf
Examples
>>> 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