geekdoc-python-zh/docs/askpython/bipartite-graph-in-python.md

3.1 KiB
Raw Permalink Blame History

Python 中的二分图–完整指南

原文:https://www.askpython.com/python/examples/bipartite-graph-in-python

嘿伙计们!今天,在本教程中,我们将了解什么是二分图,以及如何使用 networkx 库在 python 编程语言中实现它们。


二分图简介

A 二部图 是顶点可以分成两个独立集合——A 和 b 的图,每一个(Ab)都意味着集合 A 中的一个节点和集合 b 中的一个节点之间的连接这里“A”属于 A“b”属于 b

一个集合中的节点不能相互连接;它们只能连接到另一组中的节点。

Bipartite Graph Example

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

Bipartite Graph Visualization


结论

恭喜你!您刚刚学习了如何使用 Networkx 构建二分图。希望你喜欢它!😇

喜欢这个教程吗?无论如何,我建议你看一下下面提到的教程:

  1. NetworkX 包——Python 图形库
  2. 计算未加权图中节点间的距离
  3. Python 中的图形操作【附简单例子】
  4. 用 Python 实现图形

感谢您抽出时间!希望你学到了新的东西!!😄