关于二分图问题的一些知识
2012-07-21 20:29
218 查看
二分图相关问题:
1、二分图最大匹配 (定义:匹配是二分图中边的集合,且集合中的任意两条边没有公共点,包含边数最多的匹配就是最大匹配)
2、二分图最小覆盖 (寻找一个点集,是的图中每一个边至少有一个点在该边上,即用最少的顶点去覆盖所有的边)
3、二分图最大独立集 (寻找一个点集,其中任意两点在图中无对应边)
4、二分图最小路径覆盖 (用尽量少的不相交简单路径覆盖有向无环图的所有顶点)
5、二分图最优匹配
6、稳定婚姻问题
二分图定义及判定:
定义:二分图中,顶点可以分为两个集合X和Y,每一条边的两个顶点都分别位于X和Y集合中
判定:利用BFS或者DFS进行黑白染色,共享一边的两点异色,检查是否存在矛盾
图G为二分图的充要条件是图中不含奇环
二分图的最大匹配可以用匈牙利算法解决:
1、二分图的最小覆盖=二分图的最大匹配
2、二分图的最大独立集=顶点数-最大匹配
3、二分图的最小路径覆盖解法:每个顶点分为两个,分别在X集合和Y集合中,如果存在有向边(a,b),对应在二分图中有(Xa,Yb),最小路径数=节点数-最大匹配
1、二分图最大匹配 (定义:匹配是二分图中边的集合,且集合中的任意两条边没有公共点,包含边数最多的匹配就是最大匹配)
2、二分图最小覆盖 (寻找一个点集,是的图中每一个边至少有一个点在该边上,即用最少的顶点去覆盖所有的边)
3、二分图最大独立集 (寻找一个点集,其中任意两点在图中无对应边)
4、二分图最小路径覆盖 (用尽量少的不相交简单路径覆盖有向无环图的所有顶点)
5、二分图最优匹配
6、稳定婚姻问题
二分图定义及判定:
定义:二分图中,顶点可以分为两个集合X和Y,每一条边的两个顶点都分别位于X和Y集合中
判定:利用BFS或者DFS进行黑白染色,共享一边的两点异色,检查是否存在矛盾
图G为二分图的充要条件是图中不含奇环
二分图的最大匹配可以用匈牙利算法解决:
int G[maxn][maxn]; int mark[maxn]; bool visit[maxn]; int n,m; int path(int u) { int i; for(i=1;i<=m;i++) { if(G[u][i] && !visit[i]) { visit[i]=true; if(mark[i]==-1 || path(mark[i])) { mark[i]=u; return 1; } } } return 0; } int Max_Match() { int i,ans; memset(mark,-1,sizeof(mark)); ans=0; for(i=1;i<=n;i++) { memset(visit,false,sizeof(visit)); if(path(i)) ans++; } return ans; }
1、二分图的最小覆盖=二分图的最大匹配
2、二分图的最大独立集=顶点数-最大匹配
3、二分图的最小路径覆盖解法:每个顶点分为两个,分别在X集合和Y集合中,如果存在有向边(a,b),对应在二分图中有(Xa,Yb),最小路径数=节点数-最大匹配
相关文章推荐
- 关于Gridview的一些知识和问题
- python 中关于descriptor的一些知识问题
- C语言的问题,关于temp参数的一些知识
- 关于一些平常JAVA知识及遇到问题的积累(持续更新)
- 关于二维码的一些基础知识和问题
- 关于A*算法求解最短路径问题的一些知识
- 关于c++ 中while(cin>>temp)相关问题搜集的一些知识
- C++源文件的后缀名问题(关于.h,.hh,.hpp,hxx . .cpp,.c,.cc,.cxx 一些小知识)
- 自定义viewgroup实现自动换行的布局,同时解决自定义布局在wrapcontent下高度不能自适应的问题,plus一些关于Component重写的基础知识
- 谈谈关于数据加密,解密及签名的一些问题
- java中关于位移运算的一些小问题
- 关于CSS中的一些问题
- 关于ipc和网络安全的一些知识和方法
- 关于javascript的一些知识
- 关于图形渲染的一些基础知识
- EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之_关于接口调用常见的一些问题(401 Unauthorized)
- 关于汽车一些您必须知道的知识
- 关于用HOOK拦截键盘的一些问题
- 近期学习javascript和jquery遇到一些问题的技巧知识总结
- 关于ant-Design的一些问题