3.1 KiB
Python 中的二分图–完整指南
原文:https://www.askpython.com/python/examples/bipartite-graph-in-python
嘿伙计们!今天,在本教程中,我们将了解什么是二分图,以及如何使用 networkx 库在 python 编程语言中实现它们。
二分图简介
A 二部图 是顶点可以分成两个独立集合——A 和 b 的图,每一个(A,b)都意味着集合 A 中的一个节点和集合 b 中的一个节点之间的连接,这里“A”属于 A,“b”属于 b
一个集合中的节点不能相互连接;它们只能连接到另一组中的节点。
Bipartite Graph Example
例如,二分图在客户购买的建模中非常有用。在这种情况下,节点分为两组:客户分区和产品分区。
边缘表示消费者已经购买了某种产品。在这种情况下,似乎可以推断出项目不能相互链接;毕竟,一个产品不能购买另一个产品。
用 Python 实现二分图
程序的第一步是将模块/库导入到我们的代码中。我们需要从 networkx 导入基本 networkx 和二分网络。
import networkx as nx
from networkx.algorithms import bipartite
接下来,我们将创建一个空图,以便在后面的部分中向其添加节点和边。
G = nx.Graph()
下一步是添加节点属性为“bipartite”的节点。这里,二分属性的值决定了节点的类。如果它的值是 0,那么它属于第一类,如果它的值是 1,那么它属于第二类。
G.add_nodes_from(['A1','A2','A3','A4'], bipartite=0)
G.add_nodes_from(['B1','B2','B3'],bipartite=1)
接下来,我们将只在相反类的节点之间添加边。你可以添加任意多的边,现在,我们已经添加了一些。
G.add_edges_from([('A1', "B3"),('A4', "B1"),('A2', "B2"),('A2', "B3"),('A3', "B1")])
我们还可以使用下面提到的简单代码行来确认该图是否是二分图。
bipartite.is_bipartite(G)
现在,通过下面提到的代码片段非常容易地将图形可视化。
nx.draw_networkx(G, pos = nx.drawing.layout.bipartite_layout(G, ['A1','A2','A3','A4']), width = 2)
Bipartite Graph Visualization
结论
恭喜你!您刚刚学习了如何使用 Networkx 构建二分图。希望你喜欢它!😇
喜欢这个教程吗?无论如何,我建议你看一下下面提到的教程:
感谢您抽出时间!希望你学到了新的东西!!😄

