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