二分图定理及常见模型

判二分图

无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。

-

二分图最大匹配

定义:匹配是图中一些边的集合,且集合中任意两条边都没有公共点,所有的匹配中,边数最多的就是最大匹配。如果所有点都是匹配点,则称这个匹配为完美匹配。
算法:用匈牙利算法可以在O(V*E)的复杂度内求出二分图的最大匹配。

-

二分图最小顶点覆盖

定义:点覆盖是图中一些点的集合,且对于图中所有的边,至少有一个端点属于点覆盖,点数最小的覆盖就是最小点覆盖。
定理:最小点覆盖=最大匹配。

-

二分图最小边覆盖(最小路径覆盖数)

定义:边覆盖是图中一些边的集合,且对于图中所有的点,至少有一条集合中的边与其相关联,边数最小的覆盖就是最小边覆盖。
定理:最小边覆盖=图中点的个数-最大匹配。

-

二分图最大独立集

定义:独立集是图中一些点的集合,且图中任意两点之间都不存在边,点数最大的就是最大独立集。
定理:最大独立集=图中点的个数-最大匹配。

-

有向无环图最小不相交路径覆盖

定义:用最少的不相交路径覆盖所有顶点。
定理:把原图中的每个点V拆成Vx和Vy,如果有一条有向边A->B,那么就加边Ax-By。这样就得到了一个二分图,最小路径覆盖=原图的节点数-新图最大匹配。

-

有向无环图最小可相交路径覆盖

定义:用最小的可相交路径覆盖所有顶点。
算法:先用floyd求出原图的传递闭包,即如果a到b有路,那么就加边a->b。然后就转化成了最小不相交路径覆盖问题。

-

二分图带权最大匹配(最佳匹配)

定义:每个边都有一组权值,边权之和最大的匹配就是带权最大匹配。
算法:KM算法,复杂度为O(V^3)

你可能感兴趣的:(图论/数论)