Source code for networkx.algorithms.community.community_utils
"""社区发现算法的辅助函数。"""
import networkx as nx
__all__ = ["is_partition"]
[docs]
@nx._dispatchable
def is_partition(G, communities):
"""返回 *True* 如果 `communities` 是图 `G` 的节点的一个划分。
一个全集的划分是一些互不相交的集合的族,它们的并集是整个全集。
Parameters
----------
G : NetworkX 图。
communities : 节点集合的列表或可迭代对象
如果不是列表,内部会转换为列表。
如果是迭代器,它将被耗尽。
"""
# Alternate implementation:
# return all(sum(1 if v in c else 0 for c in communities) == 1 for v in G)
if not isinstance(communities, list):
communities = list(communities)
nodes = {n for c in communities for n in c if n in G}
return len(G) == len(nodes) == sum(len(c) for c in communities)