一、前言
关于本文中用到的这种图着色解决方法,不知道有没前人提出过。如果说没人提出过,那么就算是一个新的解决方法吧,具体性能对比没深入研究,但是求出的解基本是和Graph Coloring Instances网站里面的最优解一样的。
我们都知道,很多问题都可以转化成图着色问题来进行解决,所以本文的例子直接是无向图。
二、解决思路
不太成熟的想法:
要使得相邻点的颜色不同,着色方案有很多种,那么究竟哪种着色方案使用的颜色最少呢?
首先最开始看到这个问题时,我最开始的思路是每次用尽量少的颜色给尽量多的点上色。
->
->
->
->
->
以上是个简单的图,我选用的步骤为:
1、找出度最大的顶点2、3、5(度均为4)。
2、对2着色C1,然后遍历相邻点
3、给1着色C2
4、给3着色C2,和1冲突,着色C3
5、给5着色C2,不冲突
6、给4着色C2,与5冲突,着色C3
7、给4着色C1,不冲突
从一次性上完一种颜色入手:
本来是想实现上一个想法的,但是在梳理的过程中,有一个新的想法,即是通过与以前运筹学课程上学过的方法结合,较为高效且高质量地解决问题。
步骤如下:
步骤一、给未上色点集中度最大的顶点上色Ci,生成可同色点集,为与该顶点不相邻且未上色的点的集合