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¯¯¯¯¯kkc−kde 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).