是否是二分图
对一个无向图,有
- 染色无矛盾,仅染黑白两种颜色。要求任意相临点颜色不同
- 无奇数环
- 该图可二分
-
1
⇔
3
1\Leftrightarrow 3
1⇔3
- 1 ⇒ 3 1 \Rightarrow 3 1⇒3,黑色点放左边,白色点放右边,就是一个二分图了。
- 3 ⇒ 1 3 \Rightarrow 1 3⇒1,左边染一个色,右边染另一个色,就成了
-
3
⇔
2
3 \Leftrightarrow 2
3⇔2
- 3 ⇒ 2 3 \Rightarrow 2 3⇒2,证逆否,有奇数环,不可二分,显然,有奇数环,染色必有矛盾,必不可二分,也可以直接证明,因为从要成环起点和终点要在同一边,因此,边的数必是偶数,只有走偶数步才可以回到起点所在的边。
- 2 ⇒ 3 2 \Rightarrow 3 2⇒3,在一个连通分量中,从点 u → . . . → v u\rightarrow...\rightarrow v u→...→v有多条路径,假设其中一条是有奇数条边,则所有的路径都必须是奇数条边,否则有 o d d + e v e n odd+even odd+even为奇数,同理,假设有一条路径有偶数条边,则所有的路径都是偶数条边的。故可得,任意两个点相距偶数个边还是奇数个边这个关系是确定的,这个关系是可传递的,任选一点为起点,将它和与它距离为偶数边的放到同一集合,奇数边的放到另一集合,便构造出了一个二分图。
最大匹配
匈牙利算法,要求将点分为左部和右部,左部到右部为正向边,右部到左部为反向边
算法流程:
- 对于左部的每一点,都去尝试寻找右部的一个匹配
- 如果右部的点未被使用,则匹配成功。
- 如果右部的点被使用,右部的点被谁占用,让它再去尝试找别的,找到就让给我,注意,右部用过的点不能再使用。
最大匹配
- 长为2,宽为一的方法,在一个二维区域中,有些位置不能摆放,可用最大匹配
- 国际象棋也可以使用最大匹配
将矩阵按行列下标和的值奇偶分为两类,无论是砖块还是日字棋,都是占一黑一白。
最小点覆盖
定义:选择最少的点,覆盖所有的边,称为最少点覆盖
最大独立集
定义:任意两点之间均没有边,是其补图的最大团
最少路径点覆盖
限定于有向图
选择最少不相交的路径,包含所有的点,一个孤立点也算一条路径,本身没有什么实用意义。
做法:拆点,将所有点分成
l
p
o
i
n
t
和
r
p
o
i
n
t
lpoint和rpoint
lpoint和rpoint,所有的边
u
→
v
u\rightarrow v
u→v变成
u
_
l
p
o
i
n
t
→
v
_
r
p
o
i
n
t
u\_lpoint \rightarrow v\_rpoint
u_lpoint→v_rpoint,
总点数
(
原始点,非拆点后的点总数)
−
最大匹配
总点数(原始点,非拆点后的点总数)-最大匹配
总点数(原始点,非拆点后的点总数)−最大匹配即是结果。左边非匹配点要么是终点,要么是孤立点。
最少可重复路径点覆盖
选择最少可相交的路径,包含所有的点,一个孤立点也算一条路径,有实际的应用,但解法上要求闭包变成最少路径点覆盖问题来求解
场景:选择最少的点,使得人沿着有向边走,最终可以包含所有的点。