Esse problema pode ser resolvido em tempo polinomial usando programação linear, e isso é verdade para qualquer ordem parcial . A propósito, podemos provar por indução que, para qualquer conjunto de ordens parciais finitas , existe um conjunto finito e uma bijeção , de modo que para todos .(S,≤)(S,≤)S′⊆Nf:S→S′s1,s2∈S,s1≤s2⇔f(s1)|f(s2)
Vamos ser o conjunto formado pelas cadeias em . Lembre que é uma cadeia iff para todos os em , ouCSCv,v′Cv≤v′v′≤v
Agora criar uma variável booleana para cada , e um variável booleana para cada cadeia . Podemos escrever o seguinte programa linear para o nosso problema:
xvv∈SyCC(P)
Max∑v∈Sxvsubject to∑v∈Cxv≤1,∀C∈Cxv∈{0,1},v∈S
e seu duplo :(D)
Min∑C∈CyCsubject to∑C:v∈CyC≥1,∀v∈SyC∈{0,1},C∈C
Então, o problema de encontrar a cobertura mínima de um conjunto ordenado por cadeias é o dual do nosso problema. O teorema de Dilworth afirma que
Existe um antichain A e uma partição da ordem em uma família P de cadeias, de modo que o número de cadeias na partição seja igual à cardinalidade de A
which means that the optimal solution of these two problems match : Opt(P)=Opt(D)
Let (P∗) (resp. (D∗)) be the relaxation of (P) (resp. (D)) i.e. the same linear program where all constraints xv∈{0,1} (resp. yC∈{0,1}) are replaced by xv∈[0,1] (resp. yC∈[0,1]). Let Opt(P∗) and Opt(D∗) be their optimal solutions. Since {0,1}⊆[0,1] we have :
Opt(P)≤Opt(P∗) and Opt(D∗)≤Opt(D)
and weak duality theorem establishes that
Opt(P∗)≤Opt(D∗) then by putting everything together we have :
Opt(P)=Opt(P∗)=Opt(D∗)=Opt(D)
Then, using Ellipsoid method, we can compute Opt(P∗) ( =Opt(P)) in polynomial time. There are an exponential number of constraints but there exists a polynomial time separation oracle. Indeed given a solution X, we can enumerate all couples s1,s2∈X and check if s1≤s2 or s2≤s1, and therefore decide in polynomial time whether X is feasible or otherwise the constraint associated to the chain {v1,v2} is violated.