projected_graph#
- projected_graph(B, nodes, multigraph=False)[源代码]#
返回 B 在其一个节点集上的投影。
返回图 G,它是二分图 B 在指定节点上的投影。这些节点保留其属性,并且如果它们在 B 中有共同邻居,则在 G 中相连。
- 参数:
- BNetworkX 图
输入图应该是二分图。
- nodes列表或可迭代对象
要投影到的节点(“底部”节点)。
- multigraph: 布尔值 (默认为False)
如果为 True,则返回一个多重图,其中多条边表示多个共同邻居。多重图中的边键被赋给邻居的标签。
- 返回值:
- GraphNetworkX 图或多重图
投影到给定节点上的图。
另请参阅
is_bipartite
is_bipartite_node_set
sets
weighted_projected_graph
collaboration_weighted_projected_graph
overlap_weighted_projected_graph
generic_weighted_projected_graph
说明
未尝试验证输入图 B 是否为二分图。返回一个简单图,它是二分图 B 在列表 nodes 中给定的节点集上的投影。如果 multigraph=True,则返回一个多重图,其中每条边对应一个共同邻居。
允许有向图作为输入。如果节点之间存在有向路径,则输出也将是有向图,并包含相应的边。
图和节点的属性被(浅)复制到投影图。
有关 NetworkX 中如何处理二分图的更多详细信息,请参阅
二分图文档
。示例
>>> from networkx.algorithms import bipartite >>> B = nx.path_graph(4) >>> G = bipartite.projected_graph(B, [1, 3]) >>> list(G) [1, 3] >>> list(G.edges()) [(1, 3)]
如果节点
a
和b
通过节点 1 和 2 连接,则构建一个多重图会在投影到 [a
,b
>] 时产生两条边。>>> B = nx.Graph() >>> B.add_edges_from([("a", 1), ("b", 1), ("a", 2), ("b", 2)]) >>> G = bipartite.projected_graph(B, ["a", "b"], multigraph=True) >>> print([sorted((u, v)) for u, v in G.edges()]) [['a', 'b'], ['a', 'b']]