上述图着色算法是最简单明了的算法描述,实际上是基于冲突图的结群,使用贪婪算法进行结群,其着色效果不一定最优(颜色最少)。下面给出一个改进方案。
  冲突图G由二元式组成:
      G = { V, E }
  其中  V = { vi | 需要被着一种颜色的区域i}
      E = { (vi , vj)| 区域i与区域j相邻,不可着一种颜色,二者冲突}
  设结群后的结果用C表示。
      C = { S1, S2, Si , Sn }
      Si是无冲突集(见定义4)
      Si ∩ Sj = ( Si , Sj ∈ C )
      V C

  定义1:完全冲突集M是V的一个子集,M中的任意2个结点皆相互冲突。
  定义2:完全冲突集M中结点个数减1称作M的冲突度,记作dm
  定义3:MM = {∪Mk | Mk是G的完全冲突集 }。
  定义4:无冲突集S是V的一个子集,S中的任意2个结点皆不冲突。
  推论1: 从完全冲突集M中删去任意一个结点后的剩余部分N仍然是一个完全冲突集。并且dn = dm - 1
  推论2: 冲突度 dm= 0的完全冲突集M是完全冲突集的一个特殊情况,即M中只有1个元素m,结点m和V中任何其他结点都不冲突。

  Step1 初始化: 令C = ;
  Step2 准备工作: 为冲突图G建立MM;
  Step3 从MM中选取一个冲突度最大的元素Mk,对Mk中每一个元素执行以下操作:
  若结点 m (Mk ∩ V),则
   (1) C = C ∪ m;
   (2) 修改Mk及其冲突度: Mk = Mk - m; dm = dm - 1;
   (3) 修改V: V = V - m;
  Step5 以冲突度为优先级对MM中的元素排序,以冲突度递降的顺序逐一分析MM中每一个元素Mk,对Mk中每一个元素m执行以下操作:
  若{ Si ∪ m }是无冲突集,则
   (1)Si = Si ∪ m;
   (2)修改Mk及其冲突度: Mk = Mk - m; dm = dm - 1;
   (3)修改V: V = V - m;
  Step6 若V =  算法结束;否则转Step3。