有关二部图的算法

lemoner2003 2008-11-23 01:53:09
写出采用深度优先搜索图的思想判定任意给定一个无向连通图是否二部图的算法。
...全文
266 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
A2d3sk3r 2008-11-24
  • 打赏
  • 举报
回复
其实就是黑白染色的问题
任意选定一个节点,染黑,与之相连的节点染白,
用深搜或者广搜都行,如果碰到一个顶点已经被染色且与将该染的色相反,则说明不是二部图。
否则继续,直到深搜完毕(如果广搜,则是广搜的队列为空)
如果图不联通,则继续选择为遍历的节点继续如上遍历。
roadblossom 2008-11-24
  • 打赏
  • 举报
回复
帮你up一下
tailzhou 2008-11-23
  • 打赏
  • 举报
回复
使用一个辅助数组f[n];
f[v]==0表示节点v尚未遍历;
f[v]==1表示节点v属于集合A;
f[v]==-1表示节点v属于集合B;

1)初始化f[n]={0};
2)从图中任取一尚未遍历过的节点v[i],即f[i]==0;
置f[i]=1,从v[i]开始遍历,;
遍历的过程中,对与"当前节点v[j] "有边相连的所有的"节点v[j'] "进行判断;
a) 若f[j']==0,则f[j']=-f[j]
b) 若f[j']==-f[j],则不做任何操作;
c) 若f[j']==f[j],则图不是二分图,完毕;
直到当前的连通分量遍历完毕;
3) 若图还有尚未遍历的连通分量,继续2)直到所有节点都遍历完毕;


33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧