Dado un 3CNF con cláusulas en las variables . Suponga que tanto como aparecen en la fórmula como máximo veces respectivamente.ϕ1,…,ϕkx1,…,xnxixi¯¯¯¯¯ki
Diseñamos un DAG color cuyos vértices constan de tres partes:G
- Vértices de "asignación" y , , . Colorea con el "color" y con .vi(j)v¯i(j)1≤i≤n1≤j≤kivi(j)xi(j)v¯i(j)xi¯¯¯¯¯(j)
- "Cláusula" vértices , , . Colorea con el color (o ) si (o , resp.) Es el literal -th de la cláusula , y es la cláusula -ésima que contiene este literal.1≤i′≤kj′=1,2,3w i ′ (j′)xi(j) ¯ x i (j) ¯ x i xij′ϕ i ′ jwi′(j′)1≤i′≤kj′=1,2,3wi′(j′)xi(j)xi¯¯¯¯¯(j)xi¯¯¯¯¯xij′ϕi′j
- "Cortar" vértices . Coloréalos con colores distintos a los anterioress=s0,s1,…,sn,sn+1,…sn+k=t
Los bordes incluyen:
- si−1vi(1) , , ;v i ( k i ) s ivi(j)vi(j+1)vi(ki)si
- ˉ v i ( j ) ˉ v i ( j + 1 ) ˉ v i ( k i ) s isi−1v¯i(1) , , ;v¯i(j)v¯i(j+1)v¯i(ki)si
- y , .w i ′ ( j ′ ) s n + i ′sn+i′−1wi′(j′)wi′(j′)sn+i′
Por ejemplo, a partir de 3CNF
se construye el siguiente gráfico (Las direcciones de los bordes son de izquierda a derecha).
(x1∨x2∨x3¯¯¯¯¯)∧(x1∨x2¯¯¯¯¯∨x3)
Ahora bien, no es difícil ver que el original es 3CNF satisfiable si y sólo si hay una - camino con diferentes colores de los vértices en .t GstG
(Por cierto, es un subproducto que la existencia de ruta - con diferentes colores de vértice en DAG coloreado es . No encontré muchas publicaciones sobre este problema en perspectiva computacional. Si ya sabes, por favor comenta!)t NP-hardstNP-hard
Entonces, ¿cuál es la relación entre el problema de y OP? Intuitivamente, lo que vamos a hacer es diseñar una matriz , de modo que cada color se asigne a una fila (que es una persona), y los bordes se asignen a columnas consecutivas (intervalos de tiempo). Por lo tanto, una programación máxima, que básicamente va de izquierda a derecha en la matriz, corresponde a una ruta - .h s tGhst
Nuestra matriz tiene columnas, con índices que comienzan desde . En el siguiente constrcution un son dos valores satisfacen . Las relaciones pueden ser grandes potencias de y . Deje .2 n + 1 + ∑ i 2 k i + k 0 X Y 1 ≪ X ≪ Y X / 1 , Y / X k n K i = 2 i + 2 ∑ i j = 1 k ih2n+1+∑i2ki+k0XY1≪X≪YX/1,Y/XknKi=2i+2∑ij=1ki
- Para cada , , sea (si la coordenada existe, la misma a continuación). 0 ≤ i ≤ n h ( s i , K i ) = h ( s i , K i - k i - 1 ) = h ( s i , K i + k i + 1 + 1 ) = Ysi0≤i≤nh(si,Ki)=h(si,Ki−ki−1)=h(si,Ki+ki+1+1)=Y
- Para cada , sea ; Para cada , dejar que .h ( x i ( j ) , K i - 1 + j ) = X ¯ x i ( j ) h ( ¯ x i ( j ) , K i - 1 + k i + 1 + j ) = Xxi(j)h(xi(j),Ki−1+j)=Xxi¯¯¯¯¯(j)h(xi¯¯¯¯¯(j),Ki−1+ki+1+j)=X
- Para cada , y una literal en la cláusula , sea . 1 ≤ i ′ ≤ k x ϕ i ′ h ( x , K n + i ′ ) = 1ϕi′1≤i′≤kxϕi′h(x,Kn+i′)=1
- Todas las otras entradas son 0.
Por ejemplo, para el gráfico de ejemplo anterior, la matriz correspondiente es
Ahora afirmamos: el 3CNF original es satisfactoria si y solo si el valor máximo es .(2n+1)Y+∑ikiX+k
Considere la programación logrando el valor máximo. Como hay exactamente columnas en contienen , todas deberían estar cubiertas. Para la columna que tiene dos opciones de , suponga que la programación la asigna a . Como la columna debe asignarse a , por la consecutividad tenemos que perder las columnas a . Lo mismo sucede si la programación asigna la columna a .h Y K i + k i + 1 Y s i K i s i K i + 1 K i + k i K i + k i + 1 s i + 1(2n+1)hYKi+ki+1YsiKisiKi+1Ki+kiKi+ki+1si+1
Por lo tanto, para tener el valor , debemos seleccionar todas las disponibles en la matriz, que corresponde a una asignación de variables. Por lo tanto, el valor de reposo de es alcanzable si y solo si la asignación satisface cada cláusula.X k∑ikiXXk
Como conclusión, la decisión del valor máximo de una programación legal se encuentra en . Quizás es por eso que todos nuestros intentos anteriores de encontrar un algoritmo fallaron.NP-hard