Dieses Problem kann in Polynomialzeit durch lineare Programmierung gelöst werden, und dies gilt tatsächlich für jede Teilordnung (S,≤) . Übrigens können wir durch Induktion beweisen, dass es für jede endliche Teilordnungsmenge (S,≤) eine endliche Menge S′⊆N und eine Bijektion f:S→S′ , so dass für alle s1,s2∈S,s1≤s2⇔f(s1)|f(s2) .
Sei C die Menge, die durch die Ketten in S . Denken Sie daran, dass C eine Kette iff für alle v,v′ in C , v≤v′ oder v′≤v
Erstellen für jedes eine boolesche Variable für jede Kette eine boolesche Variable . Wir können das folgende lineare Programm für unser Problem schreiben :
xvv∈SyCC(P)
Max∑v∈Sxvsubject to∑v∈Cxv≤1,∀C∈Cxv∈{0,1},v∈S
und sein Dual :(D)
Min∑C∈CyCsubject to∑C:v∈CyC≥1,∀v∈SyC∈{0,1},C∈C
Dann ist das Problem, die minimale Deckung eines bestellten Satzes durch Ketten zu finden, das Doppelte unseres Problems. Der Satz von Dilworth besagt das
Es gibt eine Antikette A und eine Aufteilung der Ordnung in eine Familie P von Ketten, so dass die Anzahl der Ketten in der Aufteilung der Kardinalität von A entspricht
was bedeutet, dass die optimale Lösung dieser beiden Probleme übereinstimmt:Opt(P)=Opt(D)
Sei ( bzw. ) die Relaxation von ( bzw. ), dh dasselbe lineare Programm, in dem alle Bedingungen ( bzw. ) werden durch ( bzw. ) ersetzt. Sei und ihre optimale Lösung. Seit wir:
und schwache Dualität Theorem legt fest, dass(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∗)dann, indem wir alles zusammensetzen, haben wir:
Opt(P)=Opt(P∗)=Opt(D∗)=Opt(D)
Dann können wir mit der Ellipsoidmethode ( ) in Polynomzeit berechnen. Es gibt eine exponentielle Anzahl von Einschränkungen, aber es gibt ein Polynom-Zeittrennungs-Orakel. In der Tat können wir bei gegebener Lösung alle Paare aufzählen und prüfen, ob oder , und daher in polynomieller Zeit entscheiden, ob durchführbar ist oder auf andere Weise die mit der Kette verbundene Beschränkung ist verletzt.Opt(P∗)=Opt(P)Xs1,s2∈Xs1≤s2s2≤s1X{v1,v2}