Editar: Primero formulé mal mi restricción (2), ahora está corregida. También agregué más información y ejemplos.
Con algunos colegas, estudiando alguna otra pregunta algorítmica, pudimos reducir nuestro problema al siguiente problema interesante, pero no pudimos resolver la cuestión de su complejidad. El problema es el siguiente.
Instancia: un entero , un entero , y un conjunto de n pares del conjunto \ {1, \ ldots, n \} .k < n S = { { s 1 , t 1 } , ... , { s n , t n } } n { 1 , ... , n }
Pregunta: ¿Existe un conjunto de tamaño tal que para cada elemento de :
(1) si , el intervalo es incluido en algún intervalo definido por un par en , y
(2) al menos uno de , pertenece a algún par de ?
(2) pertenece a un par de .
Ejemplo
El conjunto es una solución factible (suponiendo que sea par): el par asegura la condición (1), mientras que todos los otros pares aseguran la condición (2).
Observaciones
(I) Dado que cada par contiene exactamente dos elementos, para cumplir la condición (2), necesitamos al menos pares. Por cierto, esto implica una aproximación trivial 2 al devolver la S completa , ya que suponemos .
(II) Otra forma de ver el problema es considerar una escalera con pasos (como el siguiente ), junto con un conjunto de ciclos de la escalera. Cada escalón de la escalera corresponde a algún elemento, y cada borde lateral es un intervalo . Un ciclo incluyendo los pasos corresponde exactamente a un par : cubre todos los intervalos consecutivos entre y , y que se detenga en ambos y .
La pregunta es entonces si hay un conjunto de ciclos cuya unión cubre todos los bordes de la escalera (incluidos los bordes de los escalones y los bordes laterales).
(III) Si uno preguntara solo por la condición (1), el problema correspondería al problema del conjunto dominante en algún gráfico de intervalos definido a partir de los intervalos dados por los pares de junto con pequeños intervalos adicionales para cada en . Este problema tiene solución clásica en tiempo lineal (ver, por ejemplo, aquí ). Del mismo modo, si uno solo solicitara la condición (2), esto podría reducirse al problema de la cobertura del borde (los vértices son los elementos, los bordes son los pares), que también se puede resolver en tiempo polinómico mediante un enfoque de coincidencia máxima.S [ i + ϵ , i + 1 - ϵ ] i { 1 , … , n - 1 }
Entonces mi pregunta está en el título:
¿Es este problema en P? ¿Es NP-completo?
Cualquier referencia a un problema similar es bienvenida.
fuente
Respuestas:
Aunque esto no resuelve la pregunta que plantea, algunos de los comentarios anteriores consideran algoritmos de aproximación. FWIW, creo que un PTAS (esquema de aproximación poli-tiempo) es posible usando programación dinámica. Aquí está la idea.
Dada cualquier instancia y , cree una solución de la siguiente manera. Marque cada vértice . Para cada vértice marcado , de todos los bordes que "abarcan" (es decir, que satisfacen la restricción (1) para ), elija un borde que minimice y uno queϵ>0 (1/ϵ) i (j,k) i i j k 2ϵn
minimicemaximice . Agregue estos bordes a la solución.( 1 / ϵ ) i ( j , k ) i i j k 2 ϵ nEstos bordes satisfacen las restricciones de tipo (1) para muchos de los vértices. Mientras tanto, contribuyen con edge a la solución, que es solo . Para finalizar, encontraremos una solución óptima al problema restante de encontrar un conjunto de aristas que cumpla con todas las restricciones restantes de tipo (1) y tipo (2).O ( ϵ OPT )2nϵ O(ϵOPT)
Defina un "bloque" de vértices como un conjunto de vértices consecutivos cuyas restricciones de tipo (1) se cumplan con los bordes agregados hasta el momento. Entre dos bloques consecutivos, hay una secuencia de vértices cuyas restricciones de tipo (1) no se cumplen. (Cualquier secuencia de este tipo tiene una longitud como máximo de , porque los vértices marcados tienen sus restricciones de tipo (1) cumplidas por los bordes ya agregados). un barrio a su izquierda y un barrio a su derecha).1/ϵ
Dentro de cada vecindario, para cada vértice en el vecindario, cada borde que sale del vértice se extiende a lo más (porque el borde no abarca ningún vértice marcado). Por lo tanto, el vértice tiene grado como máximo . Por lo tanto, cada vecindario tiene como máximo vértices y toca como máximo bordes. Llame a cualquier subconjunto de esos bordes una "configuración" del vecindario. Si una configuración cumple con todas las restricciones de tipo (1) y tipo (2) para los vértices en el vecindario, llame a la configuración "válida".1 / ϵ 1 / ϵ 1 / ϵ 21/ϵ 1/ϵ 1/ϵ 1/ϵ2
Para cada bloque , para cada par de configuraciones válidas de los dos vecindarios del bloque, calcule (en tiempo polinómico, utilizando la coincidencia máxima, etc.), el tamaño mínimo de cualquier conjunto de aristas (si existe) de tal manera que las aristas en cumplan las restricciones de tipo (2) para los vértices en el bloque. Como hay a lo sumo configuraciones, esto se puede hacer en tiempo polinómico (para eps fijos). ( C i , C i + 1 ) F i ( C i , C i + 1 ) S C i ∪ S ∪ C i + 1 2 1 / ϵ 2 = O ( 1 )i (Ci,Ci+1) Fi(Ci,Ci+1) S Ci∪S∪Ci+1 21/ϵ2=O(1)
Ahora puede resolver la instancia original encontrando una secuencia de configuraciones válidas, una para cada vecindario, que minimiza , donde es como se define en el párrafo anterior. Esto se puede hacer encontrando una ruta más corta en el gráfico formado por todas las configuraciones válidas, con un borde de costo desde cada configuración para el vecindario a cada configuración para el vecindario . (Este gráfico tiene un tamaño , que es para fijo ).∑ i | D i | + F i ( D i , D i + 1 ) F i | D i | + F i ( D i , D i + 1 ) D i i D i + 1 i + 1 O ( 2 1D1,D2,..,Dk ∑i|Di|+Fi(Di,Di+1) Fi |Di|+Fi(Di,Di+1) Di i Di+1 i+1 O(n)ϵO(21/ϵ2n) O(n) ϵ
fuente