¿Cuál es la complejidad del siguiente problema?
Entrada :
- un camino hamiltoniano en
- un subconjunto de pares de vértices
- un entero positivo
Consulta : ¿hay una M coincidente tal que para cada ( v , u ) ∈ R , d G ( v , u ) ≤ k ?
(donde G = ( [ n ] , M ∪ H ) )
He estado discutiendo con un amigo sobre este problema. Mi amigo piensa que el problema está en el tiempo polinómico. Creo que es NP-completo.
Respuestas:
Esta respuesta es incorrecta .
Tu amigo tiene razón. Su problema (tal como lo interpreta Sasho) no impone ninguna restricción a la cardinalidad de la coincidente . Por lo tanto, elegir C ser un juego entre los pares en R . Entonces, para cualquier entero positivo k , la distancia entre cada par en R es menor que k .C C R k R k
Su problema se vuelve interesante si se fuerza caminos para tener bordes tanto de la coincidencia de y la trayectoria P .C PAG
fuente
ACTUALIZACIÓN: la respuesta a continuación no es correcta, porque supuse erróneamente que la ruta hamiltoniana está en un gráfico arbitrario, no en . Lo dejo sin borrar, tal vez pueda arreglarlo o dará algunas pistas para otra respuesta.Knorte
Creo que es NP-completo. Esta es una idea de reducción muy informal / rápida de 3SAT
Para todas las variables añadir un "artilugio variable" con:Xyo
Agregue un nodo de origen y conéctelo a todas las variables X i .S Xyo
Para cada cláusula agregue un nodo C j y conéctelo a las variables correspondientes + X i o - X i que forman la cláusula.Cj Cj + Xyo - Xyo
La siguiente imagen representa:( + x1∨ - x2∨ - x3) ∧ ( - x2∨ x3∨ x4 4)
El conjunto (nodos que deben ser vinculados) contiene ( S , C 1 ) , ( S , C 2 ) , . . .R ( S, C1) , ( S, C2) , . . .
La ruta simple debe incluir todos los bordes "AZUL" excepto los bordes variables ( X i , + X i ) y ( X i , - X i ) (en la imagen de arriba los bordes azules representan los bordes que incluimos en P ).PAG ( Xyo, + Xyo) ( Xyo, - Xyo) PAG
En este punto, la fórmula inicial es satisfactoria si y solo si la ruta más corta desde hasta cada nodo de la cláusula C j no es mayor que tres. De hecho, para alcanzar una cláusula desde S en tres pasos, debemos atravesar al menos una variable X i : S → X i → ± X i → C j . Por lo tanto, debemos atravesar uno de los dos bordes: X i → + X i o X i → - X i ) e incluirlo en CS Cj S Xyo S→ Xyo→ ± Xyo→ Cj Xyo→ + Xyo Xyo→ - Xyo) C (porque por construcción no es parte de ). Pero no se pueden incluir ambos, porque comparten un vértice.PAG
Pero no estamos seguros de poder construir una ruta simple que incluya todos los bordes azules porque algunos nodos tienen más de un borde azul incidente.PAG
Para solucionar esto, reemplazamos cada nodo con múltiples bordes azules incidentes, con un árbol que contiene solo pares de bordes azules incidentes que se incluirán en y bordes que los separan y que deberían incluirse en C para llegar a los nodos de la cláusula:PAG C
El gráfico original se convierte en:
fuente