W rzeczywistości masz już redukcję ze specjalnej na ogólną. Ustawiając , zasadniczo używasz ogólnego algorytmu do rozwiązania specjalnego problemu.s = 0
W drugą stronę (tj. Redukcję z ogólnej do specjalnej):
Załóżmy, że przy danym zestawie a liczba K i trzeba sprawdzić, czy nie jest pewnego podzbioru S które sumuje się do K .S.= { x1, … , Xn}K.S.K.
Teraz chcesz rozwiązać ten problem, biorąc pod uwagę algorytm dla przypadku, w którym możesz określić, czy niektóre podzbiory sumują się do .0
Teraz jeśli , mamy łatwą redukcję: S ′ = { x 1 , x 2 , … , x n , - K } .xja> 0S′={x1,x2,…,xn,−K}
jest podzbiór sumy 0 IFF S ma podzbiór sumie K .S′0SK
Problem występuje, gdy możemy mieć dla niektórych z i .xi≤0i
Możemy założyć, że (dlaczego?).K>0
Załóżmy, że suma pozytywnych jest P i ujemny x i to dotyczy .xiPxiN
Teraz skonstruuj nowy zestaw taki, żeS′={y1,y2…,yn}
gdzie M = P + | N | + K .yi=xi+MM=P+|N|+K
Każdy .yi>0
Teraz uruchom na zestawach algorytm sumy zerowej
S′∪{−(K+M)}
S′∪{−(K+2M)}
S′∪{−(K+3M)}
…
S′∪{−(K+nM)}
Łatwo jest wykazać, że jeśli ma podzbiór sumy K , to co najmniej jeden z powyższych zestawów ma podzbiór sumy zero.SK
Pozostawiam dowód innego kierunku.
i możemy zmienić warunki:
Można to bezpośrednio zastąpić poprzednim równaniem
co daje rozwiązanie pierwotnej instancji problemu ogólnego.
źródło