二部图(Bipartite Graph)是一种特殊的图结构
,在图论中占有重要地位。
它被定义为顶点可以分为两个互斥
的集合,使得图中的每一条边都是连接这两个集合中的顶点,而不会在同一个集合内的顶点之间有边相连。
定义与符号
假设我们有一个图 G = ( V , E ) G = (V, E) G=(V,E),其中 V V V 是顶点的集合, E E E 是边的集合。
如果顶点集合
V
V
V 可以被划分为两个互不相交
的子集
U
U
U 和
W
W
W(即
V
=
U
∪
W
V = U \cup W
V=U∪W 且
U
∩
W
=
∅
U \cap W = \emptyset
U∩W=∅)
并且图中的每一条边都连接
U
U
U 集合中的顶点到
W
W
W 集合中的顶点(即对于任意的边
(
u
,
w
)
∈
E
(u, w) \in E
(u,w)∈E,都有
u
∈
U
u \in U
u∈U 和
w
∈
W
w \in W
w∈W 或者
w
∈
U
w \in U
w∈U 和
u
∈
W
u \in W
u∈W),那么这个图被称为二部图。
邻接矩阵
对于一个二部图,我们可以定义它的邻接矩阵
A
A
A,其中行
对应
U
U
U 集合的顶点,列
对应
W
W
W 集合的顶点。
如果 U U U 集合有 m m m 个顶点, W W W 集合有 n n n 个顶点,则邻接矩阵 A A A 是一个 m × n m \times n m×n 的矩阵,其中元素 A i j A_{ij} Aij 为:
A i j = { 1 如果存在边 ( u i , w j ) ∈ E 0 否则 A_{ij} = \begin{cases} 1 & \text{如果存在边 } (u_i, w_j) \in E \\ 0 & \text{否则} \end{cases} Aij={10如果存在边 (ui,wj)∈E否则
这里, u i u_i ui 是 U U U 集合中的顶点, w j w_j wj 是 W W W 集合中的顶点。
图的性质
二部图有一些有趣的性质和应用:
-
匹配问题:在二部图中寻找
最大的匹配对
(即没有共享顶点的边的最大集合),是计算机科学和组合优化中的经典问题。 -
着色问题:二部图的着色只需要两种颜色即可使相邻的顶点颜色不同,这反映了二部图的性质。
-
图的度数:在二部图中, U U U 集合和 W W W 集合中顶点的度数总和是相等的。
检测二部图
检测一个给定的图是否为二部图可以通过广度优先搜索(BFS)或深度优先搜索(DFS)算法来实现。
算法的目标是将顶点分成两个组,同时检查是否有任何冲突的边。
BFS/DFS算法检测二部图
-
初始化:选择一个未被访问的顶点作为起点,将其标记为属于第一个集合。
-
遍历:使用BFS或DFS遍历图中所有顶点,对于每个访问的顶点,将其标记为属于与已访问邻居相反的集合。
-
检查:如果遇到已经标记的顶点,并且该顶点的标记与预期的相反,那么图不是二部图。
应用
二部图在现实世界中有许多应用,包括但不限于推荐系统、社交网络分析、化学分子结构分析、资源分配问题
等。
公式的作用
- 邻接矩阵:提供了二部图中顶点间连接性的数学表示,便于计算和分析图的性质,如连通性、路径长度、最大流等。
- 检测算法:帮助确定一个图是否为二部图,这对于解决特定的图论问题非常重要,比如匹配问题和着色问题。
通过以上介绍,我们可以看到二部图不仅是一个重要的数学概念,而且在算法设计和实际应用中都有着广泛的应用价值。