摘要
图着色问题是图论中比较热门的NP难问题之一。针对该问题,有许多启发式求解算法,但都存在求解的质量不高,计算时间较长等问题。近些年提出的膜进化算法,在处理NP难问题中展现出了独特的优势。基于膜进化算法框架,提出了解决图着色问题的膜进化算法,把图着色问题和膜结合,设计了复制、融合、分裂、溶解、融合分裂、禁忌搜索6种膜进化算子。这些算子在演变的过程中使膜和膜结构发生进化,从而找到更优解,最后求得解决方案。在DIMACS的40个挑战数据集上面进行了实验,与3个最新的图着色算法比较的结果表明:在保证解的质量的情况下,文中提出的膜进化算法能有效降低求解的时间,其中有58%的实例占优。
图着色问题是一个经典的组合优化问题,它的应用十分广泛,例如:Wifi信号的分配问
仿生群智能算法用于求解NP难问题一直都是比较热门的话题。膜计算是自然计算中一个快速发展的分支,近几年提出的膜进化算法,已经用来解决了很多NP难问题。例如:郭平等利用膜进化算法来解决最小顶点覆盖问
针对图着色问题,结合进化算子和局部搜索的混合进化算法一直是研究的热点。这些算法中,由于引入了较多的个体,在管理多样性时存在很大的挑战。在文献[
图着色问题是给定一个无向图G = (V, E),其中V是顶点集合,E是边集合。给每个顶点分配一个颜色数,使得有边相连的顶点拥有不同的颜色数。如果边e连接的2个顶点v1和v2的颜色数相同,称边e为冲突边,顶点v1和v2为冲突顶点。一个解决方案是给所有的顶点分配一个不大于K的颜色数并且无冲突。求得最小的整数K,称之为色数。
膜进化算法是根据膜进化的过程提出的仿生智能算
图着色问题是经典的NP难问题,研究者已经提出了许多的求解算法。近年来,性能优秀的算法包括PLSCOL(improving probability learning based local search for graph coloring)、TensCol(population-based gradient descent weight learning for graph coloring problems)和HEAD(variations on memetic algorithms for graph coloring problems)。
PLSCO
TensCo
HEA
根据膜进化算法框架,讨论提出的解决图着色问题的膜进化算法MEA_GCP(membrane evolutionary algorithm for solving graph coloring problem)。
为了方便描述,采用以下符号。
M:膜结构,它包含4个膜个体和1个全局最优膜mg。0代表皮肤膜,如

图1 解决图着色问题的膜进化算法的膜结构
Fig. 1 Membrane structure of MEA_GCP
mi (i =1,2,3,4):代表一个膜个体,如
Vi (1≤i≤K):代表一个子膜,存放一个解决方案中颜色为i的所有顶点。每个顶点只能有一种颜色,所以ViVj =(i≠j),V = V1V2…VK。 Vi中的对象(物质)表示为,i表示膜i,j表示颜色j。特别,当只在一个膜中讨论问题时,省略对象的下标。
基于
, | (1) |
式中,

图2 初始膜结构的一个例子
Fig. 2 An example of an initial membrane structure
基于
在
算法1 :MEA_GCP//解决图着色问题的膜进化算法 |
---|
输入:G = (V, E), K, MaxIter, P = 4, maxgen; |
输出:最优膜mg; |
M = PopulationInitialization (G,K,P); // 2.3节 |
gen = 0, mg = m1, M.fusion(mg); // fusion操作见 |
while(gen < maxgen && fit(mg)>0){ |
把4个膜随机分成2个组g1, g2;// |
复制gi获得gi',i = 1,2;//把每个组里的膜分别进行1次复制操作,得到4组膜,2.4.1节和 |
m1' = fusion_division(g1, 0), m2' = fusion_division(g1', 1);// fusion_division见2.4.5节 |
m3' = fusion_division(g2, 0), m4' = fusion_division(g2', 1); |
for 1≤i≤P do |
mi =Tabucol(G, mi', MaxIter); //2.4.6节 |
if (fit(mg)>fit(mi)) |
mg = mi; |
end for |
gen++; |
} |
end while; |
返回 mg; |
解决图着色问题的膜进化算法的膜结构变化如

图3 解决图着色问题的膜结构变化图
Fig. 3 Membrane structure change diagram of MEA_GCP
由
在种群的一代进化中,膜结构的变化过程可以总结为:
膜进化框架和MEA_GCP相比较,它们有3个主要区别。
1)膜结构方面的区别。对于MEA_GCP,膜主要有4种结构,膜种群为4个,在进化过程中,膜结构根据需求在一直变化。对于MEA的膜结构,给出了初始膜结构,膜种群的大小是根据不同的问题设定。
2)膜进化算子的区别:MEA_GCP的膜进化算子,分别为:复制算子、融合算子、分裂算子、溶解算子、融合分裂算子、禁忌搜索算子。MEA的进化算子有:融合算子、分裂算子、选择算子、溶解算子。
3)适应度函数的区别:MEA_GCP的适应度函数是针对图着色问题的一个具体衡量指标。MEA中的适应度函数也用来衡量一个膜的优劣,没有针对具体问题,是一个比较抽象的概念。
膜进化算法是一个基础的框架,解决图着色问题的膜进化算法是在它的基础上针对图着色问题设计的算法。针对不同的问题,也要在该框架上面进行设计。
在膜种群的初始化过程中,每个膜的初始化原则是保证在较短的时间得到一个适应度函数比较小的初始解。
算法2 :PopulationInitialization //初始化膜种群 |
---|
输入:G = (V, E), K, P; |
输出:the membrane population M; |
创建一个空的皮肤膜; |
for i = 1 to P do |
mi = Random_init(G, K); //算法 3 |
M.fusion(mi); // |
end for |
返回 M; |
Random_init(
算法3 :Random_init //随机初始化 |
---|
输入:G = (V, E), K; |
输出:m; for(1≤i≤K) 创建一个空的子膜Vi; m.fusion(Vi); // end for for v∈V do C[v] = random(1, K); //C[v]代表v的颜色,随机给v赋予一个1到K的颜色数 if(C[v] == i) Vi←{v}; |
end for 返回 m; |
结合一个顶点为{A,B,C,D,E,F,G,H,I,J },色数为3的图对进化算子做详细的介绍。
融合算子有3种操作:1)将2个或者2个以上的膜合并形成一个膜的过程。如

图5 细胞融合示例
Fig. 5 Fusion operator example
分裂算子是把膜中顶点按照一定的规则分裂在不同膜中。分裂过程中,子膜中顶点的颜色不改变,如

图6 细胞分裂示例
Fig. 6 Division operator example
在进化的过程中,当一个膜表达的解决方案已经远离最优解时,需要将该膜内的对象以及膜都删除,这时就需要进行溶解。溶解算子的作用在于删除膜以及膜内的对象。
在MEA_GCP中,不单独使用溶解算子,而是将它与其他算子一起使用。例如,在融合分裂算子结束后,会得到2个膜,其中1个膜是比较差的,所以要将这个膜溶解掉,就用到溶解算子。
在膜进化算法中,算子不仅可以单独使用,而且可以组合使用。在
算法4 :fusion_division //融合分裂算子 |
---|
输入:m1, m2, f ; //膜1、膜2、标志f (0 or 1) |
输出:m1'; //新的膜1 |
把m1和 m2通过融合算子融合成mt; //2.4.2节 创建一个空膜m1'; for 1≤L≤K do if (L + f )% 2 is odd, then A=1,else A=2; |
选择mt中顶点最多的子膜VAj (1≤j≤K),把该子膜中的所有顶点组合成子膜VL融合到m1'中,然后把mt中与子膜VAj中相同的顶点分裂到m2'中; L++; end for 将mt中还未分裂的顶点对应分裂到m1'和m2'中(V1j分裂到m1',V2j分裂到m2'中); 将m2'溶解; 返回 m1'; |
在

图7 融合分裂过程的一个例子
Fig. 7 An example of the fusion-division operator
如果单独只用进化算法去解决图着色问题,其结果比较差。比较有效的做法是把局部搜索算法与进化算法相结合组成混合进化算法:进化算法的算子用来提供种群的多样性,提供一个更广的搜索空间;局部搜索用来做局部提升,能在一个基础上找到一个更好的解。文中用到的局部搜索算法是禁忌搜索。
禁忌搜

图8 标记膜示例
Fig. 8 Mark membrane example
算法5 :Tabucol //禁忌搜索算子 |
---|
输入:G, m, MaxIter; |
输出:mb; |
Set mb = m and iter = 0; //mb代表迭代过程的最优膜 |
设置一个空的标记膜mc;//如 |
while iter != MaxIter do |
尝试把m中的v从Vi移动到Vj中;//v代表m中的任意一个顶点 |
if(mc中v的t为0) |
在m中,把v从Vi移动到Vj中。在mc中,把v的移动标记设置为j,并按照 |
if fit(m) < fit(mb), then set mb=m; |
else |
在mc中,把v的t减1; |
iter ++; |
end while |
返回mb; |
在禁忌搜索当中,参数t叫禁忌期。它的大小直接影响了对邻域的搜索效果。禁忌期较长可以探索大的搜索空间,但是如果设置得太长则不能起到禁忌作用;如果禁忌期较短,搜索将被限制在一个较小范围,不易获得更优的解。文献[
, | (2) |
式中:的区间是[0,9];;(m)代表当前膜的适应度函数。在文中,也采用这样的设置方式。在加入标记膜之后,膜结构会发生变化,具体见
在这一节中,介绍所选用的基准实例和实验的环境,参数设置和对比实验。为了验证MEA_GCP的有效性,将和现在已知最好的和最新的算法作对比。
本次选用的基准实例主要是第二次DIMACS竞赛中的40个困难实例,这些实例在近年的研究中被广泛使用。
MEA_GCP算法的实现语言是C++,实验环境是windows10,处理器是:AMD Ryzen5 4600H六核,主频3GHz。
为了体现实验对比的客观性,下面将对比实验的实验环境也列出来做参考。
1)PLSCO
2)TensCo
3)HEA
在文中的实验对比情况中,比较2个算法哪个较优是采用先比较色数,再比较成功率,再比较求解时间的顺序评价。因为更新一个图的色数是非常困难的,所以先比较色数,其次是成功率,成功率代表着该算法是否比较稳定,鲁棒性是否比较强。同时,求解时间的长短也是比较重要的一个指标。
关于图着色问题的色数,已经很多年没有出现过更新,说明想要取得更好的结果的难度是巨大的。文中选择与HEA
实例名 | K* | PLSCOL | TensCol | HEAD | MEA_GCP | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kbest | SR | t/s | kbest | SR | t/s | kbest | SR | t/s | kbest | SR | t/s | ||
DSJC125.1 | 5 | 5 | 10/10 | <60 | 5 | 10/10 | 40 | 5 | 20/20 | <0.6 | 5 | 10/10 | 0.02 |
DSJC125.5 | 17 | 17 | 10/10 | <60 | 17 | 10/10 | 68 | 17 | 20/20 | <0.6 | 17 | 10/10 | 0.11 |
DSJC125.9 | 44 | 44 | 10/10 | <60 | 44 | 10/10 | 22 | 44 | 20/20 | <0.6 | 44 | 10/10 | 0.07 |
DSJC250.1 | 8 | 8 | 10/10 | <60 | 8 | 10/10 | 95 | 8 | 20/20 | <0.6 | 8 | 10/10 | 0.12 |
DSJC250.5 | 28 | 28 | 10/10 | 4 | 28 | 10/10 | 199 | 28 | 20/20 | 0.6 | 28 | 10/10 | 1.80 |
DSJC250.9 | 72 | 72 | 10/10 | <60 | 72 | 10/10 | 87 | 72 | 20/20 | 1.2 | 72 | 10/10 | 1.20 |
DSJC500.1 | 12 | 12 | 7/10 | 43 | 12 | 10/10 | 1 098 | 12 | 20/20 | 6 | 12 | 10/10 | 4.80 |
DSJC500.5 | 47 | 48 | 3/10 | 1786 | 48 | 5/10 | 7 807 | 47 |
2/ 10 000 | 48 | 48 | 10/10 | 11.40 |
DSJC500.9 | 126 | 126 | 10/10 | 747 | 126 | 6/10 | 18 433 | 126 | 13/20 | 72 | 126 | 3/10 | 20.40 |
DSJC1000.1 | 20 | 20 | 1/10 | 3 694 | 20 | 10/10 | 10 225 | 20 | 20/20 | 12 | 20 | 10/10 | 9.00 |
DSJC1000.5 | 82 | 87 | 10/10 | 1 419 | 84 | 9/10 | 32 495 | 82 | 3/20 | 2 880 | 83 | 10/10 | 215.40 |
DSJC1000.9 | 222 | 223 | 5/10 | 12 094 | 224 | 6/10 | 58 084 | 222 | 2/20 | 5 160 | 223 | 8/10 | 637.80 |
DSJR500.1 | 12 | 12 | 10/10 | <60 | 12 | 10/10 | 7 | - | - | - | 12 | 10/10 | 0.18 |
DSJR500.1c | 85 | 85 | 10/10 | 386 | 85 | 10/10 | 298 | 85 | 1/20 | 12 | 85 | 3/10 | 0.60 |
DSJR500.5 | 122 | 126 | 8/10 | 1 860 | 122 | 10/10 | 4 310 | - | - | - | 122 | 9/10 | 106.20 |
flat300_26_0 | 26 | 26 | 10/10 | 195 | 26 | 10/10 | 176 | - | - | - | 26 | 10/10 | 0.60 |
flat300_28_0 | 28 | 30 | 10/10 | 233 | 31 | 10/10 | 586 | 31 | 20/20 | 1.2 | 31 | 10/10 | 1.20 |
flat1000_76_0 | 81 | 86 | 1/10 | 5 301 | 83 | 3/10 | 34 349 | 81 | 3/20 | 3600 | 82 | 8/10 | 409.80 |
flat1000_50_0 | 50 | - | - | - | - | - | - | 50 | 20/20 | 18 | 50 | 10/10 | 15.60 |
flat1000_60_0 | 60 | - | - | - | - | - | - | 60 | 20/20 | 30 | 60 | 10/10 | 27.00 |
latin_square_10 | 97 | 99 | 8/10 | 2 005 | 98 | 10/10 | 28 925 | - | - | - | 100 | 6/10 | 1 240.00 |
le450_5a | 5 | - | - | - | - | - | - | 5 | 20/20 | <0.6 | 5 | 10/10 | 0.19 |
le450_5b | 5 | - | - | - | - | - | - | 5 | 20/20 | <0.6 | 5 | 10/10 | 0.24 |
le450_5c | 5 | - | - | - | - | - | - | 5 | 20/20 | <0.6 | 5 | 10/10 | 0.20 |
le450_5d | 5 | - | - | - | - | - | - | 5 | 20/20 | <0.6 | 5 | 10/10 | 0.19 |
le450_15a | 15 | 15 | 10/10 | <60 | 15 | 10/10 | 333 | 15 | 20/20 | <0.6 | 15 | 10/10 | 0.27 |
le450_15b | 15 | 15 | 10/10 | <60 | 15 | 10/10 | 333 | 15 | 20/20 | <0.6 | 15 | 10/10 | 0.23 |
le450_15c | 15 | 15 | 7/10 | 1 718 | 15 | 10/10 | 507 | 15 | 3/20 | 1.2 | 15 | 4/10 | 1.20 |
le450_15d | 15 | 15 | 3/10 | 2 499 | 15 | 10/10 | 301 | 15 | 1/20 | 1.8 | 15 | 1/10 | 1.20 |
le450_25a | 25 | 25 | 10/10 | <60 | 25 | 10/10 | 87 | 25 | 20/20 | <0.6 | 25 | 10/10 | 0.19 |
le450_25b | 25 | 25 | 10/10 | <60 | 25 | 10/10 | 12 | 25 | 20/20 | <0.6 | 25 | 10/10 | 0.19 |
le450_25c | 25 | 25 | 10/10 | 1 296 | 25 | 10/10 | 19 680 | 25 | 20/20 | 1800 | 25 | 10/10 | 792.00 |
le450_25d | 25 | 25 | 10/10 | 1 704 | 25 | 10/10 | 9 549 | 25 | 20/20 | 5400 | 25 | 8/10 | 4 753.20 |
R125.1 | 5 | 5 | 10/10 | <60 | 5 | 10/10 | 0 | - | - | - | 5 | 10/10 | 0.02 |
R125.5 | 36 | 36 | 10/10 | <60 | 36 | 10/10 | 6 | - | - | - | 36 | 7/10 | 0.60 |
R250.1 | 8 | 8 | 10/10 | <60 | 8 | 10/10 | 0 | - | - | - | 8 | 10/10 | 0.07 |
R250.5 | 65 | 66 | 10/10 | 705 | 65 | 10/10 | 33 | 65 | 1/20 | 780 | 66 | 7/10 | 627.00 |
R1000.1 | 20 | 20 | 10/10 | <60 | 20 | 10/10 | 15 | - | - | - | 20 | 10/10 | 0.20 |
R1000.1c | 98 | 98 | 10/10 | 256 | 98 | 10/10 | 4 707 | 98 | 3/20 | 12 | 98 | 10/10 | 27.00 |
R1000.5 | 234 | 254 | 4/10 | 7 818 | 234 | 2/10 | 23 692 | 245 | 20/20 | 14640 | 245 | 3/10 | 14 400.00 |
从
1)在最优解方面,PLSCOL在34个实例中的获得了1个比其他3个算法更好的解,TensCol在34个实例中获得了2个比其他3个算法更好的解,HEAD在32个实例中获得了4个比其他3个算法更好的解,MEA_GCP在40个实例中有31个实例与其他3个算法的最优解相同。
2)在求解成功率方面,PLSCOL在34个实例中的获得了1个比其他3个算法高的成功率,TensCol在34个实例中获得了4个比其他3个算法更高的成功率,HEAD在32个实例中获得了1个比其他3个算法更高的成功率,MEA_GCP的40个实例中有3个实例比其他3个算法的成功率高。
3)在时间消耗方面,PLSCOL在34个实例中的获得了1个比其他3个算法更少的时间,TensCol在34个实例中获得了2个比其他3个算法更少的时间,HEAD在32个实例中获得了2个比其他3个算法更少的时间,MEA_GCP的40个实例中有33个实例比其他3个算法的时间少。
总体来说,MEA_GCP在保证解的质量相当的情况下有效降低了求解的时间,其中有58%的实例具有更少的求解时间。这主要源于进化机制不同与计算策略不同2个方面。
1)进化机制不同。MEA_GCP中把4个膜分成两两一组,然后分别对每个组的膜进行融合、分裂操作。经历融合、分裂之后得到的膜通过禁忌搜索算子并行提升之后再去替换原来的4个膜,再进行分组操作,继续进化。HEAD利用交叉算子和禁忌搜索的结合,整个种群是2个解在并行进化,2个解利用交叉算子生成不同的个体,再用禁忌搜索进行提升后替换原来的2个解。PLSCOL是改进的禁忌搜索算法,整个进化过程主要是围绕着1个解进行计算,解的改进过程可以概括为:初始解→局部最优解→全局最优解。TensCol是基于种群的梯度下降权值学习方法,种群的大小为200,把图着色问题转化为连续权值张量优化问题,建立每个个体和种群的关系,每个个体又在并行进化,一次进化结束,所有的解会通过全局损失函数整合最好的解。对于HEAD、MEA_GCP的种群个体数较多,在进行融合分裂时,把2个膜分为两两一组,每次都会有3种不同的选择,而HEAD只有2个个体,没有不同的选择,所以MEA_GCP个体的多样性会更好,求解的效率更高。PLSCOL求解只针对1个个体进行改进,本质是一种局部搜索算法。MEA_GCP有4个个体,个体之间会互换信息,它的全局搜索能力更好,所以用的时间较少。TensCol的种群大小为200,这200个个体并行经历一次进化后,都会去计算各个解之间的关系,然后整合关系去寻找最优解。而MEA_GCP只需要比较每个膜的适应度函数就能判断哪个膜更优,所以MEA_GCP有更高的效率。
2)计算策略不同。HEAD是混合进化算法,其中采用交叉算子来提供全局搜索能力。MEA_GCP是膜进化算法,其中的融合分裂算子在设计时用到了交叉算子的贪心策略,但是融合分裂算子的最后一步做了改进。交叉算子在最后一步是采用随机着色的方式,这会使解产生较多的冲突。而融合分裂算子在最后分裂时,顶点的颜色和原来的膜相同,比随机着色的产生的冲突要少。PLSCOL算法主要是围绕着一个概率矩阵对禁忌搜索算法进行改进来解决图着色问题。概率矩阵贯穿着色的整个过程,从起始着色到着色改进,再到概率更新,还需要计算解之间的关系。这些步骤都需要大量的时间,并且计算时间和图的规模成正比。再加上禁忌搜索的时间,PLSCOL的计算时间会更长。对于MEA_GCP,计算时间的99%都是由禁忌搜索产生,融合分裂所花费的时间非常少。所以MEA_GCP在大规模实例上的计算时间占较大优势。对于TensCol算法,它主要是把图着色问题转化为了连续权值张量的优化问题,该算法是解决图着色问题的一个通用框架。不仅仅针对文中提出的图着色问题,还可以解决ECP(equitable graph coloring problem)问题,它是在GCP问题上加上每种颜色的顶点个数相差不大于1的条件。1个方法解决2个问题,在计算全局损失函数时,针对GCP,会进行一些不必要的计算,所以消耗了大量的时间。
由于
算法名称 | 最优实例数/实例总数 | 最优实例比例/% |
---|---|---|
PLSCOL | 3/34 | 9 |
TensCol | 9/34 | 26 |
HEAD | 6/32 | 19 |
MEA_GCP | 23/40 | 58 |
膜进化算法是受膜进化过程启发的仿生智能算法,在膜进化演变的过程中寻找解。依据膜进化算法的框架,结合图着色问题,文中提出了MEA_GCP算法,设计并实现了该算法的复制、融合、分裂、融合分裂、溶解、禁忌搜索算子,并在DIMACS挑战数据集上与目前优秀的图着色问题求解算法进行了对比实验。MEA_GCP在78%的实例上与其他3个算法取得相同的结果,在70%的实例上获得了100%的求解成功率,在58%的实例上具有更少的求解时间。由此,使用膜进化算法解决图着色问题是有效的和可行的。
文中在设计MEA_GCP的进化算子的时候主要借鉴了交叉算子的设计思路。进一步的研究可以从以下两方面展开:更好地结合禁忌搜索与膜对象进化使对象更新效率更高;简化膜内对象的表示和引入新的进化策略(例如对象贡献度)使进化算法具有通用性。
参考文献
Orden D, Marsa-Maestre I, Gimenez-Guzman J M, et al. Spectrum graph coloring to improve Wi-Fi channel assignment in a real-world scenario via edge contraction[J]. Discrete Applied Mathematics, 2019, 263: 234-243. [百度学术]
Gao L, Hou Y, Tao X, et al. A graph-based resource sharing and admission control for vehicular networks[C]// 2019 IEEE Wireless Communications and Networking Conference Workshop (WCNCW). IEEE, 2019, 1-6. [百度学术]
Hsiao H C, Chen C W, Wang J, et al. Architecture-aware memory access scheduling for high-throughput cascaded classifiers[C]// 2019 IEEE 22nd International Symposium on Design and Diagnostics of Electronic Circuits & Systems (DDECS). IEEE, 2019:1-4. [百度学术]
Galinier P, Hao J K. Hybrid evolutionary algorithms for graph coloring[J]. Journal of Combinatorial Optimization, 1999, 3(4): 379-397. [百度学术]
Moalic L, Gondran A. Variations on memetic algorithms for graph coloring problems[J]. Journal of Heuristics, 2018, 24(1): 1-24. [百度学术]
Lü Z, Hao J K. A memetic algorithm for graph coloring[J]. European Journal of Operational Research, 2010, 203(1):241-250. [百度学术]
Negi C, Shukla A N. An approach for solving the graph coloring problem using adjacency matrix[C]// 2019 8th International Conference System Modeling and Advancement in Research Trends (SMART). IEEE, 2019: 10-13. [百度学术]
Crnkić A, Povh J, Jaćimović V, et al. Collective dynamics of phase-repulsive oscillators solves graph coloring problem[J]. Chaos, 2020, 30(3): 033128. [百度学术]
Andreu-Guzmán J A, Valencia-Cabrera L. A novel solution for GCP based on an OLMS membrane algorithm with dynamic operators[J]. Journal of Membrane Computing, 2020, 2(1): 1-13. [百度学术]
Tabi Z, El-Safty K H, Kallus Z, et al. Quantum optimization for the graph coloring problem with space-efficient embedding[C]// 2020 IEEE International Conference on Quantum Computing and Engineering (QCE). IEEE, 2020: 56-62. [百度学术]
Baiche K, Meraihi Y, Hina M D, et al. Solving graph coloring problem using an enhanced binary dragonfly algorithm[J]. International journal of swarm intelligence research, 2019, 10(3): 23-45. [百度学术]
Zhao R, Wang Y, Liu C, et al. Discrete selfish herd optimizer for solving graph coloring problem[J]. Applied Intelligence, 2020, 50(5): 1633-1656. [百度学术]
Zhou Y, Duval B, Hao J K. Improving probability learning based local search for graph coloring[J]. Applied Soft Computing, 2018, 65: 542-553. [百度学术]
Goudet O, Duval B, Hao J K. Population-based gradient descent weight learning for graph coloring problems[J]. Knowledge-Based Systems, 2021, 212:106581. [百度学术]
Guo P, Quan C, Chen H. MEAMVC: A Membrane evolutionary algorithm for solving minimum vertex cover problem[J]. IEEE Access, 2019, 7: 60774-60784. [百度学术]
Guo P, Wang X, Zeng Y, et al. MEAMCP: A membrane evolutionary algorithm for solving maximum clique problem[J]. IEEE Access, 2019, 7: 108360-108370. [百度学术]
Guo P, Hou M, Ye L. MEATSP: a membrane evolutionary algorithm for solving TSP[J]. IEEE Access, 2020, 8:199081-199096. [百度学术]
Xu Y C, Guo P. MEA-CNDP: a membrane evolutionary algorithm for solving biobjective critical node detection problem[J]. Computational Intelligence and Neuroscience, 2021, 2021: 1-20. [百度学术]
Liu Y Y, Guo P, Zeng Y. MEACCP: a membrane evolutionary algorithm for capacitated clustering problem[J]. Information Sciences, 2022, 591: 319-343. [百度学术]
Hertz A, Werra D. Using tabu search techniques for graph coloring[J]. Computing, 1987, 39(4): 345-351. [百度学术]
Fleurent C, Ferland J A. Genetic and hybrid algorithms for graph coloring[J]. Annals of Operations Research, 1996, 63(3):437-461. [百度学术]