Masalah ini dapat diselesaikan dalam waktu polinomial menggunakan pemrograman linier, dan ini sebenarnya berlaku untuk urutan parsial apa pun . Ngomong-ngomong, kita dapat membuktikan dengan induksi bahwa untuk setiap set urutan parsial terbatas (S, \ le) , terdapat himpunan terhingga S '\ subseteq \ mathbb {N} dan sebuah bijection f: S \ rightarrow S' , sehingga untuk semua s_1, s_2 \ dalam S, s_1 \ le s_2 \ Leftrightarrow f (s_1) | f (s_2) .( S , ≤ ) S ′ ⊆ N f : S → S ′ s 1 , s 2 ∈ S , s 1 ≤ s 2 ⇔ f ( s 1 ) | f ( s 2 )(S,≤)(S,≤)S′⊆Nf:S→S′s1,s2∈S,s1≤s2⇔f(s1)|f(s2)
Mari adalah himpunan yang dibentuk oleh rantai di . Ingatkan bahwa adalah sebuah rantai iff untuk semua dalam , atau S C v , v ′ C v ≤ v ′ v ′ ≤ vCSCv,v′Cv≤v′v′≤v
Sekarang membuat variabel boolean untuk setiap , dan variabel boolean untuk setiap rantai . Kita dapat menulis program linear berikut untuk masalah kita:
v ∈ S y C C ( P ) Max Σ v ∈ S x v tunduk Σ v ∈ C x v ≤ 1 , ∀ C ∈ Cxvv∈SyCC(P)
Max∑v∈Sxvsubject to∑v∈Cxv≤1,∀C∈Cxv∈{0,1},v∈S
dan dual :(D)
Min∑C∈CyCsubject to∑C:v∈CyC≥1,∀v∈SyC∈{0,1},C∈C
Maka masalah menemukan penutup minimum dari rangkaian yang diatur oleh rantai adalah dua dari masalah kita. Teorema Dilworth menyatakan itu
Ada antichain A, dan partisi ordo menjadi keluarga P rantai, sehingga jumlah rantai dalam partisi sama dengan kardinalitas A
yang berarti bahwa solusi optimal dari kedua masalah ini cocok:Opt(P)=Opt(D)
Misalkan ( resp. ) menjadi pelonggaran ( resp. ) yaitu program linier yang sama di mana semua kendala ( resp. ) diganti oleh ( resp. ). Biarkan dan menjadi solusi optimal mereka. Karena kita memiliki:
dan lemahnya kualitas teorema menetapkan bahwa(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∗)maka dengan menyatukan semuanya kita memiliki:
Opt(P)=Opt(P∗)=Opt(D∗)=Opt(D)
Kemudian, menggunakan metode Ellipsoid , kita dapat menghitung ( ) dalam waktu polinomial. Ada sejumlah kendala eksponensial tetapi ada oracle pemisahan waktu polinomial. Memang diberi solusi , kami dapat menghitung semua pasangan dan memeriksa apakah atau , dan karenanya memutuskan dalam waktu polinomial apakah layak atau kendala yang terkait dengan rantai dilanggar.= O p t ( P ) X s 1 , s 2 ∈ X s 1 ≤ s 2 s 2 ≤ s 1 X { v 1 , v 2 }Opt(P∗)=Opt(P)Xs1,s2∈Xs1≤s2s2≤s1X{v1,v2}