CN110489804A - 一种单位圆盘图上的最大独立集近似求解方法 - Google Patents

一种单位圆盘图上的最大独立集近似求解方法 Download PDF

Info

Publication number
CN110489804A
CN110489804A CN201910659827.6A CN201910659827A CN110489804A CN 110489804 A CN110489804 A CN 110489804A CN 201910659827 A CN201910659827 A CN 201910659827A CN 110489804 A CN110489804 A CN 110489804A
Authority
CN
China
Prior art keywords
vertex
opt
solution
unit circle
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910659827.6A
Other languages
English (en)
Inventor
宋洪涛
韩启龙
张立国
张可佳
卢丹
崔寰宇
刘鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Engineering University
Original Assignee
Harbin Engineering University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Engineering University filed Critical Harbin Engineering University
Priority to CN201910659827.6A priority Critical patent/CN110489804A/zh
Publication of CN110489804A publication Critical patent/CN110489804A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种单位圆盘图上的最大独立集近似求解方法,包括以下步骤:步骤1:利用动态规划方法设计一种单位圆盘顶点的相邻顶点集诱导子图的最大顶点独立集的最优解求解方法,并给出任意两顶点相邻顶点集并集诱导子图的最大顶点独立集的最优解;步骤2:针对一般的单位圆盘图,首先计算顶点支配独立集;之后对顶点支配独立集中成员进行单独检查,判断结果是否可优化,得到中间解;最后对中间解中成员进行联合检查,判断结果是否可优化,得到最终解。本发明以O(Δ2n3)的计算时间复杂度得到近似比为1.5的近似解,其中Δ为顶点最大度,相比单位圆盘图上最大独立集求解问题的现有近似算法,本发明提高了近似比,具有更高的效率。

Description

一种单位圆盘图上的最大独立集近似求解方法
技术领域
本发明属于图计算理论相关技术,具体涉及一种单位圆盘图上的最大独立集近似求解方法。
背景技术
UDG,即单位圆盘图,是二维平面内一组单位圆盘形成的相交图,它在建模无线传感器网络、移动自组织网络等起着至关重要的作用。在这些网络中,每个节点依照通信协议都拥有一定范围的通信距离,任意两个节点只能当彼此进入对方可通信距离时才可以进行通信。如果所有节点都具有相同的通信距离,那么该网络可以建模为一个UDG。
对于平面内的单位圆盘集合D={D1,D2,…,Dn},其中Di的直径是1,Di的中心是顶点vi,在本发明所有对于顶点的描述中均表示单位圆盘的中心点。在UDG G=(V,E)上,所有圆盘的中心构成顶点集V。如果任意两个顶点vi和vj的欧式距离d(vi,vj)≤1,那么存在边(vi,vj)∈E。如果存在集合其中任意两顶点vi,vj∈S(i≠j)满足d(vi,vj)>1,那么S是顶点集V中的一个独立集。如果|S|表示集合S中成员的总数量,并且Sopt使得|S|取得最大值,那么Sopt是一个最大独立集。对于任意的两个顶点vi,vj∈V(i≠j),如果d(vi,vj)≤1,那么vi和vj被称为相邻顶点,否则它们被称为不相邻顶点。
UDG相关研究问题已经被广泛研究,如最大独立集问题,图着色问题,最小支配问题等等,所有的这些问题已经被证明是NP难的。使用多项式时间解决UDG上的最优化问题目前依然有着很高的时间复杂度。当UDG被定义在一个宽度为k的窄条里面时,T.Matsui提出一种能够在时间复杂度下得到最大独立集。同时,针对于一般的UDG,他还提出一种比为1-1/r的算法,时间复杂度为其中r是一个正整数。针对一般的UDG,M.V.Marathe给出了比为3的最大独立集算法,其时间复杂度是O(n2)。另外,G.K.Das在O(n3)时间复杂度下,给出一种比为2的求解算法。之后,G.K.Das还提出一种比为2.16的算法,其时间复杂度是O(nlog2n),并且将2算法的时间复杂度降低到O(n2logn)。最近,SubhasC.Nandy在当所有单位圆盘都相交于一条水平线的条件下,求得到了最大独立集的最优解,算法时间复杂度是O(n2),并且针对一般的UDG,在该时间复杂度下给出了比为2的解。
发明内容
本发明的目的是提供一种单位圆盘图上的最大独立集近似求解方法。
一种单位圆盘图上的最大独立集近似求解方法,该方法包括以下步骤:
步骤1:若顶点v的相邻顶点集为V={v1,v2…vn},将x轴穿过顶点,V中的所有顶点都在宽度为2的窄条内;
步骤2:将步骤1中所述窄条等分成a区、b区、c区和d区四个区域,从而将V集合进行划分,将不同区域中的顶点按x坐标进行排序,得到V中顶点在不同区域中的子集;
步骤3:对于V中任意一个顶点vi,定义不同区域内在vi左侧且与vi不相邻的最右侧的顶点;
步骤4:定义S(ka,kb,kc,kd)是顶点集,其中 是定点集S(ka,kb,kc,kd)中在对应区域中的最右侧的顶点;
步骤5:定义求解S(ka,kb,kc,kd)中顶点诱导子图的最大顶点独立集为一个子问题,其中最优解为Iopt(S),最优解成员数量为Lopt(S);
步骤6:构造递归函数。
步骤3所述的定义不同区域内在vi左侧且与vi不相邻的最右侧的顶点,包括以下步骤:
步骤3.1:将V中的顶点进行编号,另顶点支配独立集S初始值为集合{v1};
步骤3.2:对V-S中的顶点与S中的顶点进行依次判断,若当前顶点在S中不存在临点,那么将该顶点添加到S中,直至判断完所有点。
步骤4所述的定义求解S(ka,kb,kc,kd)中顶点诱导子图的最大顶点独立集包括以下步骤:
步骤4.1:计算顶点独立集;
步骤4.2:成员单独检查,判断结果是否能优化,若能继续优化则继续进行步骤2,若不能优化则得到中间解并进入步骤3;
步骤4.3:成员联合检查,判断结果是否能优化,若能继续优化则继续进行步骤3,若不能优化则得到最终解。
步骤1.2所述的成员单独检查包括以下步骤:
步骤4.2.1:初始化定义循环变量iteration_flag,1表示得到S的优化结果,即S的成员个数增加;
步骤4.2.2:进入循环体后令iteration_flag为0,对S中的顶点依次检查是否是A类顶点、B类顶点,若所有顶点都不是A类顶点、B类顶点,则结束检查,得到中间解S;若S中存在A类顶点、B类顶点,那么必然得到S的优化结果,将iteration_flag置1,并结束当前检查,对得到的优化结果重新进行检查,最终得到中间解S;
步骤4.2.3:在检查过程中,若当前检查顶点是A类顶点,那么将vi从S中移除,并将Iopt(Vi’)加入到S中;若当前检查顶点是B类顶点,那么将F_AS(Vi)从S中移除,并将Iopt(Vi)加入到S中;
其中,Vi=F_S(vi)表示计算由顶点vi的相邻顶点构成的集合;V’i=F_IS(vi)表示计算由顶点vi的相邻顶点中不与当前解集合S中的除顶点vi以外的顶点相邻的顶点构成的集合;Sk是S的子集,Sk=F_AS(Vi)表示计算由在集合S中与Vi中的顶点相邻的顶点所构成的集合;若Lopt(Vi’)≥2,称vi是集合S中的A类顶点;若Lopt(Vi)>F_AS(Vi),称vi是集合S中的B类顶点。
步骤1.3所述的成员联合检查包括:对于S中任意的两个顶点vi和vj,定义Vij=Vi∪Vj和V’ij=V’i∪V’j,包括以下步骤:
步骤4.3.1:若Lopt(V’ij)>2,解S将被优化,将vi和vj从解S中移除,并添加到S在V中的完全补集Sc中,同时将Sc中的Iopt(V’ij)移除,并添加到解S中,即S和Sc的一个交换;
步骤4.3.2:若Lopt(Vij)>F_AS(Vij),解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
步骤4.3.3:若Lopt(V’ij)=2,假设S将被优化,在S和Sc中将{vi,vj}和Iopt(V’ij)进行交换;
步骤4.3.4:若Lopt(Vij)=F_AS(Vij),假设解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
步骤4.3.5:若Lopt(V’ij)<2,Lopt(Vij)<F_AS(Vij),那么解S不能通过联合检查进行优化。
若步骤4.3.3和步骤4.3.4的条件同时满足时,在S和Sc之间进行交换后,选取S中除Iopt(V’ij)、Iopt(Vij)的两个顶点再次进行联合检查。
若所有的顶点都检查完毕,且没有得到优化的解S,那么S是最终解,若解S被优化,那么对优化后的解S进行循环检查。在每一次循环检查开始,对当前解中的顶点进行重新编号,用来记录被检查过的点。
步骤6所述的递归函数表示为下式:
Lopt(S(k1,k2,k3,k4))=Lopt(S(RIa(vk),RIb(vk),RIc(vk),RId(vk)))+1,vk∈Iopt(S(k1,k2,k3,k4))
其中,vk在a区、b区、c区、d区中其中一个时,μ1,μ2,μ3,μ4等于1,否则等于0,RIa(vi)是在a区中在vi左侧且与vi不相邻的最右侧的顶点,RIb(vi)是在b区中在vi左侧且与vi不相邻的最右侧的顶点,RIc(vi)是在c区中在vi左侧且与vi不相邻的最右侧的顶点,RId(vi)是在d区中在vi左侧且与vi不相邻的最右侧的顶点,。
本发明的有益效果是:针对UDG上的最大独立集求解问题,与现有研究算法相比,本发明具有本质上的创新和改进,能够在O(Δ2n3)的时间复杂度下给出比为1.5的解,其中Δ为最大度,本发明提高了比,具有更高的效率。
附图说明
图1是顶点集V的划分示意图。
图2是UDG上最大独立集近似求解方法流程。
图3是虚线形成的边界示意图。
图4是边界外顶点示意图。
图5是边界内顶点示意图。
图6是情况A边界形成的两个多边形无相同顶点示意图。
图7是情况B1边界形成的两个多边形有相同顶点示意图。
图8是情况B2边界形成的两个多边形有相同顶点示意图。
图9为计算顶点支配独立集的伪代码图。
图10为成员单独检查的伪代码图。
图11为成员联合检查的伪代码图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明克服现有技术的不足,提供一种比为1.5的近似求解方法。本发明基于引入的顶点支配独立集优化策略,对解进行循环优化,直到不能优化为止,以达到提高解精确程度的目的。是通过以下技术方案实现的:
利用动态规划方法设计一种单位圆盘顶点的相邻顶点集诱导子图的最大顶点独立集的最优解近似求解方法,并给出任意两顶点相邻顶点集并集诱导子图的最大顶点独立集的最优解;
动态规划方法设计一种单位圆盘顶点的相邻顶点集诱导子图的最大顶点独立集的最优解近似求解方法,并给出任意两顶点相邻顶点集并集诱导子图的最大顶点独立集的最优解;针对一般的单位圆盘图,首先计算顶点支配独立集;之后对顶点支配独立集中成员进行单独检查,判断结果是否可优化,得到中间解;最后对中间解中成员进行联合检查,判断结果是否可优化,得到最终解。
(1)如果顶点v的相邻顶点集为V={v1,v2…vn},将x轴穿过顶点,V中的所有顶点都在宽度为2的窄条内;
(2)将步骤1中所述窄条等分成a区、b区、c区和d区四个区域,从而将V集合进行划分,将不同区域中的顶点按x坐标进行排序,得到V中顶点在不同区域中的子集;
(3)对于V中任意一个顶点vi,定义不同区域内在vi左侧且与vi不相邻的最右侧的顶点;
(4)定义S(ka,kb,kc,kd)是顶点集,其中 是集合S(ka,kb,kc,kd)中在对应区域中的最右侧的顶点;
(5)定义求解S(ka,kb,kc,kd)中顶点诱导子图的最大顶点独立集为一个子问题,其中最优解为Iopt(S),最优解成员数量为Lopt(S);
(6)构造递归函数
Lopt(S(k1,k2,k3,k4))=Lopt(S(RIa(vk),RIb(vk),RIc(vk),RId(vk)))+1 (vk∈Iopt(S(k1,k2,k3,k4)));
其中:vk在a区、b区、c区或d区中时,μ1,μ2,μ3或μ4分别等于1,否则等于0。
将x轴穿过两个顶点,使得两顶点相邻顶点集并集均在宽度为2的窄条内,近似求解方法与上述的其它特征相同。存在多个顶点具有相同的x坐标时,vk选取为具有最大y坐标的顶点,并且在相同x坐标的顶点中的计算次序对算法结果无影响。
基于在原始顶点集合中取出和当前解不相邻顶点的策略,包含以下步骤:
(1)将V中的顶点进行编号,另顶点支配独立集S初始值为集合{v1};
(2)对V-S中的顶点与S中的顶点进行依次判断,如果当前顶点在S中不存在临点,那么将该顶点添加到S中,直至判断完所有点。
包含定义三个求解函数如下:
(1)对于任意S中的顶点vi,Vi=F_S(vi)表示计算由顶点vi的相邻顶点构成的集合;
(2)对于任意S中的顶点vi,V’i=F_IS(vi)表示计算由顶点vi的相邻顶点中不与当前解集合S中的除顶点vi以外的顶点相邻的顶点构成的集合;
(3)Sk是S的子集,Sk=F_AS(Vi)表示计算由在集合S中与Vi中的顶点相邻的顶点所构成的集合。
对于集合S中的顶点进行如下分类:
(1)如果Lopt(Vi’)≥2,称vi是集合S中的A类顶点;
(2)如果Lopt(Vi)>F_AS(Vi),称vi是集合S中的B类顶点。
成员单独检查:
(1)定义循环变量iteration_flag,1表示得到S的优化结果,即S的成员个数增加;
(2)进入循环体后另iteration_flag为0,对S中的顶点依次检查是否是A类顶点或B类顶点。如果所有顶点都不是A类顶点或B类顶点,则结束检查,得到中间解S。如果S中存在A类顶点或B类顶点,那么必然可得到S的优化结果,将iteration_flag置1,并结束当前检查,对得到的优化结果重新进行检查,最终得到中间解S;
(3)在检查过程中,如果当前检查顶点是A类顶点,那么将vi从S中移除,并将Iopt(Vi’)加入到S中;如果当前检查顶点是B类顶点,那么将F_AS(Vi)从S中移除,并将Iopt(Vi)加入到S中。
对于S中任意的两个顶点vi和vj,定义Vij=Vi∪Vj和V’ij=V’i∪V’j,并包含如下5种情况进行实施:
(1)如果Lopt(V’ij)>2,解S将被优化,将vi和vj从解S中移除,并添加到S在V中的完全补集Sc中,同时将Sc中的Iopt(V’ij)移除,并添加到解S中,本发明中将其描述为S和Sc的一个交换;
(2)如果Lopt(Vij)>F_AS(Vij),解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
(3)如果Lopt(V’ij)=2,假设S将被优化,在S和Sc中将{vi,vj}和Iopt(V’ij)进行交换;
(4)如果Lopt(Vij)=F_AS(Vij),假设解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
(5)如果Lopt(V’ij)<2,Lopt(Vij)<F_AS(Vij),那么解S不能通过联合检查进行优化。
如果上述步骤(3)和(4)条件满足时,在S和Sc之间进行交换后,选取S中除Iopt(V’ij)或Iopt(Vij)的两个顶点再次进行联合检查。如果所有的顶点都检查完毕,且没有得到优化的解S,那么S是最终解,如果解S被优化,那么对优化后的解S进行循环检查。在每一次循环检查开始,对当前解中的顶点进行重新编号,用来记录被检查过的点。
1.单位圆盘顶点的相邻顶点集诱导子图最大顶点独立集最优解近似求解方法
该方法包含以下步骤:
(1)如图1所示,对于任意顶点v,相邻顶点集为V={v1,v2…vn}中的任意顶点vi均在平面坐标系中直线Lup和Ldown之间的区域内,其中x轴穿过顶点v,且Lup和Ldown平行于x轴,宽度为2.虚线Lab,Lbc和Lcd将Lup和Ldown之间的区域平均分成四部分,分别为a区、b区、c区、d区。如果顶点在虚线上,在本发明中假设顶点在该虚线上方的区域。因此,顶点集V被划分为四个顶点集的并集,分别为Va,Vb,Vc和Vd
(2)将Va中的顶点依据其x坐标升序排列,得到集合表示Va中最左侧的n1个顶点集合,同理得到Vb(n2),Vc(n3)和Vd(n4)。
(3)在Va,Vb,Vc和Vd中分别添加一个顶点其中每个顶点都是对应区域内最左侧的顶点,并且这些顶点与其它所有顶点均不相邻。
(4)对于V中任意一个顶点vi,定义RIa(vi)是在a区中在vi左侧且与vi不相邻的最右侧的顶点,同理得到RIb(vi)、RIc(vi)和RId(vi)。
(5)另S(ka,kb,kc,kd)是顶点集,其中 是集合S(ka,kb,kc,kd)中在a区、b区、c区、d区中的最右侧的顶点。
(6)定义求解S(ka,kb,kc,kd)中顶点诱导子图的最大顶点独立集为一个子问题,其中最优解为Iopt(S),最优解成员数量为Lopt(S)。
(7)构造递归函数:
Lopt(S(k1,k2,k3,k4))=Lopt(S(RIa(vk),RIb(vk),RIc(vk),RId(vk)))+1 (vk∈Iopt(S(k1,k2,k3,k4)));
其中:vk在a区、b区、c区或d区中时,μ1,μ2,μ3或μ4分别等于1,否则等于0。
在上述描述中,由于集合V中的顶点都在宽度为2的窄条内,那么集合V中最多有两个互不相邻的顶点可能具有相同的x坐标。假设存在,如果其中一个顶点在最优集中,另外一个必然是该最优解的不相邻顶点中x坐标最大的,所以vk在这些相同x坐标的顶点中的选取次序对算法结果无影响。本发明中,如果存在多个顶点具有相同的x坐标,vk选择y坐标最大的顶点。如果vk在最优解中,那么最优解为vk和集合S’诱导子图上最优解的并集,这里S’由上述四个区域中vk左侧的不相邻顶点组成。如果vk不在最优解中,那么最优解为待求解集合去掉vk所得到顶点集合诱导子图上的最优解。
对于任意两个顶点,如果集合V中的顶点由这两个顶点的邻居的并集构成,通过与步骤(1)类似的方式,另x轴穿过这两个顶点,那么V中的顶点同样在Lup和Ldown之间,所以上述方法可以求解任意两顶点相邻顶点集并集诱导子图上的最大顶点独立集的最优解。
由于在步骤(3)中,我们增加了四个顶点,最优解的计算结果应该去除掉这些顶点。
用时间复杂度来评估本发明该步骤的方法,对于任意一个vi得到它们左侧在不同区域的不相邻顶点中x坐标最大的顶点的时间复杂度为O(n)。对于所有的vi,时间复杂度为O(n2)。在递归调用过程中,时间复杂度为O(1),所以上述算法时间复杂度为O(n2)。
2.一般UDG上最大独立集近似求解方法
对于一个UDG上的顶点集合V={v1,v2…vn},假设顶点最大独立集和成员数量分别是Iopt(V)和Lopt(V)。对于任意vi∈V,其邻居集合为如果|Vi|=0,那么称vi为孤立的点,同时vi一定在Iopt(V)中。
图2给出了本发明中一般UDG上顶点最大独立集近似求解方法流程:
1.计算顶点支配独立集(201)
2.成员单独检查,判断结果是否可优化,如果可以,那么重新进行循环检查,如果不可以,得到中间解(202)
3.成员联合检查,判断结果是否可优化,如果可以,那么重新进行循环检查,如果不可以,得到最终解(203)
在本发明中,为使描述简洁直观,201中求解方法以算法语句体现,其伪代码如图9所示。
201中所述的计算顶点支配独立集基于在原始顶点集合中取出与当前解不相邻顶点的策略,该方法具体包含如下步骤:
(1)将V中的顶点进行编号,另顶点支配独立集S初始值为集合{v1};
(2)对V-S中的顶点与S中的顶点进行依次判断,如果当前顶点在S中不存在临点,那么将该顶点添加到S中,直至判断完所有点。
为了清晰的描述本发明的具体实施方式,在本发明中定义如下三个求解函数:
(1)对于任意S中的顶点vi,Vi=F_S(vi)表示计算由顶点vi的相邻顶点构成的集合;
(2)对于任意S中的顶点vi,V’i=F_IS(vi)表示计算由顶点vi的相邻顶点中不与当前解集合S中的除顶点vi以外的顶点相邻的顶点构成的集合;
(3)Sk是S的子集,Sk=F_AS(Vi)表示计算由在集合S中与Vi中的顶点相邻的顶点所构成的集合。
根据上面的函数定义,本发明中对于集合S中的顶点进行了如下说明:
(1)如果Lopt(Vi’)≥2,称vi是集合S中的A类顶点;
(2)如果Lopt(Vi)>F_AS(Vi),称vi是集合S中的B类顶点。
本发明202中所述的成员单独检查及优化步骤中将对A类顶点和B类顶点分别进行检查,以算法语句描述如图10所示。
在本发明所涉及202的具体实现步骤中,S为201中所述的顶点支配独立集,具体描述如下:
(1)定义循环变量iteration_flag,1表示得到S的优化结果,即S的成员个数增加;
(2)进入循环体后另iteration_flag为0,对S中的顶点依次检查是否是A类顶点或B类顶点。如果所有顶点都不是A类顶点或B类顶点,则结束检查,得到中间解S。如果S中存在A类顶点或B类顶点,那么必然可得到S的优化结果,将iteration_flag置1,并结束当前检查,对得到的优化结果重新进行检查,最终得到中间解S;
(3)在检查过程中,如果当前检查顶点是A类顶点,那么将vi从S中移除,并将Iopt(Vi’)加入到S中;如果当前检查顶点是B类顶点,那么将F_AS(Vi)从S中移除,并将Iopt(Vi)加入到S中。
在本发明203中,为了更加清晰的描述该步骤的具体实施方式,对于S中任意的两个顶点vi和vj,定义Vij=Vi∪Vj和V’ij=V’i∪V’j,并按照如下5种情况进行实施:
(1)如果Lopt(V’ij)>2,解S将被优化,将vi和vj从解S中移除,并添加到S在V中的完全补集Sc中,同时将Sc中的Iopt(V’ij)移除,并添加到解S中,本发明中将其描述为S和Sc的一个交换;
(2)如果Lopt(Vij)>F_AS(Vij),解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
(3)如果Lopt(V’ij)=2,假设S将被优化,在S和Sc中将{vi,vj}和Iopt(V’ij)进行交换;
(4)如果Lopt(Vij)=F_AS(Vij),假设解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
(5)如果Lopt(V’ij)<2,Lopt(Vij)<F_AS(Vij),那么解S不能通过联合检查进行优化。
在本发明203中所述的成员联合检查过程中,如果上述5种实施情况中(3)或(4)满足,在S和Sc之间进行交换后,选取S中除Iopt(V’ij)或Iopt(Vij)的两个顶点再次进行联合检查。
如果所有的顶点都检查完毕,且没有得到优化的解S,那么S是最终解,如果解S被优化,类似于202中的循环检查方式,进行循环检查。
在本发明203中所述的检查过程中,在每一次循环检查开始,对当前解中的顶点进行编号,用来记录被检查过的顶点。
203中成员检查方法以算法语句描述如图11所示。
针对UDG上顶点最大独立集问题,本发明给出1.5比的解。假设V={v1,v2…vn}最优解为Vopt={v1,v2…vp},本发明的解为S={s1,s2…sm},并且S≠Vopt。本发明中进行如下分析:
(1)如果S是Vopt的子集,那么Vopt中至少存在一个顶点与S中的所有顶点都不相邻,因为S是一个支配集,所以S不是Vopt的子集;
(2)另Q=Vopt∩S,V'opt=Vopt-Q,S'=S-Q,假设顶点集合V1包含Q中的所有顶点和它们的邻居,V中其它顶点包含在顶点集合V2中,那么在诱导子图G[V2]上最优解和本发明的解分别是V'opt和S',本发明只需要分析在G[V2]上S'相对于V'opt的比;
(3)本发明的目的是计算得到一个不能被发明中所涉及的算法优化的解。假设V3=V'opt∪S',如果执行本发明的算法后解S'可以在G[V3]上被优化,那么由于并且V'opt是G[V2]上的最优解,S'也可以在G[V2]上被优化。类似的,如果S'在G[V2]上不能被优化,那么在G[V3]上S'也不能被优化。在G[V2]上,如果本发明的比ρ=|V'opt|/|S'|,那么在G[V3]上执行本发明的算法的比ρ'≤ρ,下面我们在G[V3]上分析本发明的比;
(4)假设G[V3]有多个连通分量,那么我们只需要在其中一个连通分量上讨论本发明的比,这里假设G[V3]是连通的。
在G[V3]上执行本发明的算法后S'不能被优化。假设|S’|=m’,最优解|V’opt|=n’,那么ρ=m'/n'<1.5。另V=V3,在本发明中进行如下分析:
另V=V3=Vopt∪S,Vopt∩S=Φ,其中Vopt是最优解,且|S|=m,|Vopt|=n,n>m,S是执行本发明的算法得到的解。根据在本发明202及203中的描述,假设如果n/m>ρ',S可以被直接优化或者在S和Sc之间存在一个交换。如果S不能被直接优化,并且存在一个涉及到S中k个顶点的交换处理,由于(n-k)/(m-k)>ρ',那么可以确定S可以被直接优化,或者存在另一个交换处理,最后S一定可以被优化。为了分析本发明的比,只需要分析在执行本发明的算法时,S不能被直接优化且不存在交换处理时n/m的最大值。
由于顶点集V的诱导子图是连通的,所以对S中的任意一个顶点都能够得到S中的另外一个顶点,使得它们在Vopt中有至少一个邻居。对于任意的S中的两个顶点如果可能存在一个共同的邻居,假设它们之间有一条虚线(见图3),那么我们定义一个边界,满足下面的性质:
(1)如果边界形成一个多边形,那么在S中没有顶点在该边界外,除非这个顶点在边界上或者在其它的多边形内;
(2)如果顶点不在任何一个多边形上或者内部,那么这个顶点在边界上。
在本发明中,一个顶点在边界外表示这个顶点既不在边界上也不在边界形成的任意一个多边形内。为了得到n/m的最大值,假设有n1个S中的顶点在边界上,讨论在Vopt中最多有多少个顶点。
首先,考虑当边界只是一个多边形。
对于与n1个S中边界上的顶点,任意两个之间在Vopt中只能有一个共同的邻居在边界外,可知最多有m1=n1+1个。图4中,如果仅仅vx存在,那么在执行本发明的算法时可能存在一个涉及s4的交换。如果vy也存在,当联合检查s4和s6时,必然存在一个交换处理或者可以直接优化S。
假设Vopt中在边界外的顶点是最多的,如果在Vopt中且在边界内存在一个顶点,那么它在S中必然存在一个邻点。对于该n1个边界上的点,这里讨论最多有多少个Vopt中的邻居在边界内。对于一个N多边形,其内角和为(N-2)π。如果Vopt中有一个顶点在边界内,那么它必然占据一定的内角。如果存在一个如图4所示的在边界外的顶点v2,那么它也同样也占据一定的内角。当Vopt中所有边界外的顶点都不占据任何内角时,在边界内可能有最多的顶点在Vopt中。所以,我们假设Vopt中所有在边界外的顶点都不占据任何内角。这样,最多可能有m1=n1个Vopt中的顶点在边界外。
对于任意一个Vopt中的顶点,如果在边界内,那么它至少占据π/3内角,同时,对于任意两个Vopt中在边界内的顶点,如果它们是S中两个边界上具有共同邻居的顶点的邻居,那么它们占据π内角。所以在边界内,Vopt中最多有m2=2n1-4个顶点是边界上S中顶点的邻居。
如图5所示,对任意一个S中边界上的顶点si,如果vi存在,那么必然存在S中的一个顶点sk是vi除了si的邻居,否则在执行本发明的算法时,S可以被直接优化,或者存在一个交换处理。类似的,对于vi,vj同时存在,那么sk,sm必然存在。也就是说,对于在一个连续边界上的S中的k个顶点,如果在边界内有p个邻居在Vopt中,那么在边界内至少有p个顶点在S中。考虑特殊的情况,当边界分为两个部分都包含n’1/2(n’1<n1)个S中的顶点。对于每n’1/2个顶点,在边界内最多有n’1个邻居。如果这两部分边界上顶点的邻居在S中具有相同的n’1个邻居,此时在边界内S中顶点数量最少。那么边界内Vopt中2n1-4个顶点至少在边界内存在n1-2个S中的邻居。所以,当边界只是一个多边形的时候n/m<(3n1-4)/(2n1-2)<1.5。
其次,对于任意两个边界形成的多边形,存在以下情况:
情况A:在两个多边形上没有S中相同的顶点;(见图6)
情况B:在两个多边形上有S中相同的顶点;
情况B1:两个多边形在S中有一个相同顶点(见图7);
情况B2:两个多边形在S中有两个相同顶点(见图8);
情况B3:两个多边形在S中有超过两个的相同顶点。
对于情况A中的两个多边形,Vopt中在边界外可能存在一个顶点vi是两个多边形上S中在边界上的两个顶点si,sj的共同邻居。假设有k个多边形,那么类似vi的顶点最多有k-1个,所以n/m<[(3n1-4)+1]/(2n1-2)=1.5。
对于情况B1中的两个多边形,如果vi1是两个多边形共同顶点si1的邻居,那么由于∠si4si1si5<60°,si4和si5可能有一个相同的邻居,这种情况和情况A是等价的。
对于情况B2中的两个多边形,形成一个新的边界。假设新的边界上有n1个S中的顶点,两个多边形边界上分别包含N1和N2个S中的顶点,M1和M2是两个多边形边界内Vopt中的顶点。那么m<2n1-4,M1<2N1-4,M2<2N2-4,所以n/m<(3n1-4)/(n1+(2N1-4)/2+(2N2-4)/2))<1.5。
对于情况B3的两个多边形,它们形成一个新的边界,该情况与边界仅是一个多边形是等价的。
最后,如果的顶点在边界上且不在任何一个多边形上的数量为n2,那么在Vopt中最多存在n2-1个顶点,它们是S中这n2个顶点的邻居,并且它们不是边界形成的多边形上S中的顶点的邻居。
所以本发明可以给出比为1.5的解。
考虑n个顶点的诱导子图,其最大度为Δ。在本发明的循环检查过程中,假设总共循环次数为τ,那么它是一个小于n的限定值。在201所述的步骤中,其时间复杂度为O(n2),在202所述的步骤中,时间复杂度为O(Δ2n2),在203所述的步骤中,时间复杂度为O(Δ2n3),所以本发明的时间复杂度为O(Δ2n3)。
本发明并不限于上文描述的实施方式。以上对具体实施方式的描述旨在说明本发明的技术方案,上述的具体实施方式仅仅是示意性的,并不是限制性的。在不脱离本发明宗旨所保护的范围情况下,本领域的普通技术人员在本发明的启示下还可做出很多形式的具体变换,这些均属于本发明的保护范围之内。
本发明公开了一种单位圆盘图上的最大独立集近似求解方法,包括以下步骤:步骤1:利用动态规划方法设计一种单位圆盘顶点的相邻顶点集诱导子图的最大顶点独立集的最优解近似求解方法,并给出任意两顶点相邻顶点集并集诱导子图的最大顶点独立集的最优解;步骤2:针对一般的单位圆盘图,首先计算顶点支配独立集;之后对顶点支配独立集中成员进行单独检查,判断结果是否可优化,得到中间解;最后对中间解中成员进行联合检查,判断结果是否可优化,得到最终解。本发明以O(Δ2n3)的计算时间复杂度得到比为1.5的解,其中Δ为顶点最大度,相比单位圆盘图上最大独立集求解问题的现有算法,本发明提高了比,具有更高的效率。

Claims (9)

1.一种单位圆盘图上的最大独立集近似求解方法,其特征在于,该方法包括以下步骤:
步骤1:若顶点v的相邻顶点集为V={v1,v2…vn},将x轴穿过顶点,V中的所有顶点都在宽度为2的窄条内;
步骤2:将步骤1中所述窄条等分成a区、b区、c区和d区四个区域,从而将V集合进行划分,将不同区域中的顶点按x坐标进行排序,得到V中顶点在不同区域中的子集;
步骤3:对于V中任意一个顶点vi,定义不同区域内在vi左侧且与vi不相邻的最右侧的顶点;
步骤4:定义S(ka,kb,kc,kd)是顶点集,其中0≤ka≤vka;0≤kb≤vkb;0≤kc≤vkc;0≤kd≤vkb;vka,vkb,vkc和vkd是定点集S(ka,kb,kc,kd)中在对应区域中的最右侧的顶点;
步骤5:定义求解S(ka,kb,kc,kd)中顶点诱导子图的最大顶点独立集为一个子问题,其中最优解为Iopt(S),最优解成员数量为Lopt(S);
步骤6:构造递归函数。
2.根据权利要求1所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于,步骤3所述的定义不同区域内在vi左侧且与vi不相邻的最右侧的顶点,包括以下步骤:
步骤3.1:将V中的顶点进行编号,另顶点支配独立集S初始值为集合{v1};
步骤3.2:对V-S中的顶点与S中的顶点进行依次判断,若当前顶点在S中不存在临点,那么将该顶点添加到S中,直至判断完所有点。
3.根据权利要求1所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于,步骤4所述的定义求解S(ka,kb,kc,kd)中顶点诱导子图的最大顶点独立集包括以下步骤:
步骤4.1:计算顶点独立集;
步骤4.2:成员单独检查,判断结果是否能优化,若能继续优化则继续进行步骤2,若不能优化则得到中间解并进入步骤3;
步骤4.3:成员联合检查,判断结果是否能优化,若能继续优化则继续进行步骤3,若不能优化则得到最终解。
4.根据权利要求3所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于,步骤1.2所述的成员单独检查包括以下步骤:
步骤4.2.1:初始化定义循环变量iteration_flag,1表示得到S的优化结果,即S的成员个数增加;
步骤4.2.2:进入循环体后令iteration_flag为0,对S中的顶点依次检查是否是A类顶点、B类顶点,若所有顶点都不是A类顶点、B类顶点,则结束检查,得到中间解S;若S中存在A类顶点、B类顶点,那么必然得到S的优化结果,将iteration_flag置1,并结束当前检查,对得到的优化结果重新进行检查,最终得到中间解S;
步骤4.2.3:在检查过程中,若当前检查顶点是A类顶点,那么将vi从S中移除,并将Iopt(Vi’)加入到S中;若当前检查顶点是B类顶点,那么将F_AS(Vi)从S中移除,并将Iopt(Vi)加入到S中;
其中,Vi=F_S(vi)表示计算由顶点vi的相邻顶点构成的集合;V’i=F_IS(vi)表示计算由顶点vi的相邻顶点中不与当前解集合S中的除顶点vi以外的顶点相邻的顶点构成的集合;Sk是S的子集,Sk=F_AS(Vi)表示计算由在集合S中与Vi中的顶点相邻的顶点所构成的集合;若Lopt(Vi’)≥2,称vi是集合S中的A类顶点;若Lopt(Vi)>F_AS(Vi),称vi是集合S中的B类顶点。
5.根据权利要求3所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于,步骤1.3所述的成员联合检查包括:对于S中任意的两个顶点vi和vj,定义Vij=Vi∪Vj和V’ij=V’i∪V’j,包括以下步骤:
步骤4.3.1:若Lopt(V’ij)>2,解S将被优化,将vi和vj从解S中移除,并添加到S在V中的完全补集Sc中,同时将Sc中的Iopt(V’ij)移除,并添加到解S中,即S和Sc的一个交换;
步骤4.3.2:若Lopt(Vij)>F_AS(Vij),解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
步骤4.3.3:若Lopt(V’ij)=2,假设S将被优化,在S和Sc中将{vi,vj}和Iopt(V’ij)进行交换;
步骤4.3.4:若Lopt(Vij)=F_AS(Vij),假设解S将被优化,在S和Sc中将F_AS(Vij)和Iopt(Vij)进行交换;
步骤4.3.5:若Lopt(V’ij)<2,Lopt(Vij)<F_AS(Vij),那么解S不能通过联合检查进行优化。
6.根据权利要求5所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于:若步骤4.3.3和步骤4.3.4的条件同时满足时,在S和Sc之间进行交换后,选取S中除Iopt(V’ij)、Iopt(Vij)的两个顶点再次进行联合检查。
7.根据权利要求6所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于:若所有的顶点都检查完毕,且没有得到优化的解S,那么S是最终解,若解S被优化,那么对优化后的解S进行循环检查。
8.根据权利要求7所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于:在每一次循环检查开始,对当前解中的顶点进行重新编号,用来记录被检查过的点。
9.根据权利要求1所述的一种单位圆盘图上的最大独立集近似求解方法,其特征在于,步骤6所述的递归函数表示为下式:
Lopt(S(k1,k2,k3,k4))=Lopt(S(RIa(vk),RIb(vk),RIc(vk),RId(vk)))+1,vk∈Iopt(S(k1,k2,k3,k4))
Lopt(S(k1,k2,k3,k4))=Lopt(S(k11,k22,k33,k44)),
其中,vk在a区、b区、c区、d区中其中一个时,μ1,μ2,μ3,μ4等于1,否则等于0,RIa(vi)是在a区中在vi左侧且与vi不相邻的最右侧的顶点,RIb(vi)是在b区中在vi左侧且与vi不相邻的最右侧的顶点,RIc(vi)是在c区中在vi左侧且与vi不相邻的最右侧的顶点,RId(vi)是在d区中在vi左侧且与vi不相邻的最右侧的顶点,。
CN201910659827.6A 2019-07-22 2019-07-22 一种单位圆盘图上的最大独立集近似求解方法 Pending CN110489804A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910659827.6A CN110489804A (zh) 2019-07-22 2019-07-22 一种单位圆盘图上的最大独立集近似求解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910659827.6A CN110489804A (zh) 2019-07-22 2019-07-22 一种单位圆盘图上的最大独立集近似求解方法

Publications (1)

Publication Number Publication Date
CN110489804A true CN110489804A (zh) 2019-11-22

Family

ID=68547816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910659827.6A Pending CN110489804A (zh) 2019-07-22 2019-07-22 一种单位圆盘图上的最大独立集近似求解方法

Country Status (1)

Country Link
CN (1) CN110489804A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113592199A (zh) * 2021-08-26 2021-11-02 南京希音电子商务有限公司 一种利用巷道浓度与最小化集合覆盖的波次规划方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113592199A (zh) * 2021-08-26 2021-11-02 南京希音电子商务有限公司 一种利用巷道浓度与最小化集合覆盖的波次规划方法

Similar Documents

Publication Publication Date Title
CN109116841B (zh) 一种基于蚁群算法的路径规划平滑优化方法
Zhao et al. Destination-aware task assignment in spatial crowdsourcing: A worker decomposition approach
TWI385544B (zh) 基於密度式之資料分群方法
TWI391837B (zh) 基於密度式之資料分群方法
Bonato et al. Graph searching and related problems
CN104836711A (zh) 一种指挥控制网络生成模型的构建方法
Lei et al. Detecting protein complexes from DPINs by density based clustering with Pigeon-Inspired Optimization Algorithm
CN110489804A (zh) 一种单位圆盘图上的最大独立集近似求解方法
CN106529044B (zh) 一种柔顺机构0-1变构型拓扑图提取方法
Gao et al. Optimization of full-view barrier coverage with rotatable camera sensors
CN107133877B (zh) 网络中重叠社团的挖掘方法
CN112287247B (zh) 基于Meanshift和K-means聚类的社交网络用户位置特征提取方法和装置
CN109783696A (zh) 一种面向弱结构相关性的多模式图索引构建方法及系统
Janeja et al. Random walks to identify anomalous free-form spatial scan windows
Bai et al. Maximal independent sets in heterogeneous wireless ad hoc networks
CN116629506A (zh) 一种自然资源登记单元预划定方法
Bokal On the crossing numbers of Cartesian products with trees
CN102254093A (zh) 基于泰森多边形的连通域统计相关算法
CN103363999B (zh) 一种生成道路网stroke的迭代方法
Shen et al. Direction-based spatial skyline for retrieving surrounding objects
CN104765820A (zh) 一种非侵入式的服务依赖关系发现方法
Li et al. On target counting by sequential snapshots of binary proximity sensors
Köksalan et al. Multiple criteria decision making: Foundations and some approaches
CN102855624A (zh) 一种基于广义数据场和Ncut算法的图像分割方法
CN111709846A (zh) 基于线图的局部社区发现算法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191122