二分图的相关算法

二分图

本文仅限作者复习,不允许转载,谢谢合作~

一、二分图的判断

  • 一张无向图是二分图的充分必要条件是——不存在奇数环。
  • 一张无向图是二分图的充分必要条件是——染色法不产生矛盾。
  • 染色法不产生矛盾的充分必要条件是——不产生奇数环。

是二分图、不含奇数环、染色法不产生矛盾三者可互相证明。

二、二分图匹配

定义:

给定一个二分图 \(G\) ,在 \(G\) 的一个子图 \(M\) 中,\(M\) 的边集 \({E}\) 中的任意两条边都不依附于同一个顶点,则称 \(M\) 是一个匹配。

在二分图中包含边数最多的一组匹配称为二分图的最大匹配。

匈牙利算法

”其实很多时候,大家最后悔的时候,其实不是做错了,做错一件事其实是没有多后悔的。最后悔的,其实是错过了一些事,错过了才是最后悔的……“

——yxc

code

 for(int i = 1 ; i < n ; i++ )
        {
            memset(pd , false , sizeof pd ) ; 
            if( find(i) )   ans++ ;  
        }
bool find(int u )
{
    for(int i = head[u] ; i ; i = ed[i].nxt )
    {
        int v = ed[i].to ; 
        if(pd[v] )  continue ; 
        pd[v] = true ; 
        if(! hus[v] || find(hus[v] ))
        {
            hus[v] = u ; 
            return true ; 
        }
    }
    return false ; 
}

三、二分图的最小点覆盖

结论:二分图中的最小点覆盖的值 = 二分图中的最大匹配的值

四、二分图的最大独立集

结论:二分图中的最大独立集 = 二分图中的总点数 - 最大匹配值

五、二分图的最小路径点覆盖

结论:二分图中的最小路径点覆盖 = 二分图中的总点数 - 最大匹配数

posted @ 2022-06-01 22:45  Simon_...sun  阅读(60)  评论(0)    收藏  举报