Seja um conjunto de números naturais. Consideramos sob a ordem parcial de divisibilidade, ou seja, . DeixeiS s 1 ≤ s 2
e antichain .
Se considerarmos o problema da soma do subconjunto em que o multiset de números está em , o que podemos dizer sobre a complexidade do problema relacionado a ? É simples ver se , então o problema é fácil. Observe que é fácil mesmo para o problema mais difícil da mochila quando .
Resolvendo problemas seqüenciais da mochila por M. Hartmann e T. Olmstead (1993)
Respostas:
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′⊆N f: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 , ouC S C v,v′ C v≤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:xv v∈S yC C (P)
e seu duplo :(D)
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 :
Then, using Ellipsoid method, we can computeOpt(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.
fonte