projected_graph#

projected_graph(B, nodes, multigraph=False)[source]#

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

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

Parameters:
BNetworkX图

输入图应该是二分图。

nodes列表或可迭代对象

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

multigraph: 布尔值(默认=False)

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

Returns:
GraphNetworkX图或多重图

一个图,是投影到给定节点上的图。

Notes

没有尝试验证输入图B是否为二分图。 返回一个简单图,该图是二分图B在列表节点中给定节点集上的投影。如果multigraph=True,则返回一个多重图,其中每条边对应一个共享邻居。

允许输入有向图。输出也将是一个有向图,如果节点之间存在有向路径,则会有边。

图和节点的属性被(浅层)复制到投影图中。

参见 bipartite文档 了解NetworkX中如何处理二分图的进一步细节。

Examples

>>> 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']]