• 【图论】二分图


    二分图(又称作二部图)

    设G=(V,{R})是一个无向图。如顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属两个不同的子集。则称图G为二分图

    其实还有一个概念:

    不存在奇数条边的简单回路。

    最大匹配

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

    选择这样的边数最大的子集称为图的最大匹配问题(maximal matching problem)

    如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配

    增广路(也称增广轨或交错轨)

    若P是图G中一条连通两个未匹配顶点的路径,并且属M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径

    交替路 

    从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边...形成的路径叫交替路。

    【匈牙利算法】——求最大匹配

    推荐一个趣味解释匈牙利算法的链接:http://blog.csdn.net/dark_scope/article/details/8880547/

    由增广路的定义可以推出下述三个结论:

    1-P的路径长度必定为奇数,第一条边和最后一条边都不属于M。

    2-P经过取反操作可以得到一个更大的匹配M’。

    3-M为G的最大匹配当且仅当不存在相对于M的增广路径。

     1 bool find(int x)
     2     {  
     3     int i,j;  
     4     for (j=1;j<=m;j++){ 
     5         if (map[x][j]==true && visit[j]==false)        
     6          
     7         {  
     8             visit[j]=1;  
     9             if (match[j]==0 || find(match[j])) 
    10             {   
    11                 match[j]=x;  
    12                 return true;  
    13             }  
    14         }  
    15     }  
    16     return false;  
    17 }  

    最小顶点覆盖:用最少的点,让每条边都至少和其中一个点关联;

    最小边覆盖:用尽量少的不相交简单路径覆盖有向无环图(DAG)G的所有顶点;

    最大独立集:在N个点的图G中选出m个点,使这m个点两两之间没有边的点中,m的最大值。

    证明参考:http://blog.csdn.net/huangshuai147/article/details/51087275

    完。

    2017-07-13 Hathaway

  • 相关阅读:
    用记事本编写C#程序并运行C#代码
    C#传递参数大集合
    JQuery或JavaScript获取网页的宽度、高等
    mybatis
    mysql 函数
    eclipse sts 常规操作
    谷歌浏览器自动翻译当前网页
    推荐Calendar操作日期
    IDEA 快捷键
    eclipse sts 快捷键
  • 原文地址:https://www.cnblogs.com/Hathawaxy/p/7159382.html
Copyright © 2020-2023  润新知