NP-dureza de una especialización Set Cover


8

¿El siguiente problema es NP-hard?

Dado un conjunto de números reales (objetivos) x 1 , ... , x N y un "tridente" definido por dos distancias a , b desde el centro del tridente, ¿cuál es el número mínimo K de posiciones p 1 , ... , p K del tridente para cubrir todos los objetivos, es decir, K k = 1 { p k - a , p k , p k + b } { xNx1,,xNabKp1,,pK

k=1K{pka,pk,pk+b}{x1,,xN}.

Obviamente, este es un caso especial del problema de la cubierta del conjunto : considerando todos los conjuntos , con p k{ x n + t n { 1 , , N } , t { a , 0 , - b } }{pka,pk,pk+b}pk{xn+tn{1,,N},t{a,0,b}}representando todas las posiciones potenciales "relevantes", buscamos el número mínimo de conjuntos que cubren el universo . De manera equivalente, podemos representar el problema como un gráfico bipartito de nodos de posición y destino y considerar el problema del conjunto de golpes .{x1,,xN}

Tenga en cuenta que el problema no es NP-duro si el tridente pierde una de sus "puntas": entonces cada objetivo puede cubrirse desde 2 posiciones y cada posición cubre como máximo 2 objetivos, por lo que el gráfico bipartito correspondiente de posiciones y objetivos potenciales es un unión de caminos. En cada ruta es fácil determinar un conjunto de golpes mínimos (es decir, los nodos de posición internos).

¿Pero es el caso del tridente NP-duro?


44
Supongo que esto se podría hacer en tiempo polinómico usando programación dinámica. ¿Has probado eso?
James King

Intenté la programación dinámica, simplemente no tuve ningún éxito con ella. El problema es que las posiciones pueden vincularse entre sí a través de objetivos hasta el final (piense en muchos objetivos con distancias a y b), por lo que cambiar un objetivo puede tener efectos "globales". Esto hace que sea difícil dividir el problema o reducir el caso de un objetivo / posición más al caso anterior. Por otro lado, la naturaleza "local" de cómo se vinculan las posiciones entre sí no permite una reducción fácil de, por ejemplo, establecer la cubierta. Mi sentimiento todavía me dice que el problema es NP-duro, pero no estoy seguro.
Jan Pöschko

1
x1xixi

@ James: Me temo que me falta algo por completo, pero ¿no tienes que distinguir también cuáles de los puntos x_ {i + 1}, ..., x_N están cubiertos "accidentalmente" por los tridentes utilizados hasta ahora?
Tsuyoshi Ito

@ TsuyoshiIto Sí, definitivamente. Solo estaba dando una pequeña pista. Tendría que verificar cosas así al completar las matrices, pero eso debería tomar solo un tiempo constante por punto.
James King

Respuestas:


2

Visión general

kxi

Para demostrar que el problema de la cubierta del tridente numérico es NP-hard, presentamos el siguiente problema intermedio, que llamaremos el problema de la cubierta del triángulo de la cuadrícula:

SZ+×Z+k

TZ×Z|T|kS(x,y)T{(x,y),(x,y+1),(x+1,y)}

k(1,1,2)(x,y)(x,y+1)(x+1,y)

Para mostrar que la cubierta del tridente numérico es NP-hard, proporcionamos dos reducciones: una reducción de Planar 3SAT a la cubierta del triángulo de la cuadrícula y una reducción de la cubierta del triángulo de la cuadrícula a la cubierta del tridente numérico. Juntos, estos se componen en una reducción del problema Planar 3SAT NP-duro al problema de la Cubierta del Tridente Numérico, lo que implica que la Cubierta del Tridente Numérico es NP-duro.

p+q2p+q2(p,q)

Reducción 1: de la cubierta del triángulo de la cuadrícula a la cubierta del tridente numérico.

SZ+×Z+k

x1,...,xNa,bk

Ss1=(p1,q1),s2=(p2,q2),...,s|S|=(p|S|,q|S|)i1N=|S|xi=pi+qi2a=1b=2k=k

Esta reducción es claramente una operación de tiempo polinomial, por lo que lo único que queda por mostrar es que la reducción es preservar la respuesta.

xixixi+axibxiva+vb2vavbva+vb2fp+q2f(va+vb2)=(va,vb)fxisi

p+q2(p+1)+q2p+q2p+(q+1)2f(p,q)(p+1,q)(p,q+1)fSf1f

f{x1,...,x|S|}fS={s1,...,s|S|}={f(x1),...,f(x|S|)}f(1,12)xikSk(1,12)

Reducción 2: de 3SAT plano a la cubierta triangular de cuadrícula.

Para esta reducción, se nos da una instancia de 3SAT en forma de un gráfico bipartito plano. Los vértices en una parte corresponden a variables, y los vértices de la otra parte, cada uno de grado 3, corresponden a cláusulas. Cada borde se etiqueta como positivo o negativo, lo que indica de qué manera la variable se incluye en la cláusula (positiva o negativamente).

(S,k)Sk

Primero describimos un cable. Un cable consiste en una secuencia de un número impar de puntos (en la red de enteros) donde el primero y el último se llaman terminales, de modo que cada par consecutivo puede estar cubierto por un triángulo sin que el triángulo toque ningún otro punto en el cable. Como ejemplo, considere el siguiente cable:

xoo       x
   o       o
   o ooo   o
   o o  oooo
    oo

pp+12

Aquí mostramos las dos formas de cubrir el ejemplo desde arriba (donde dos puntos están etiquetados con el mismo número si están cubiertos por el mismo triángulo):

x11       9
   2       9
   2 556   8
   3 4  6778
    34

o

112       x
   2       9
   3 566   9
   3 5  7788
    44

Una de las preocupaciones es que podríamos querer conectar dos terminales con un cable, pero no podemos hacerlo porque cualquier "cable" entre esos dos terminales tendría una longitud uniforme. Sin embargo, ese no es el caso: siempre podemos elegir una ruta para que un cable tenga una longitud impar (y, por lo tanto, sea un cable válido). Reemplazar cualquier segmento horizontal de cable de longitud 6 con el siguiente segmento de cable de longitud 7 puede arreglar la paridad de la longitud del cable:

oo  oo
  ooo 

A continuación, presentamos un gadget de cláusula. Una cláusula simplemente conecta uno de los terminales de tres cables de tal manera que si uno de los cables está satisfecho de modo que el terminal compartido esté cubierto, entonces el triángulo que cubre ese terminal compartido no cubre ningún punto de los otros cables:

      o
      o
      o
   ooox
       ooo

Para que el terminal compartido esté cubierto, al menos uno de los tres cables debe estar satisfecho de tal manera que los triángulos que satisfacen el cable no cubran el terminal no compartido de los cables.

Finalmente, presentamos el gadget variable. El gadget variable es un gran bucle similar a un cable (de longitud uniforme) con terminales opcionales que se producen a los lados cada tres filas de la siguiente manera:

oo
o o
o ox
o o
o o
o ox
o o
o o
o ox
o o
o o
o ox
o o
 oo

La variable puede crecer verticalmente para acomodar la cantidad necesaria de terminales. Las terminales en filas de paridad par corresponden a ocurrencias positivas de la variable y aquellas en filas de paridad impar corresponden a ocurrencias negativas. Al igual que con el cable, los puntos no terminales del gadget variable pueden satisfacerse utilizando la cantidad mínima de triángulos (la mitad de la cantidad de puntos en el bucle) exactamente de dos maneras. Esos dos ajustes cubren todos los terminales de ocurrencia positiva o todos los terminales de ocurrencia negativa del gadget variable.

Poner todo junto es bastante obvio: construimos el gráfico bipartito usando gadgets variables, gadgets de cláusula (terminales compartidos) y cables que conectan los terminales. El número total de triángulos necesarios para cubrir los puntos no terminales de los cables y las variables es el número objetivo de triángulos.

Claramente, no podemos cubrir toda la cuadrícula con menos triángulos. Además, podemos estar seguros de que los puntos no terminales están cubiertos, ya que las variables y los cables se satisfarán de una de las dos formas descritas. Por lo tanto, la única tarea es satisfacer los terminales.

En cada variable, el dispositivo variable satisfará todos los terminales de ocurrencia positivos o negativos. Los otros terminales en el dispositivo deben ser satisfechos por sus cables conectados. Entonces, los terminales de la cláusula pueden satisfacerse si y solo si cada cláusula está conectada a al menos un cable cuyo otro terminal ya no utilizó el cable (un cable cuyo otro terminal fue satisfecho por su dispositivo variable adjunto). En otras palabras, todos los terminales están satisfechos si y solo si la asignación de variables de acuerdo con la configuración de los gadgets de variables satisface todas las cláusulas.

Como puede ver, la instancia de Grid Triangle Cover producida es una instancia yes si y solo si la instancia de entrada Planar 3SAT es una instancia yes. Dado que esta reducción también es tiempo polinómico (todos los gadgets requieren un espacio polinómico en el tamaño de la instancia de entrada), concluimos que tenemos una reducción válida.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.