关于图的最小覆盖算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第19卷第4期大 学 数 学
V o l
.19,№.42003年8月
COLL EGE M A TH E M A T I CS
A ug .2003
关于图的最小覆盖算法
张丽雅, 熊振兴
(通信指挥学院,武汉430010)
[摘 要]本文就数学建模课的教学过程中,在“图的方法建模”一章中,关于图的最小覆盖法提出启发式算法.用书中所给方法推出一个反例,分析了其产生错误的原因;通过对图的最小覆盖的概念的理解、结合分析图的关联矩阵的特点,给出了图的最小覆盖的启发式算法.
[关键词]图的覆盖;图的最小覆盖;关联矩阵
[中图分类号]O 15715 [文献标识码]A [文章编号]167221454(2003)0420081204
数学建模是一门新课,进入高等学校以来,发展非常迅速.对培养学生的数学素质,提高学生分析问
题、解决问题的能力有重要的作用.由高等教育出版社出版、清华大学姜启源编写的《数学模型》一书涉及知识面广、内容丰富,是便于教学,可读性强的一本好书.我们就该书“图的方法建模”一章中关于图的最小覆盖给出启发式算法,供大家参考.
1 图的最小覆盖
11图与图的关联矩阵
图论中所说的图不是平面几何意义下的图形,其图的顶点位置、边的长短曲直都可以任意选择,它所研究的重点是图G 中点与边、边与边的联接关系.因此,图论中的图G 的数学描述可以用一个有序三元组
(V ,E ,Υ)
记为
G ,
其中顶点集为V ={v 1,v 2,…,v n },边集为E ={e 1,e 2,…,e n },Υ为顶点与边之间的关联函数,有时图G 简
记为二元组(V ,E ).
计算机的发展,使图的有关信息能更直观、更方便地以矩阵的形式储存在计算机中,图的多种矩阵图1
表示法中,关联矩阵是最常用的之一.n 个结点m 条边的关联矩阵记为I =(b ij )n ×m ,其中元素
b ij =
1,若v i 与e j 有关联,
0,
否则.
例1 5个顶点7条边的图G =(V ,E )如图1所示,其关联矩阵为
A =v 1v 2v 3v 4v 5100100011001000
11001000
1
1
1
0000111 e 1e 2e 3e 4e 5e 6e 7
[收稿日期]2002205220
分析以上关联矩阵,我们会发现关联矩阵有两个特性:
①每列必有两个1,它表示与该列对应的边终止于哪两个顶点;
②每行1的个数表示与该行对应的顶点与哪些边相关联.
21图的最小覆盖
图的覆盖是研究用图的若干顶点控制所有边的问题.如在例1中,由顶点v1,v2,v3,v4可以控制所有邻边(空着顶点v5);由顶点v2,v3,v4也可以控制所有邻边(空着顶点v5,v1).不难发现,由顶点v1,v3,v4或v1,v3,v5或v2,v4,v5也都可以控制所有的邻边.称能控制图G所有边的子顶点集为图G的覆盖.图的覆盖中顶点个数最少的覆盖称为最小覆盖.如例1的子顶点集{v1,v2,v3,v4}是图的覆盖,但不是图的最小覆盖.而在图1中用两个顶点控制它们相邻的边,不能达到控制图G所有边的目的,所以三个顶点的子顶点集{v2,v3,v4}或{v1,v3,v5}或{v2,v4,v5}是图G的最小覆盖.
由以上分析可知,一个图G的最小覆盖不是唯一的,但图的最小覆盖集合中元素的个数是相同的.如上图G的最小覆盖集合元素的个数为3.
由于关联矩阵表示的是图的顶点与边之间的关系,所以图的最小覆盖问题可以通过关联矩阵求解.
31图的最小覆盖算法
《数学模型》[1]一书中给出从关联矩阵求图的最小覆盖方法如下:
①在关联矩阵A中,取恰有两个1的那一列中1所在的行,划去该行及该行中元素1所在的列,构成关联矩阵A的一个子矩阵A1,取划去的行所对应的顶点为最小覆盖集中元素;
②在子矩阵A1中重复①中过程;
③若存在i,对任意的k,有v i>v k(即对所有的j,若b kj=1]b ij=1,则v i>v k),则v i取为最小覆盖集元素,过程结束.在以上过程中划去的行所对应的顶点的集合即为最小覆盖的顶点集.
按照以上方法可以求出图G的最小覆盖(教材已给出).但是,不是每次都能求出图G的最小覆盖,以上图G的关联矩阵A为例举反例如下.
例2 按以上方法①中“取恰有两个1的那一列中1所在行”的条件,由于关联矩阵的每一列都必有两个1,则可以在A中任取一行.因此,
①在图G的关联矩阵A中,取v1行,划去v1行及其1元素所在的e1,e4列,得子矩阵A1为
A1=v2
v3
v4
v5
10100
11010
01001
00111
.
e2e3e5e6e7
②在子矩阵A1中重复①中过程;取v2行,划去v2行及其1元素所在的e2,e5列,得子矩阵A2为
A2=v3
v4
v5
110
101
011
.
e3e6e7
③在子矩阵A2中重复①中过程,取v3行,划去v3行及其1元素所在的e3,e6列,得子矩阵A3为
A3=v4
v5
1
1
.
e7
④在子矩阵A3中,存在i=4,对任意k=5(除了v4行,其它任意行只有v5行),有v4>v5(即对所有的边j=7(此时只有j=7一列),行k=5的元素b57=1]b47=1,即有v4>v5).同理,也存在v5>v4,即v4,v5两顶点都满足方法的第③条.因此,两顶点任取一个为所求集合的元素,过程结束.得到两个顶点集(v1, v2,v3,v4)和(v1,v2,v3,v5),它们是图的覆盖.但由前面分析的结论可知,这两个顶点集合都不是图G的最小覆盖.
28大 学 数 学 第19卷
2 图的最小覆盖启发式算法
分析[1]一书中给出的从关联矩阵求图的最小覆盖的方法,为了方法一般性和通用性,给出图的最小覆盖启发式算法.
11一般情况(以最大度数为偶数的点对称的奇阶图除外)对图的最小覆盖法条件进行如下修改:
①在关联矩阵A 中取1元素最多的行,划去该行及该行中元素1所在的列,构成关联矩阵A 的一个子矩阵A 1,取划去的行所对应的顶点为最小覆盖集中元素.
②,③条件不变.
根据图的最小覆盖是通过图中最少的顶点控制全部相邻边的概念,做这样修改就是要抓住关联矩阵的两个特性.关联矩阵中每行1的个数表示该行对应的顶点与哪些边相关联,也就是说,关联矩阵的行中1元素越多,与该行对应的顶点相联的边越多.由最小覆盖的概念知,要想用最少的顶点控制所有的边,这些“最少的顶点”的每一个点应关联的边越多,最小覆盖集中顶点才能用的越少.所以,当图不是很特殊(图G 不是以最大度数为偶数点对称的奇阶图)时,首先把1元素最多的行抓住,即把能控制最多的边的顶点作为最小覆盖集合中的元素,剩下再在不能被控制的边中的顶点中重复以上过程,直至所有的边都被控制(即划去的行使所有的列消失).此时,每次划去的行所对应的顶点的集合就是给定图的最小覆盖.
按照修改后的求图的最小覆盖方法,对例1图G 求最小覆盖如下(图G 的最大点度△(G )≠偶数):1)对图G 求关联矩阵A ,
A =v 1v 2v 3v 4v 5100100011001000
1100100
0110010
000111
e 1e 2e 3e 4e 5e 6e 7
2)从A 可知,1元素最多的行为v 3,v 4,v 5.在3行、4行、5行中任选一行,如选取v 3,划去v 3行及其1元
素所在的e 2,e 3,e 6列,得子矩阵A 1为
A 1=
v 1v 2v 4v 51
10010100
1010
011
. e 1e 4e 5e 7
3)从A 1可知,每一行的1元素个数都一样多.可以任选一行,如选取v 5行,划去v 5行及其1元素所在
的e 5,e 7列,得子矩阵A 2为
A 2=v 1v 2v 4111
001
.
e 1e 4
4)从A 2可知,1元素最多的行为v 1.如果选取了v 1,所有的列将被划去,这表明所有的边将被控制(因为列代表边).此时选取v 1为最小覆盖集合中元素,过程结束.
以上过程得到顶点集为(v 1,v 3,v 5)为图G 的最小覆盖.这与我们在上面分析的结果及正例的结果都是一致的.
若在A 中1元素最多的行为v 3,v 4,v 5.选取了v 4,划去v 4行及其1元素所在的列后,得子矩阵A 1中1元素最多的行为v 2;划去v 2行及其1元素所在的列后,得子矩阵A 2中只有一列;元素为1的行为v 3,v 5.在其中任选一行,可划去所有的列,使所有的边得到控制,过程结束.此时得到两组顶点集(v 2,v 4,v 3)和(v 2,
v 4,v 5)是图G 的最小覆盖
.3
8第4期 张丽雅,等:关于图的最小覆盖算法
同样地,若在A 中1元素最多的行为v 3,v 4,v 5.选取了v 5,划去v 5行及其1元素所在的列后,得子矩阵A 1中有v 1,v 2,v 3,v 4四行,每一行1元素个数都一样多可任选一行;如选取v 2行,划去v 2行及其1元素所在的列后,得子矩阵A 2中有两列,两列中1元素最多的行为v 4;划去v 4行所有的列将消失,使所有的边得到控制,过程结束.此时得到一组顶点集(v 2,v 4,v 5)是图G 的最小覆盖.
以上方法得到的图G 的任何一个最小覆盖集合的元素个数都是3,这与前面分析的结果一致.21特殊情况
当图G 是以最大度数为偶数的点对称的奇阶图时,以上方法的使用有一定的变化.如图2
.
图2
图G 奇数阶 v =9,最大点度∃(G )=4,以最大度数点v 5对称.这时,仍可用上面的方法,利用图的对称性,先对半图找最小覆盖,具体方法如下:
①取以图G 的最大度数(偶数)点为对称点,做图G 任一半图的关联矩阵;②按照“11一般情况”中的方法求出半图的最小覆盖;③利用对称性,找出半图最小覆盖点的对称点;
④由半图的最小覆盖点及其对称点组成的集合为图G 的最小覆盖.在图2中:
1)求图G 半图的关联矩阵如下:
A =v 1v 2v 3v 4v 510000110010
11000
01100
0011
. e 1e 2e 3e 4e 9
2)用“一般情况”的方法,从关联矩阵A 可知,1元素最多的行为v 2行.取v 2,划去v 2行及其1元素所
在的e 1,e 2,e 9列,得子矩阵A 1为
A 1=
v 1v 3v 4v 50
0101
101
. e 3e 4
从子矩阵A 1中,找1元素最多的行为v 4行.取v 4,划去v 4行及其1元素所在的e 3,e 4列,过程结束.此时,半图的最小覆盖为{v 2,v 4}.
3)利用对称性,找出半图最小覆盖{v 2,v 4}的对称点为{v 6,v 8}.
4)由半图的最小覆盖点及其对称点组成的集合为{v 2,v 4,v 6,v 8}是图G 的最小覆盖.
[参 考 文 献]
[1] 姜启源.数学模型(第二版)[M ].北京:高等教育出版社,1992.[2] 图论及其应用[M ].合肥:中国科技大学出版社,1998.
[3] 洪帆.离散数学(第二版)[M ].武汉:华中理工大学出版社,1994.
48大 学 数 学 第19卷。