当前课程知识点:算法设计与分析 > 3 Graph > 3.3 Testing Bipartiteness > Testing Bipartiteness
二部图检测
是广度优先搜索算法的一个应用
首先我们介绍二部图的定义和应用
一个无向图G=(V, E)被称为二部图
如果其节点可以被赋予红蓝两色
使得每条边都有一个红色的端点和一个蓝色的端点
二部图在稳定婚姻和排序问题中都有应用
在稳定婚姻问题中
代表男性的节点可以被涂成红色
代表女性的节点可以被涂成蓝色
在排序问题中
代表机器的节点可以被涂成红色
代表工作的节点可以被涂成蓝色
下图给出了一个二部图的实例
给定图G
它是二部图吗
二部图能够使得很多的问题变得简单
例如匹配问题
又比如独立集问题
对于二部图的情形是容易处理的
请看下图中的这个例子
左图是一个二部图G
将点涂成蓝色和红色分在两侧
得到如右图所示G的另外一种表示
看起来结构比较清晰
下面我们来讨论二部图的性质
有这样的引理
如果一个图G是二部图
那么它不包含奇圈
证明 奇圈是指包含奇数个点的圈
如果G中包含奇圈
则不可能对它用两种颜色交替着色
下面的两个图分别是二部图和非二部图
可以看到
左图不包含奇圈 可以进行二着色
而右图中包含奇圈 不能进行二着色
关于二部图
从BFS的角度 有这样的引理
设G为一个连通图
并且令L_0, …, L_k为
由BFS以s为起始点产生的层
则以下二者中恰好有一个一定成立
(1) G中没有边连接同一层的两个节点
这时可以把奇数层的点着一种颜色
偶数层的点着另一种颜色
G是一个二部图
(2) G中有一条边连接同一层中的两个节点
这时G包含一个奇圈
从而不是二部图
左 右两图分别展示了这两种情形的例子
由以上的讨论
我们可以得出这样的结论
一个图G是二部图 当且仅当它不包含奇圈
下面的两个图分别是
二部图和非二部图的例子
可以看到 左图不包含奇圈
而右图中包含5个点的奇圈
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam