projected_graph#

projected_graph(B, nodes, multigraph=False)[源代码]#

返回 B 在其一个节点集上的投影。

返回图 G,它是二分图 B 在指定节点上的投影。这些节点保留其属性,并且如果它们在 B 中有共同邻居,则在 G 中相连。

参数:
BNetworkX 图

输入图应该是二分图。

nodes列表或可迭代对象

要投影到的节点(“底部”节点)。

multigraph: 布尔值 (默认为False)

如果为 True,则返回一个多重图,其中多条边表示多个共同邻居。多重图中的边键被赋给邻居的标签。

返回值:
GraphNetworkX 图或多重图

投影到给定节点上的图。

说明

未尝试验证输入图 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)]

如果节点 ab 通过节点 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']]