滨州网站建设制作系统,网站建设及优化 赣icp,产品展示网站含后台网站模板下载,客户关系管理的含义一.二分图 二分图又称作二部图#xff0c;是图论中的一种特殊模型。 设G(V,E)是一个无向图#xff0c;如果顶点V可分割为两个互不相交的子集(A,B)#xff0c;并且图中的每条边#xff08;i#xff0c;j#xff09;所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A… 一.二分图 二分图又称作二部图是图论中的一种特殊模型。 设G(V,E)是一个无向图如果顶点V可分割为两个互不相交的子集(A,B)并且图中的每条边ij所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B)则称图G为一个二分图。当且仅当无向图G的每一个回路的次数均是偶数时G才是一个二分图。如果无回路相当于任一回路的次数为0故也视为二分图。—— 故二分图判定用染色法。二.二分图匹配 给定一个二分图G在G的一个子图M中M的边集{E}中的任意两条边都不依附于同一个顶点则称M是一个匹配。
选择边数最大的子图称为图的最大匹配问题(maximal matching problem)
如果一个匹配中图中的每个顶点都和图中某条边相关联则称此匹配为完全匹配也称作完备匹配。三.匈牙利算法——用增广路求最大匹配(称作匈牙利算法匈牙利数学家Edmonds于1965年提出) 先介绍一个概念增广路径
如果从x部的一个未匹配的点出发经过未匹配的边再经过匹配过的边再经过未匹配的边以此类推知道抵达y部的一个未匹配的点。其有三条性质
1.增广路径长度为奇数且未匹配的边比已匹配的边多一条
2.将增广路取反得到一条匹配数1的路径
3.有且仅有当不再存在增广路径时匹配数达到最大。代码: bool dfs(int u)
{vis[u]true;for(node *padj[u];p;pp-next){int vp-v;if(!vis[v]){vis[v]true;if(cy[v]-1||dfs(cy[v])){cx[u]v,cy[v]u;return true;}}}return false;
}
void maxmatch()
{memset(cx,-1,sizeof cx);memset(cy,-1,sizeof cy);match0;for(int i1;icnt1;i)if(cx[i]-1){memset(vis,0,sizeof vis);if(dfs(i)) match;}
} 四.最小点覆盖 最小点覆盖最大匹配
会证明了来更新。。。五.最大点独立集 对于任意图中有最大点独立集与最小点覆盖集互成补集。转载于:https://www.cnblogs.com/katarinayuan/p/6572872.html