Jak mogę zmniejszyć sumę podzbiorów do partycji?


Odpowiedzi:


19

Niech będzie instancją sumy podzbioru, gdzie L jest listą (multiset) liczb, a B jest sumą docelową. Niech S = Σ L . Niech L ' jest lista utworzona przez dodanie S + B , 2 S - B do L .(L,B)LBS=LLS+B,2SBL

(1) Jeżeli istnieje podlista sumująca się do B , wówczas L można podzielić na dwie równe części: M { 2 S - B } i L M { S + B } . Rzeczywiście, pierwsza część sumuje się do B + ( 2 S - B ) = 2 S , a druga do ( S - B ) + ( S + BMLBLM{2SB}LM{S+B}B+(2SB)=2S .(SB)+(S+B)=2S

(2) W przypadku mogą być podzielone na dwie równe części P 1 , P 2 , to nie ma podmenu L sumowania do B . Rzeczywiście, ponieważ ( S + B ) + ( 2 S - B ) = 3 S, a każda część sumuje się do 2 S , dwa elementy należą do różnych części. Bez utraty ogólności, 2 S - B P 1 . Reszta elementów w P 1 należy doLP1,P2LB(S+B)+(2SB)=3S2S2SBP1P1 i suma B .LB


2
Ale średnia problemem podzbiorem sumy wykorzystuje wszystkie liczby całkowite i rozdzielono problemowe zastosowanie tylko nieujemne liczby całkowite ...
gukoff

SUBSET-SUM jest NP-zupełny nawet z liczbami całkowitymi nieujemnymi, na przykład redukcja z 3SAT kończy się liczbami całkowitymi nieujemnymi. Prawdopodobnie istnieje również bezpośrednie zmniejszenie liczby całkowitej SUBSET-SUM do nieujemnej liczby całkowitej SUBSET-SUM.
Yuval Filmus,

1
Tak, wiem i ta redukcja jest bardzo łatwa. Wystarczy zauważyć, że nie jest to suma podzbioru w jego „domyślnej” formie. :)
gukoff,

Czy to też zadziałałoby, gdyby ToL{B,S-B}? jako| {B,S-B}| =B, jak| L| =BLL{B,SB}|{B,SB}|=B|L|=B
Ciekawy

1
@ Issam Nie byłoby, to instancja PARTITION zawsze miałaby rozwiązanie . L,{B,SB}
Yuval Filmus

1

Odpowiedź wymieniona przez @Yuval Filmus jest niepoprawna (jest poprawna TYLKO, jeśli nie ma ujemnych liczb całkowitych). Rozważ następujący multiset:

{5,2,2,2,2,2}

a docelowa suma to . Wiemy, że nie ma podzbioru. Teraz tworzymy instancję dla problemu z partycją. Dwa nowe dodane elementy to 2 σ - t = 12 i σ + t = 3 . Multiset ma teraz: { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 }, a całkowita suma wynosi 20 .22σt=12σ+t=3

{5,2,2,2,2,2,3,12}
20

Problem partycji rozwiązuje odpowiedź, podając podzbiór Tutaj 2 nowe elementy znajdują się w tym samym podzbiorze (nie ma innego sposobu podziału na połowę sumy). Jest to zatem przykład przeciwny. Prawidłowa odpowiedź jest następująca:

{2,2,2,2,2}

Dodaj element, którego wartość wynosi . Łączna suma multisetu wynosi teraz 2 t . Rozwiąż problem z partycją, który da 2 podzbiory sumy t . Tylko jedna partycja będzie zawierać nowy element. Wybieramy drugą partycję, której suma wynosi t, i rozwiązaliśmy problem podzestawu, redukując go do problemu partycji. To wyjaśnia link .2tσ2ttt


1
Ale, jak mówi Yuval w komentarzu do swojej odpowiedzi, suma podzbiorów jest NP- zupełna, nawet jeśli ograniczymy się do dodatnich liczb całkowitych. Możemy więc założyć, że nie ma liczb ujemnych.
David Richerby

1
Tak, zgadzam się, suma podzbiorów jest NP-zupełna nawet w przypadku dodatnich liczb całkowitych. Właśnie przedstawiłem pełniejszy dowód na liczbę całkowitą.
Rohit Kumar Jena

1
„Po prostu dostarczenie pełniejszego dowodu”, a także błędne twierdzenie, że istniejąca odpowiedź jest nieprawidłowa.
David Richerby,

1
Jest niepoprawny w tym sensie, że nie działa dla ujemnych liczb całkowitych. :) Pokój :)
Rohit Kumar Jena

1

Oto prosty dowód:

P1,P2|X|

XtX=X{s2t}s=xXx

  • (SXt=xSx

    st=xS{s2t}x,
    st=xX(S{s2t})x
    S{s2t}X(S{s2t})X

  • (P1,P2XxP1x=xP2xP1P2X

    s2t+xP1x=xP2x
    s2t+xP1x+xP1x=xP2x+xP1x=s
    s2t+2xP1x=s
    xP1x=t

t=xSxP1=S{s2t}P2=X(S{s2t})P1,P2t=xP1{s2t}xf:(X,t)X(X,t)X=f(X,t)


0

Podzbiór Suma:

Dane wejściowe: {a1, a2, ..., am} st M = {1..m} i ai są nieujemnymi liczbami całkowitymi, a S⊆ {1..k} i Σai (i∈S) = t

Przegroda:

Dane wejściowe: {a1, a2, ..., am} i S⊆ {1, · · ·, m} st Σai (i∈S) = Σaj (j∉S)

Partycja N Dowód: jeśli prover zapewnia partycje (P1, P2) dla weryfikatora, weryfikator może łatwo obliczyć sumę P1 i P2 i sprawdzić, czy wynik wynosi 0 w czasie liniowym.

NP_Hard: SubsetSum ≤p PARTITION

Niech x będzie wejściem SubsetSum i x = 〈a1, a2, ..., am, t〉 i Σai (i od 1 do m) = a

Przypadek 1: 2t> = a:

Niech f (x) = 〈a1, a2, ..., am, am + 1〉 gdzie am + 1 = 2t − a

Chcemy pokazać, że x∈SubsetSum ⇔ f (x) ARTPARTITION

więc istnieją S⊆ {1, ..., m} st T = {1..m} - S i Σai (i∈T) = at

i Niech T '= {1 ... m, m + 1} - S więc Σaj (j∈T') = a-t + 2t-a = t

czyli dokładnie Σai (i∈S) = t i pokazuje f (x) ARTPARTITION

teraz Pokażemy również, że f (x) ARTPARTITION ⇔ x∈SubsetSum

więc istnieją S⊆ {1, ..., m, m + 1} st T = {1, ..., m, m + 1} - S i Σai (i∈T) = [a + (2t-a ) -t] = t

i pokazuje Σai (i∈T) = Σaj (j∈S), więc m + 1∈T i S⊆ {1, · · ·, m} i Σai (i∈S) = t

więc x∈SubsetSum

Przypadek 2: 2t = <a :

możemy to sprawdzić, ale tym razem am + 1 to − 2t


-3

ten link ma dobry opis zarówno redukcji, podziału na sumę częściową, jak i sumy częściowej na partycję. Myślę, że jest to bardziej oczywiste niż odpowiedź YUVAL . przydatny link


4
Nie publikuj odpowiedzi zawierających tylko linki. Jeśli treść linku zmieni się lub stanie się niedostępna, Twoja odpowiedź stanie się bezużyteczna. Zmień swoją odpowiedź tak, aby była użyteczna, nawet jeśli link jest niedostępny (na przykład przekształcenie treści własnymi słowami i podanie linku jako źródła i źródła).
Tom van der Zanden
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.