首先所谓的网格图就是这样一张图,图源自POJ - 3020
网格图是天然的二分图(其实树也是的,因为可以分为奇数层和偶数层,满足二分图的定义),仔细思考这样一张图,i和j分别是网格图的坐标,对于每一个网个都对应一个i+j的值,对这样一个值而言,如果网格是奇数,那么他的上下左右相邻的四个格子必定是偶数(要么加一,要么减一),反之则反,如此在网格图中的匹配问题,我们通常可以采用奇偶建图的方式建图并进行解题。其中奇数和偶数点分别为x部和y部.
当然,我们也可以不对网格标号,而是将一个点分成两个点,其实也很好理解,根据二分图的定义,x部和y部分别是两个独立的点集,而对于一张图,我们可以利用染色的方法判断是否是二分图。拆点的话,其实就是把整个图扩大了一倍,想想一张图,每个点都细胞分裂成了两个点,但是中间仍然存在路径。这样建图也是可以的,只是最后的最大匹配数要在除以二。(一般这样建图就可以往最小路径覆盖的问题上去靠了)
关于拆点的建图我想再补充一点,有的拆点就是把一个点变成两个点,最后最大匹配要除以2,但是还有一种情况,就是在建无向图的时候其实也算一种拆点,最大匹配依然要除以2.因为我们一般二分图都是有向的,一条无向边其实相当于两条有向边,图依然扩大了一倍。