Complejidad de tipo topológico con posiciones restringidas

15

Se me da como entrada un DAG de vértices donde cada vértice se etiqueta adicionalmente con algo de .n x S ( x ) { 1 , , n }GnxS(x){1,,n}

Un tipo topológico de es una biyección desde los vértices de a tal que para todos , , si hay una ruta de a en entonces . Deseo decidir si existe un tipo topológico de tal que para todo , .f G { 1 , , n } x y x y G f ( x ) f ( y ) G x f ( x ) S ( x )GfG{1,,n}xyxyGf(x)f(y)Gxf(x)S(x)

¿Cuál es la complejidad de este problema de decisión?

[Notas: Claramente esto está en NP. Si observa el gráfico de pares de vértices / posiciones permitidos, con bordes no dirigidos entre pares que entran en conflicto porque violan el orden, obtendrá un gráfico de camarillas disjuntas donde desea elegir como máximo un par por camarilla, como máximo un par por posición y, como máximo, un par por vértice: parece estar relacionado con la correspondencia tridimensional, pero no puedo ver si aún es difícil con la estructura adicional de este problema específico.]

a3nm
fuente

Respuestas:

9

Creo que este problema es NP-hard. Intento esbozar una reducción de MinSAT. En el problema MinSAT, se nos da un CNF y nuestro objetivo es minimizar el número de cláusulas satisfechas. Este problema es NP-hard, consulte, por ejemplo, http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec

Divida los vértices en dos grupos: algunos representarán literales, las otras cláusulas, por lo que donde es el número de variables del CNF (normalmente denotado por ) es el número de cláusulas. Dirija una arista desde cada vértice literal a la cláusula-vértice donde ocurre. Defina para un vértice literal que representa como (donde es un parámetro arbitrario), entonces y o y . Para cada cláusula-vértice, deje S = \ {v + 1, \ ldots, v + k, 2v + k + 1, \ ldots, n \}v n c S x i { i , i + v + k } k f ( x i ) = i f ( ˉ x i ) = i + v + k f ( ˉ x i ) = i f ( x i ) = i + v + k Sn=2v+cvncSxi{i,i+v+k}kf(xi)=if(x¯i)=i+v+kf(x¯i)=if(xi)=i+v+kS={v+1,,v+k,2v+k+1,,n}, entonces k de los vértices de la cláusula son `` pequeños ''.

Ahora el CNF tiene una tarea donde al menos k cláusulas son falsas si y solo si su problema puede resolverse para la instancia anterior. El problema MinSAT es exactamente para probar si una fórmula CNF φ tiene una asignación que hace que al menos k cláusulas sean falsas, por lo que esto muestra que su problema es NP-hard.

Para ayudarlo a comprender esta reducción, aquí está la intuición: las etiquetas pequeñas ( ) corresponden al valor de verdad Falso, y las etiquetas grandes ( ) corresponden a cierto. Las restricciones para los vértices literales aseguran que cada sea ​​Verdadero o Falso y que tenga el valor de verdad opuesto. Los bordes aseguran que si algún literal es verdadero, todos los vértices de cláusula que lo contienen también se asignan a verdadero. (Por el contrario, si todos los literales en una cláusula se asignan a Falso, entonces esta estructura de gráfico permite asignar al vértice de la cláusula ya sea Falso o Verdadero). Finalmente, la elección de asegura que de los vértices de la cláusula se asigne a Falso y1,2,,v+kv+k+1,,2v+kxixi¯kkckde ellos se les asigna Verdadero. Entonces, si hay un tipo topológico válido de este gráfico, entonces hay una asignación a las variables que hace que al menos de las cláusulas de falsas (todos los vértices de cláusula que se asignaron a Falso, más posiblemente algunos de los los que fueron asignados Verdadero). Por el contrario, si hay una asignación a las variables que hace que al menos de las cláusulas de falsas, entonces hay un tipo topológico válido de este gráfico (rellenamos las etiquetas para los vértices literales de la manera obvia; y para cada cláusula dekφkφφeso es cierto, le damos a su correspondiente cláusula-vértice una etiqueta que corresponde a Verdadero; los otros vértices de cláusula pueden recibir etiquetas correspondientes a un valor de verdad arbitrario).

domotorp
fuente
¡Gracias por tu respuesta! Estoy tratando de entender tu boceto. ¿Te importaría explicar qué es ? k
a3nm
1
@ a3nm: k es un parámetro que se proporciona para la entrada MinSAT.
domotorp
1
@Marzio: SAT no es equivalente a MinSAT con , como en el último problema, requeriríamos que todas las cláusulas sean falsas. Su ϕ no tiene una asignación falsa de todas las cláusulas. Por supuesto, esto no prueba que mi reducción sea correcta ...k=|c|ϕ
domotorp
Esta es una magnífica reducción! @ a3nm, he sugerido una edición de la respuesta para explicar la elegante reducción de domotorp con más detalle; Si se aprueba, con suerte le ayudará a comprender las ideas más claramente.
DW
@domotorp: tienes razón, extrañé completamente lo que es MinSAT. Buena reducción !!!
Marzio De Biasi
2

Tenga en cuenta que si relaja el problema permitiendo que sea ​​arbitraria (no necesariamente biyectiva), entonces se convierte en polinomio. El algoritmo procede de manera similar a la ordenación topológica: numera los vértices uno por uno, manteniendo el conjunto U de vértices sin numerar cuyos vecinos internos han sido numerados. Siempre que sea posible, eliges un vértice x U y lo numeras con el elemento más pequeño de S ( x ) mayor que el número de sus vecinos. No es difícil ver que una instancia ( G , S ) tiene una solución si el algoritmo anterior se ejecuta en ( G ,fUxUS(x)(G,S) termina con todos los vértices numerados.(G,S)

Super0
fuente
Punto justo, esta relajación significa que una heurística codiciosa funciona, y eso es incluso en el caso en que no es el número de vértices sino un valor arbitrario. ¿Estamos de acuerdo en que en el último caso, donde la inyectividad y la surjectividad ya no son equivalentes, necesitaría relajar ambas (y no solo una) para que funcione la heurística codiciosa? n
a3nm
2

Una observación trivial es que si para todas las x , entonces este problema se puede resolver en tiempo polinómico, por reducción a 2SAT.|S(x)|2x

Así es cómo. Introduzca una variable para cada vértice x y cada i tal que i S ( x ) . Para cada par x , y de vértices, si hay una ruta de x a y , obtenemos algunas restricciones: si i S ( x ) , j S ( y ) e i > j , entonces obtenemos la restricción ¬ v x , ivx,ixiiS(x)x,yxyiS(x)jS(y)i>j . La bijectividad nos da otro conjunto de restricciones: para cada par x , y de vértices con x y , si i S ( x ) e i S ( y ) , sumamos ¬ v x , i¬ v y , i . Finalmente, el requisito de que a cada vértice se le debe asignar una etiqueta nos da otro conjunto de restricciones: para cada x , si S (¬vx,i¬vy,jx,yxyiS(x)iS(y)¬vx,i¬vy,ix , obtenemos la restricción v x , iv x , j . (Tenga en cuenta que solo el último conjunto de restricciones explota la promesa de que | S ( x ) |2 para cada x .)S(x)={i,j}vx,ivx,j|S(x)|2x

Me doy cuenta de que esta observación no te ayudará en tu situación particular. Lo siento por eso.

DW
fuente