Problema somma sottoinsieme con molte condizioni di divisibilità


28

Sia S un insieme di numeri naturali. Consideriamo S nell'ordine parziale di divisibilità, ovvero . Permetteres1≤s2⟺s1∣s2

α(S)=max{|V|∣V⊆S,V an antichain } .

Se consideriamo il problema della somma dei sottoinsiemi in cui il multiset di numeri è in S , cosa possiamo dire della complessità del problema relativo a α(S) ? È semplice vedere se α(S)=1 , quindi il problema è semplice. Nota che è facile anche per il problema dello zaino più difficile quando α(S)=1† .


† Risolvere problemi sequenziali di zaini di M. Hartmann e T. Olmstead (1993)


1
Invece di "relazione", suggerisco di usare i termini "ordine parziale". Inoltre, con il minimo pensiero, il problema con le monete di Frobenius potrebbe essere rilevante (ovviamente, non sono sicuro, però)
— Aryabhata,

Risposte:


2

Questo problema può essere risolto in tempo polinomiale usando la programmazione lineare, e questo è vero per qualsiasi ordine parziale . A proposito, possiamo indurre per induzione che per qualsiasi insieme di ordine parziale finito ( S , ≤ ) , esiste un insieme finito S ′ ⊆ N e una biiezione f : S → S ′ , tale che per tutti gli s 1 , s 2 ∈ S , s 1 ≤ s 2 ⇔ f ((S,≤)(S,≤)S′⊆Nf:S→S′ .s1,s2∈S,s1≤s2⇔f(s1)|f(s2)

Lasciate l'insieme formato dalle catene in S . Ricorda che C è una catena iff per tutti v , v ′ in C , v ≤ v ′ o v ′ ≤ vCSCv,v′Cv≤v′v′≤v

Ora creare un booleano variabile per ogni v ∈ S , ed un booleano variabile y C per ogni catena C . Possiamo scrivere il seguente programma lineare ( P ) per il nostro problema: Max ∑ v ∈ S x v soggetto a ∑xvv∈SyCC(P)

Max∑v∈Sxvsubject to∑v∈Cxv≤1,∀C∈CXv∈{0,1},v∈S

e il suo doppio :(D)

minΣC∈CyCsoggetto aΣC:v∈CyC≥1,∀v∈SyC∈{0,1},C∈C

Quindi il problema di trovare la copertura minima di un set ordinato per catene è il doppio del nostro problema. Il teorema di Dilworth afferma che

Esiste un antichain A e una partizione dell'ordine in una famiglia P di catene, in modo tale che il numero di catene nella partizione sia uguale alla cardinalità di A

il che significa che la soluzione ottimale di questi due problemi corrisponde: Opt(P)=Opt(D)

Sia ( resp. ( D ∗ ) ) il rilassamento di ( P ) ( resp. ( D ) ), ovvero lo stesso programma lineare in cui tutti i vincoli x v ∈ { 0 , 1 } ( resp. Y C ∈ { 0 , 1 }(P*) (D*)(P) (D)Xv∈{0,1} yC∈{0,1} ) sono sostituiti da ( risp. YXv∈[0,1] ). Sia O p t ( P ∗ ) e O p t ( D ∗ ) le loro soluzioni ottimali. Poiché { 0 , 1 } ⊆ [ 0 , 1 ] abbiamo: O p t ( P ) ≤ O p t ( P ∗ )  e  O p t ( D ∗yC∈[0,1]Opt(P*)Opt(D*){0,1}⊆[0,1] e il teorema della dualità debole stabilisce che O p t ( P ∗ ) ≤ O p t ( D ∗ ) quindi unendo tutto ciò che abbiamo: O p t ( P ) = O p t ( P ∗ ) = O p t ( D ∗ ) = O p t ( D )

Opt(P)≤Opt(P*) e Opt(D*)≤Opt(D)
Opt(P*)≤Opt(D*)
Opt(P)=Opt(P*)=Opt(D*)=Opt(D)

Opt(P*)=Opt(P)XS1,S2∈XS1≤S2S2≤S1X{v1,v2}


XXX

Grazie per aver spiegato perché il numero esponenziale di vincoli non è un problema e la rilevanza della dualità. Molto bella!
— DW
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.