新的二部图判定算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

G中无边存在 。如果 a和 b在同一棵树上且不在同一层上 , 由 V1 的定义可知 , a和 b的层数至少差 2层 ,由广度优先遍历的 特点可知 , a, b两点间在 G中无边 ,所以 V1 中任意两点间在 G 中无边存在 。
同理可证 V2 中任何两点间在 G中无边存在 。故 G中每条 边必具有形式 ( vi, vj ) ,其中 vi 属于 V1、vj 属于 V2 ,由定义 1可 知 , G是具有互补节点子集 V1 和 V2 的一个二部图 。
定义 4 一个连通图的生成树是一个极小连通子图 , 它 含有图中全部顶点 ,但只有足以构成一棵树的 n - 1条边 [4 ] 。
定义 5 设 E ( G) 为连通图 G中所有边的集合 ,则从图中 任一顶点出发遍历图时 ,必定将 E ( G) 分成两个集合 T ( G) 和
收稿日期 : 2009 - 02 - 26;修回日期 : 2009 - 04 - 07。 作者简介 :王青松 (1974 - ) ,男 (满族 ) ,辽宁岫岩人 , 讲师 , 硕士 ,主要研究方向 :软件开发 、计算机网络 、数据库理论及应用 。
不是二部图 ,否则当算法结束时 ,发现任一层上的任意两个节
点在 G中都不邻接 ,那么 G是具有互补顶点子集 V1 和 V2 的二 部图 。本文在文献 [ 4 ] 的广度优先遍历算法的基础上 ,给出了
一个二部图判定的算法 ,算法描述如下 。
int B igraphDecision (Graph G ) { / / 按广度优先遍历无向图 G,判断 G是否为二部图 , 如果是则返 回 1, 否则返回 0
关键词 :二部图 ;二部图判定 ;广度优先遍历 中图分类号 : TP391. 41 文献标志码 : A
New a lgor ithm of b ipartite graph dec ision
WANG Q ing2song
(College of Inform a tion, L iaon ing U n iversity, Shenyang L iaoning 110036, Ch ina)
/ / v尚未访问
visited [ v ] = 1; EnQ ueue (Q, v) ;
定义 2 设 G =〈V, E〉为一个无向图 , vi, vj ∈V,若存在 et ∈ E, 使得 et = ( vi , vj ) , 则称 vi 与 vj 是相邻 (或称邻接 ) 的 [1]。
定义 3 节点的层从根开始定义起 ,根为第一层 ,根的孩 子为第二层 。若某节点在第 L 层 , 则其子树的根就在第 L + 1 层 [4]。
以 ,本文的最大意义是 :提出了一个新的二部图判定的充要条 件 ,给出了相应地二部图判定算法 ,该算法很好地解决了二部 图判定问题 。
1 基本定义
本文所使用的专业名词在许多相关文献中都可以查到 , 这里仅对一些名词给出定义 。
定义 1 设 G =〈V, E〉为一个无向图 ,若能将 V 分成 V1 和 V2 (V1 ∪ V2 = V, V1 ∩ V2 = ) ,使得 G中的每条边的两 个端点都是一个属于 V1 ,另一个属于 V2 ,则称 G为二部图 (或 称二分图 ,偶图等 ) ,称 V1 和 V2 为互补顶点子集 ,常将二部图 G记为〈V1 , V2 , E〉[1 ] 。
第 29卷 2009年 6月
计算机应用 Journal of Computer App lications
Vol. 29
June 2009
文章编号 : 1001 - 9081 (2009) S1 - 0181 - 03
新的二部图判定算法
王青松
(辽宁大学 信息学院 ,沈阳 110036) (wqsteacher@ sohu. com )
2 二部图判定的充要条件
图的广度优先搜索遍历类似于树的按层次遍历的过程 。 假设从图中某顶点 v出发 ,在访问了 v之后访问 v的各个 未曾访问过的邻接点 ,然后分别从这些邻接点出发依次访问 它们的邻接点 ,并使“先被访问的顶点的邻接点 ”先于“后被 访问的顶点的邻接点 ”被访问 , 直至图中所有已被访问的顶 点的邻接点都被访问到 。若此时图中尚有顶点未被访问 ,则另 选图中一个未曾访问的顶点作起始点 ,重复上述过程 ,直至图 中所有顶点都被访问为止 [4 ] 。 在对无向图进行遍历时 ,对于连通图 ,仅需从图中任一顶 点出发 ,进行广度优先搜索 , 便可访问图中所有顶点 , 形成一 棵广度优先生成树 。对于非连通图 ,则需从多个顶点出发进行 广度搜索 ,而每一次从一个新的起始点出发进行搜索过程中 得到的顶点访问序列恰为其各个连通分量的顶点集 , 这些连 通分量的广度生成树组成非连通图的广度优先生成森林 [4 ] 。 下面给出二部图判定的一个新的定理 。 定理 2 无向图 G =〈V, E〉是二部图当且仅当 G的广度 优先生成森林中的同一层上的任意两点在 G中不邻接 。 证明 必要性 。已知 G是二部图 , 所以可将 G记为〈V1 , V2 , E〉,不妨设 G为连通图 , 否则可对每个连通分支进行讨 论 。设 a为 G中任意一个顶点 ,不妨设 a ∈V1 ,从 a出发进行广 度优先遍历得到一棵广度优先生成树 T,因为 G是二部图 ,所 以 T中同一层上的节点只属于 V1 或者只属于 V2 ,因为 a是生 成树的根且 a ∈ V1 ,所以 a的下一层 (即第二层 ) 上的所有节 点 (即 a的邻接点 ) 显然都属于 V2 , 第三层上的节点都属于 V1 ,依次类推 ,第奇数层上的节点都属于 V1 , 第偶数层上的节 点都属于 V2。由二部图的定义可知 , V1 , V2 各自中的任何两个 节点在 G中都是不邻接的 ,所以 T中同一层上的任意两个节 点在 G中都不邻接 ,所以图 G的广度优先生成森林中的同一 层上的任意两点在 G中不邻接 。 充分性 。若图 G = < V, E > 的广度优先生成森林中的同 一层上的任意两点在 G中不邻接 , 已知森林 F中的树之间是 不相交的 , V 中的每个节点属于且仅属于 G的广度优先生成 森林 F中的一棵生成树 。定义 V 的两个子集 V1 和 V2 为 : V1 = { vi | vi ∈V且 vi在 F中相应广度优先生成树上的层 数是奇数 } ; V2 = V - V1 ,即 V2 = { vj | vj ∈ V 且 vj 在 F中相应广度 优先生成树上的层数是偶数 } 。 易知 , V1 ∪ V2 = V, V1 ∩ V2 =φ,现在证明 V1 中任意两 点间在 G中无边存在 。 设任 a, b ∈V1 ,如果 a和 b在 F中不同的树上 ,显然 a, b两 点间在 G中无边存在 。如果 a和 b在同一棵树上且在同一层 上 ,因为同层节点任何两点在 G中不邻接 ,所以 a, b两点间在
摘 要 :二部图是现代图论中一类非常重要的图 ,然而关于其判定的充要条件却很少 ,而且用算法实现它们很复 杂 ,需要指数级的时间代价 。利用图的广度优先遍历 ,提出了一个易于实现的二部图判定的充要条件 :无向图 G是二 部图当且仅当 G的广度优先生成森林中的同一层上的任意两点在 G中不邻接 。给出了该判定条件的实现算法 ,算法 的时间复杂度是 O ( n2 ) , 很好地解决了二部图的判定问题 。
Abstract: B igraph is an important graph in modern graph theory. However, there are few sufficient conditions to decide the B igraph. Moreover, it is very comp licated to imp lement them through algorithm s, which need exponential time comp lexity. Based on the breadth first search, the paper p roposed a new sufficient condition of B igraph which is easy to be imp lemented. The sufficient condition is: a necessary and sufficient condition of undirected graph G is the B igraph, which is the arbitrary two vertexes in the same level of the breadth first spanning forest of the G are not adjacent in the G. The paper put forward the new algorithm of the condition, the time comp lexity of which isO (n2 ). Therefore, the paper solves the p roblem of B igraph decision succe ssfu lly.
Key words: bipartite graph; bipartite graph decision; breadth first search
0 引言
二部图在许多科学领域有着重要的应用 ,许多问题可以 用二部图来刻画 ,例如 :“资料分配 ”、“工作安排 ”和“排课 ” 等 。二部图也可以用以计算机网络 ,用以实现分布式站点的 信息管理 。尽管二部图已经被广泛地应用起来 ,然而关于其 判定的充要条件却没有得到充分的关注和研究 。文献 [ 1 2 ]给出一个判定二部图的充要条件 ,即“无向图 G是二部图 当且仅当 G中无奇数长度的回路 ”。这个判定二部图的充要 条件看似简单 ,但实现起来却很复杂 ,在最坏情况下需要找到 图中所有回路 。由文献 [ 3 ]可知 ,找出图 G的一条 Ham ilton 回路或者所有 Ham ilton回路都是 NP完全问题 。所以找出图 G的所有回路显然是困难的 ,至少需要指数阶的时间复杂度 , 所以二部图的判定自然也就成为了一个难以解决的问题 。
18 2
计算机应用
第 29卷
B ( G) ,其中 T ( G) 是遍历图过程中历经的边的集合 ; B ( G) 是 剩余的边的集合 。显然 , T ( G) 和图 G中所有顶点一Biblioteka Baidu构成连 通图 G的极小连通子图 ,并且称由广度优先搜索得到的为广 度优先生成树 [4 ] 。
定理 1 一个无向图 G =〈V, E〉是二部图当且仅当 G中 无奇数长度的回路 [1 ] 。
for (v = 0; v < G. vexnum ; ++v) visited [ v ] = 0;
/ /初始化访问标志数组
InitQueue ( Q ) ;
/ /置空的辅助队列
for (v = 0; v < G. vexnum ; ++v)
/ / 从图的各点出发
if (! visited [ v ]) {
本文通过对图 G进行广度优先遍历 ,发现只要相应的生 成树的同一层上的任意两个节点在 G中不邻接 ,那么图 G便 是二部图 ,通过研究和论证得到了二部图判定的一个新的充 要条件 :无向图 G是二部图当且仅当 G的广度优先生成森林 中的同一层上的任意两点在 G中不邻接 。依据这个判定条 件 ,本文给出了相应的一个二部图判定的算法 ,如果 G的顶 点数是 n,那么判定算法的时间复杂度是 O ( n2 ) , 从而将二部 图判定算法的时间复杂度由原来的指数阶降到了平方阶 。所
3 二部图判定算法的实现
3. 1 算法及分析
根据定理 2去实现二部图判定的算法是简单的 ,方法也
有多种 , 其实现的主要思想是对图 G进行广度优先遍历 , 遍
历过程中将奇数层上的节点存入 V1 , 偶数层上的节点存入 V2 ,同时要判断树的同一层上的任意两个节点在 G中是否邻 接 ,如果发现某一层上存在两个点在 G中邻接 ,则算法结束 , G
相关文档
最新文档