Este problema se puede resolver en tiempo polinómico usando programación lineal, y esto es realmente cierto para cualquier orden parcial . Por cierto, podemos demostrar por inducción que para cualquier conjunto finito de orden parcial , existe un conjunto finito y una biyección , de modo que para todos .(S,≤)(S,≤)S′⊆Nf:S→S′s1,s2∈S,s1≤s2⇔f(s1)|f(s2)
Let el conjunto formado por las cadenas en . Recuerde que es una cadena iff para todos en , oCSCv,v′Cv≤v′v′≤v
Ahora crear una variable booleana para cada , y una variable booleana para cada cadena . Podemos escribir el siguiente programa lineal para nuestro problema:
xvv∈SyCC(P)
Max∑v∈Sxvsubject to∑v∈Cxv≤1,∀C∈Cxv∈{0,1},v∈S
y su doble :(D)
Min∑C∈CyCsubject to∑C:v∈CyC≥1,∀v∈SyC∈{0,1},C∈C
Entonces, el problema de encontrar la cobertura mínima de un conjunto ordenado por cadenas es el doble de nuestro problema. El teorema de Dilworth establece que
Existe un antichain A, y una partición del orden en una familia P de cadenas, de modo que el número de cadenas en la partición es igual a la cardinalidad de A
lo que significa que la solución óptima de estos dos problemas coincide:Opt(P)=Opt(D)
Sea ( resp. ) la relajación de ( resp. ), es decir, el mismo programa lineal donde todas las restricciones ( resp. ) se reemplazan por ( resp. ). Deje que y sean sus soluciones óptimas. Como tenemos:
y dualidad débil El teorema establece que(P∗) (D∗)(P) (D)xv∈{0,1} yC∈{0,1}xv∈[0,1] yC∈[0,1]Opt(P∗)Opt(D∗){0,1}⊆[0,1]
Opt(P)≤Opt(P∗) and Opt(D∗)≤Opt(D)
Opt(P∗)≤Opt(D∗)luego al poner todo junto tenemos:
Opt(P)=Opt(P∗)=Opt(D∗)=Opt(D)
Luego, usando el método Elipsoide , podemos calcular ( ) en tiempo polinómico. Hay un número exponencial de restricciones, pero existe un oráculo de separación de tiempo polinomial. De hecho, dada una solución , podemos enumerar todas las parejas y verificar si o , y, por lo tanto, decidir en tiempo polinómico si es factible o si la restricción asociada a la cadena se viola.Opt(P∗)=Opt(P)Xs1,s2∈Xs1≤s2s2≤s1X{v1,v2}