Page 62 - 《软件学报》2024年第6期
P. 62

2638                                                       软件学报  2024  年第  35  卷第  6  期


                 SSA  形式的线性结构程序      P , 其对应的干涉图为区间图, 对于区间图我们可以有更多成熟的结论.
                    引理 4. 区间图的    MC  问题多项式时间可解.
                    证明: MC  问题可以转化为图着色问题进行求解, 只需将每个顶点转化为对应色数的完全子图, 从而转换为传
                 统图着色问题进行求解. 根据引理 1, 区间图必定是弦图, 转换后映射到对应图着色问题中也必定为弦图. 因此区
                 间图的   MC  问题可以转化为弦图的图着色问题. 根据定理 2, 该问题必定在多项式时间内可解. 因此, 区间图的
                 MC  问题也可以在多项式时间内求解.
                    我们给出无需构建干涉图的理论下界算法, 如算法                 1  所示, 算法在第   2  行按照变量活跃区间的末端从大到小
                 排序, 按照引理 3, 该顺序必定为对应区间图的完美消除序列的逆序. 我们在第                       5  行对变量的每个比特进行编号,
                 从而将对应加权区间图转化为区间图, 对区间图的每个顶点分别进行着色, 其中每个顶点对应变量的每个比特. 算
                 法第  8–21  行按照完美消除序列逆序对区间图的每个顶点进行着色. 其中第                   13–15  行利用了完美消除序列的性质,
                 在无需构建干涉图的情况下仍然能够维护每个顶点                    v  的邻居节点  N(v)  的已着色情况. 该算法的时间复杂度为
                                                                                                      [23]
                 O(|V|+|E|) , 其中排序算法的时间复杂度通常为        O(|V|log|V|) , 但在该问题中, 可以利用桶排序算法加速到         O(|V|)   .
                 算法  1. 理论下界分析.

                 Input: 变量列表  V  , 每个变量  v ∈ V  的位宽   W v  与活跃区间  I v  ;
                 Output: 理论下界  L .

                 1. function   LowerBound(V,W,I)
                 2.    Sort(V,key ← lambda v : I v .end,reversed ← True)

                 3.    M ← 0
                 4.  for  v ∈ V  do
                 5.     index v ← [M, M +W v )∩N
                 6.      M ← M +W v
                 7.  end for
                     freeColor i ← True,∀i ∈ [0, M)∩N
                 8.
                 9.    Color v ← ∅,∀v ∈ V
                 10.     lastEnd ← I V 0 .end
                 11.     kill i ← ∅,∀i ∈ [0,lastEnd)∩N
                 12.   for  v ∈ V  do
                 13.     kill I v .start ← kill I v .start ∪{v}
                                  ← True,∀i ∈ index u ,u ∈ kill k ,k ∈ [I v .end,lastEnd]∩N
                 14.      freeColor color i
                 15.     lastEnd ← I v .end
                 16.   for  i ∈ index v  do
                 17.       j ← min{k|freeColor k = True}
                 18.       Color v ← Color v ∪{v}
                 19.       freeColor j ← False
                 20.   end for
                 21.  end for
                 22.    L ← max(Color)
                 23.  return   L,Color,index
                 24. end function

                    图  3(a) 显示了例  1  程序对应的干涉图, 图中的顶点         a,b,c,d,e 分别被等分为  5,6,4,3,7 份, 代表每个顶点可以
   57   58   59   60   61   62   63   64   65   66   67