一种基于拓扑势值排序的DSATUR图顶点着色方法与流程

文档序号:15347577发布日期:2018-09-04 22:56阅读:1489来源:国知局

本发明涉及图论领域中图顶点着色问题,提出一种基于拓扑势值排序的dsatur图顶点着色方法。



背景技术:

给定一个无向图g=(v,e),其中v={v1,v2,…,vn}表示顶点集合,e表示边的集合,图的顶点着色问题(vertexcoloringproblem,vcp)是要寻找一种方案为图中的每个顶点分配一个颜色,从而使相邻顶点分配的颜色不同且使需要的颜色种类数最少。一种可行的着色方案相当于把图g的顶点集合v划分为k个互斥的独立集,即v={v1,v2,…,vk},独立集vi中的所有顶点都着相同的颜色i(i=0,1,…,k),i表示不同颜色的索引标签。独立集是顶点集v的一个子集,其中的任意两个顶点都不相邻。为图g的所有顶点着色所需的最少的颜色种类数被称为图g的色数,记为χ(g),若χ(g)=k,则称图g为k-色图。

在图论中,图的顶点着色问题是一个著名的np-hard问题,在学术界吸引了很多研究者对其计算理论的关注,此外,它还可以应用到很多工程领域,包括资源调度,寄存器分配,空中交通和通信网络等,这些都表明解决图顶点着色问题的高效算法在实际生产中十分重要。

到目前为止,为解决图顶点着色问题提出了很多精确算法,但精确算法通常只能够解决较小规模的随机图的着色问题,在实际应用中,通常需要处理具有成百上千顶点的图着色问题,随着图中顶点数量的不断增加,着色问题计算的困难程度不断加大,因此也产生了许多有效的启发式算法。

最简单的启发式方法是贪心顺序算法,通常被称为seq算法,参考文献[1]malagutie,tothp.asurveyonvertexcoloringproblems[j].internationaltransactionsinoperationalresearch,2010,17(1):1-34,该算法依次为图中的每一个顶点选择一个可用的最小索引号的颜色进行着色,直到图中所有顶点都已着色。

seq算法的结果依赖于顶点的着色顺序,不同的顶点顺序可能会产生不同的着色结果,因此,根据不同的规则进行顶点选择产生了不同的启发式算法,其中,最著名的是最大色度启发式算法,即dsatur算法的贪心版本。该算法基于色度对顶点进行排序,顶点的色度指的是其相邻顶点所着颜色的种类数,也被称为该顶点的饱和度,每次着色时,选择饱和度最大的顶点进行着色,若存在多个饱和度最大的顶点,则从中选择在未着色图中度最大的顶点,若存在多个度最大的顶点,则从中按照字典顺序进行选择,这种顶点选择规则被表示为dsaturh。

启发式算法应用于完整的枚举方案中可以产生精确算法,例如分支定界的dsatur算法,参考文献[2]brélazd.newmethodstocolortheverticesofagraph[j].communicationsoftheacm,1979,22(4):251-256,该算法递归枚举所有的局部着色将着色问题分解为一个个新的子问题,局部着色指的是图的部分顶点对应的着色结果。对于给定步骤中使用k个颜色的局部着色,根据dsaturh规则选择下一个待着色的顶点,并为其分配一个当前已用的k种颜色或者分配一个新的颜色,那么在搜索树中该节点最多会产生k+1个分支。当到达一个叶节点时,则生成一个可行的着色方案,若该方案所需的颜色数小于当前的最小着色方案,即小于搜索上界ub,则更新ub。若当前的局部着色数k≥ub,那么相关的子问题将被丢弃(剪枝)。每次选择饱和度最大的顶点进行着色,将会产生一个对应一个团的初始局部着色,该团的大小被用作搜索的下界lb,当ub=lb时,取得最优解,搜索结束。之后,文献[3]中,sewellec.animprovedalgorithmforexactgraphcoloring[j].cliques,coloring,andsatisfiability:seconddimacsimplementationchallenge,1996,26:359-372,对dsatur算法进行了改进,提出首先找到图中的最大团,并为其着色,将最大团的大小作为算法的lb(以下称为:最大团着色原则)。

启发式算法的结果依赖于启发规则,且不能保证得到最优解,虽然可用于大规模的图顶点着色问题的近似求解,但是将启发规则应用于枚举方案产生的精确算法不仅可以在较小规模的着色问题中快速取得最优解,而且在大规模图顶点着色问题中,也可以通过设置算法运行时间,在保证时间效率的同时取得较优解甚至最优解,因此,在解决图顶点着色问题的算法中,精确算法更值得关注与研究。

dsatur算法由于其在随机图上较好的性能表现成为了精确算法中最为经典的算法,被作为单独算法或者更加复杂算法的一部分,广泛应用于解决图顶点着色问题或计算图顶点着色问题的上界。dsatur算法在每次着色时选择饱和度最大的顶点,若出现多个饱和度最大的顶点,则从中选取在未着色图中度最大的顶点,顶点的度表示顶点的连接性,并不能充分反映顶点在图中的重要程度,依据顶点度的大小来选择顶点并不十分恰当。



技术实现要素:

为了解决现有的原始dsatur算法依据顶点度的大小来选择顶点在恰当性方面的缺陷,本发明提出一种改进的顶点选择策略,基于原始dsatur算法和最大团着色原则,引入拓扑势的概念,充分考虑顶点在图中的重要程度,每次选择顶点着色时,从多个饱和度最大的顶点中选取拓扑势最大的顶点进行着色,由于在着色时能够更恰当的选择顶点,从而减少搜索次数,快速地取得最优解或在规定的时间内取得更优解。拓扑势的概念参考文献[4]lid,duy.artificialintelligencewithuncertainty[m].crcpress,2007。

本发明提出的基于拓扑势值排序的dsatur图顶点着色方法,包括以下步骤:

步骤1、使用公式(1)为图中的所有顶点计算拓扑势:

其中,mj表示顶点vj的自身属性,由于这里是对图的顶点进行着色,不需要考虑顶点的自身属性,所以mj取值为1;dij表示顶点vi和vj之间的最短路径长度;σ为影响因子,通过计算所有顶点拓扑势的最小熵来获得合适的影响因子σ,熵h可通过公式(2)来计算,其中为归一化因子,

步骤2、找到图的最大团并为其着色,着色时每次选择拓扑势最大的顶点并为其分配一个索引号最小的可用的颜色,将最大团的大小作为搜索的下界lb,搜索的上界ub初始化为图中的顶点数;

步骤3、为图中剩余顶点着色,每次选择当前饱和度最大的顶点,若存在多个具有最大饱和度的顶点,则从中选择拓扑势最大的顶点,若又存在多个拓扑势最大的顶点,则按照字典顺序从中选择,着色时,分配当前已用的有效颜色或者分配一个新的颜色进行分支,采用递归的方式遍历所有可能的情况;

步骤4、每次着色时,若当前所用颜色数大于或等于ub,则进行剪枝;

步骤5、当找到一个可行解时,更新ub为该可行解所用的颜色数,判断ub与lb是否相等,若不等,则继续递归搜索;若相等,则停止搜索,当前的解即为最终的着色方案。

本发明具有以下技术效果:本发明提出的基于拓扑势值排序的dsatur图顶点着色方法能够在选择顶点着色时充分考虑顶点在整个图中的重要程度,相比dsatur原始算法中考虑顶点度的方法,本发明每次选择当前饱和度最大的顶点进行着色,当出现多个饱和度最大的顶点时,则从中选择拓扑势最大的顶点,若又存在多个拓扑势最大的顶点,则按照字典顺序从中选择;本发明能够更恰当的选择顶点,优先选择图中最重要的顶点进行着色,在较少的搜索次数中取得最优解,对于大规模的图顶点着色问题,本发明提出的方法也能在指定的时间内达到更优解。

附图说明

图1为本发明基于拓扑势值排序的dsatur图顶点着色方法流程图。

具体实施方式

基于dsatur算法和sewell提出的最大团着色原则,本发明提出一种新的顶点选择策略来对dsatur算法进行改进。发明引入拓扑势的概念,充分考虑顶点在图中的重要程度,每次选择顶点着色时,从多个饱和度最大的顶点中选取拓扑势最大的顶点进行着色。

一、拓扑势

在物理学中,“场”用来描述非接触粒子之间的相互作用。受“场”的概念的启发,图可以被看作一个包含顶点及其相互作用的系统,顶点的自身属性越大,顶点之间的距离越近,它们之间的作用力越强。顶点之间的作用力用高斯函数的形式表示,相关的场被称为拓扑势场。一个顶点的拓扑势等于图中所有顶点对它的作用力之和,本发明使用拓扑势来评价图中顶点的重要性。图g中顶点vi的拓扑势定义为:

其中,mj表示顶点vj的自身属性,如权重,dij表示顶点vi和vj之间的最短路径长度,σ为影响因子。

由于本发明的目标是为图的顶点进行着色,不需要考虑顶点的权重等自身属性,因此mj=1。σ的大小决定了一个顶点在图中作用力的影响范围大小,根据高斯函数的3σ准则,一个顶点的影响范围是如果σ过大,每个顶点都会被图中大量的顶点所影响,这会导致所有顶点的拓扑势值都很接近,拓扑势将很难区分顶点的重要程度。相反,如果σ很小,顶点的拓扑势将只由顶点自身决定,拓扑势失去了从全图的角度评价顶点重要性的作用。一个恰当的σ应该能够使顶点的拓扑势尽量不同,这样可以更好地评价不同顶点在图中的重要性。根据信息熵的概念,如果所有顶点的拓扑势都一样,拓扑势的熵最大;相反,如果顶点的拓扑势互不相同,那么拓扑势的熵最小。因此,本发明通过计算所有顶点拓扑势的最小熵来获得合适的影响因子σ。熵h可通过公式(2)来计算,其中为归一化因子,

二、基于拓扑势值排序的dsatur图顶点着色方法

本发明引入拓扑势的概念来评价图中顶点的重要程度,基于dsatur算法解决图顶点着色问题,在每次着色时从多个饱和度最大的顶点中选择拓扑势最大的顶点进行着色,提出了一种基于拓扑势值排序的dsatur图顶点着色方法,如图1所示,包括以下步骤:

步骤1、使用公式(1)为图中的所有顶点计算拓扑势。

步骤2、找到图的最大团并为其着色,着色时每次选择拓扑势最大的顶点并为其分配一个索引号最小的可用的颜色,将最大团的大小作为搜索的下界lb,搜索的上界ub初始化为图中的顶点数。

步骤3、为剩余顶点着色,每次选择当前饱和度最大的顶点,若存在多个具有最大饱和度的顶点,则从中选择拓扑势最大的顶点,若又存在多个拓扑势最大的顶点,则按照字典顺序从中选择,着色时,分配当前已用的有效颜色或者分配一个新的颜色进行分支,采用递归的方式遍历所有可能的情况。

步骤4、每次着色时,若当前所用颜色数大于或等于ub,则进行剪枝。

步骤5、当找到一个可行解时,更新ub为该可行解所用的颜色数。判断ub与lb是否相等,若不等,则继续递归搜索;若相等,则停止搜索,当前的解即为最终的着色方案。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1