Tengo un problema y supongo que es NP-hard, pero no puedo probarlo.
Aquí hay un gráfico de capas, donde la capa 0 es la capa más alta y la capa L la más baja.
hay un borde dirigido entre capas, donde un borde (A, B) indica que el nodo A puede [cubrir] el nodo B. Y cuando A puede cubrir B, cada nodo en cualquier camino de A a B puede cubrir B, B puede cubrir sí mismo.
Finalmente aquí viene un conjunto de nodos S. Necesito elegir otro conjunto de nodos ANS, y asegurarme de que para cada nodo q en S, exista un nodo p en ANS y p cubra q.
Para cada nodo hay un costo, y necesito hacer que el costo total de establecer ANS sea mínimo.
¿Es este un problema NP-difícil? Creo que sí, pero no puedo demostrarlo.
¿Usted me podría ayudar?
Muchas gracias.
Respuestas:
Sí, este problema es definitivamente NP difícil. Estoy publicando esta respuesta ya que requiere prueba.
Si sigue este enlace http://en.wikipedia.org/wiki/Set_cover_problem , dice que la versión de optimización del problema de cobertura de conjunto mínimo es NP-Hard.
El problema en el enlace:
Puede relacionar esto con su problema de la siguiente manera:
S es el conjunto de nodos que cubren al menos un nodo en su conjunto de entrada. Esto se puede encontrar realizando un DFS en los nodos del conjunto de entrada con la dirección de los bordes invertidos.
Ahora, el problema descrito en el enlace es un caso especial de su problema, donde el costo de cada nodo es igual y solo desea minimizar el número de nodos (conjuntos).
Por lo tanto, su problema es aún más difícil de resolver en el caso general y, por lo tanto, es NP Hard.
fuente
S
. Tal vez hay costos negativos o algo así ...