给定3CNF,在变量上带有子句。假设和出现在公式中最多次。ϕ1,…,ϕkx1,…,xnxixi¯¯¯¯¯ki
我们设计一个有色DAG其顶点包括三个部分:G
- “赋值”顶点和,,。色与“颜色”,和与。vi(j)v¯i(j)1≤i≤n1≤j≤kivi(j)xi(j)v¯i(j)xi¯¯¯¯¯(j)
- “子句”顶点,,。色与彩色或)如果(或,RESP)是个文字的第,它是包含此文字的第个子句。wi′(j′)1≤i′≤kj′=1,2,3wi′(j′)xi(j)xi¯¯¯¯¯(j)xi¯¯¯¯¯xij′ϕi′j
- “剪切”顶点。用不同于上面的不同颜色为它们上色。s=s0,s1,…,sn,sn+1,…sn+k=t
边缘包括:
- si−1vi(1),, ;vi(j)vi(j+1)vi(ki)si
- si−1v¯i(1),, ;v¯i(j)v¯i(j+1)v¯i(ki)si
- 和,。sn+i′−1wi′(j′)wi′(j′)sn+i′
例如,从3CNF
构建以下图形(边缘方向从左到右)。
(x1∨x2∨x3¯¯¯¯¯)∧(x1∨x2¯¯¯¯¯∨x3)
现在,不难看出,当且仅当存在一条具有不同顶点颜色的 -路径时,原始3CNF才可以满足要求。stG
(顺便说一句,彩色DAG中具有不同顶点颜色的 -路径的存在是。从计算角度来看,我没有找到很多有关此问题的文献。您知道的,请发表评论!)吨NP-硬stNP-hard
那么和OP问题之间有什么关系?直观地,我们要设计一个矩阵,以便将每种颜色映射到一行(是一个人),而将边缘映射到连续的列(时隙)。因此,基本上从矩阵中的左到右进行的最大调度对应于 -路径。ħ 小号吨Ghst
我们的矩阵有列,索引从开始。在下面的建设必须的两个值满足。比率可以是和大幂。令。2 Ñ + 1 + Σ 我 2 ķ 我 + ķ 0 X ý 1 « X « ý X / 1 ,ÿ / X ķ Ñ ķ 我 = 2 我+ 2 Σ 我Ĵ = 1 ķ 我h2n+1+∑i2ki+k0XY1≪X≪YX/1,Y/XknKi=2i+2∑ij=1ki
- 对于每个,,令(如果该坐标存在,如下所示。 0 ≤ 我≤ Ñ ħ (š 我,ķ 我)= H ^ (s ^ 我,ķ 我 - ķ 我 - 1 )= H ^ (s ^ 我,ķ 我 + ķ 我+ 1 + 1 )= ÿsi0≤i≤nh(si,Ki)=h(si,Ki−ki−1)=h(si,Ki+ki+1+1)=Y
- 对于每个,令;对于每个,让。ħ (X 我(Ĵ ),ķ 我- 1 + Ĵ )= X ‾ X 我(Ĵ )ħ (¯ X 我(Ĵ ),ķ 我- 1 + ķ 我 + 1 + Ĵ )= Xxi(j)h(xi(j),Ki−1+j)=Xxi¯¯¯¯¯(j)h(xi¯¯¯¯¯(j),Ki−1+ki+1+j)=X
- 对于每个,和子句的文字,令。 1 ≤ 我' ≤ ķ X φ 我' ħ (X ,ķ Ñ + 我')= 1ϕi′1≤i′≤kxϕi′h(x,Kn+i′)=1
- 所有其他条目均为0。
例如,对于上面的示例图,相应的矩阵为
现在我们声明:且仅当最大值为,原始3CNF才可满足。(2n+1)Y+∑ikiX+k
考虑达到最大值的调度。由于中恰好有列包含,因此应该全部覆盖它们。对于具有两个选择的列,假设计划将其分配给。由于必须将列分配给,因此必须通过连续性将列丢失为。如果调度将列分配给发生相同的情况。(2n+1)hYKi+ki+1YsiKisiKi+1Ki+kiKi+ki+1si+1
因此,为了具有值,我们必须选择矩阵中所有其余的可用,它们对应于变量的赋值。因此,当且仅当赋值满足每个子句时,的剩余值才可实现。∑ikiXXk
结论是,确定合法调度的最大值在。也许这就是为什么我们之前所有尝试找到算法的尝试都失败了的原因。NP-hard