Як я можу зменшити суму підмножини до розділу?


21

Можливо, це досить просто, але у мене є певні проблеми, щоб отримати це зменшення. Я хочу зменшити суму підмножини до розділу, але в даний час я не бачу зв'язку!

Чи можна зменшити цю проблему за допомогою зменшення Левіна?

Якщо ви не розумієте, пишіть для пояснення!

Відповіді:


19

Нехай - екземпляр підмножини, де L - список (мультисети) чисел, а B - цільова сума. Нехай S = Σ L . Нехай L ' - список, утворений додаванням S + B , 2 S - B до L(L,B)LBS=LLS+B,2SBL .

(1) Якщо є підпис підсумків до B , то L ' можна розділити на дві рівні частини: M { 2 S - B } і L M { S + B } . Дійсно, перша частина дорівнює B + ( 2 S - B ) = 2 S , а друга - ( S - B ) + ( S + BMLBLM{2SB}LM{S+B}B+(2SB)=2S .(SB)+(S+B)=2S

(2) Якщо може бути розділена на дві рівні частини P 1 , P 2 , тобто подсписок L підсумовуванням до B . Дійсно, оскільки ( S + B ) + ( 2 S - B ) = 3 S і кожна частина дорівнює 2 S , два елементи належать до різних частин. Без втрати загальності, 2 S - B P 1 . Решта елементів P 1 належатьLP1,P2LB(S+B)+(2SB)=3S2S2SBP1P1 і сума до B .LB


2
Але стандартна проблема підмножини використовує всі цілі числа, а проблема розділів використовує лише негативні цілі числа ...
gukoff

SUBSET-SUM є NP-повним навіть з негативними цілими числами, наприклад, зменшення від 3SAT закінчується невід'ємними цілими числами. Також, ймовірно, існує пряме скорочення від цілого числа SUBSET-SUM до невід'ємного цілого числа SUBSET-SUM.
Yuval Filmus

1
Так, я знаю, і це зменшення дуже легко. Просто зазначивши, що це не сума підмножини у формі "за замовчуванням". :)
gukoff

Це також спрацює, якби ЄL{B,S-B}? як| {B,S-B}| =В, як| L| =ВLL{B,SB}|{B,SB}|=B|L|=B
Цікаво

1
@Issam Як ні, цей екземпляр PARTITION завжди матиме рішення . L,{B,SB}
Yuval Filmus

1

Відповідь, яку згадував @Yuval Filmus, є невірною (вона правильна ТІЛЬКИ, якщо немає негативних цілих чисел). Розглянемо наступний мультисет:

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

а цільова сума . Ми знаємо, що немає підмножини. Тепер ми побудуємо екземпляр для проблеми з розділами. Два нових доданих елемента - 2 σ - t = 12 і σ + t = 3 . Зараз мультисети: { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 } і загальна сума 2022σt=12σ+t=3

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

Проблема розділів вирішує відповідь, що дає підмножину Тут два нові елементи знаходяться в одному підмножині (іншого способу розділити на половину суми немає). Отже, це протилежний приклад. Правильна відповідь така:

{2,2,2,2,2}

Додайте елемент, значення якого . Загальна сума мультисети зараз становить 2 т . Вирішіть задачу про розділи, яка дасть 2 підмножини суми t . Тільки один з розділів буде містити новий елемент. Ми вибираємо інший розділ, сума якого дорівнює t, і ми вирішили задану підмножину, зменшивши її до проблеми з розділами. Це пояснює посилання .2tσ2ttt


1
Але, як каже Юваль у коментарі до своєї відповіді, підмножина суми NP є незавершеною, навіть якщо ми обмежимось натуральними числами. Тож можна припустити, що від’ємних чисел немає.
Девід Річербі

1
Так, я згоден, сума підмножини є NP-повною навіть у випадку натуральних чисел. Я просто надав більш повний доказ для будь-якого цілого числа.
Рохіт Кумар Йєна

1
"Просто надання більш повного доказу", а також помилково стверджуючи, що наявна відповідь є невірною.
Девід Річербі

1
Це неправильно в тому сенсі, що це не працює для від'ємних цілих чисел. :) Мир :)
Рохіт Кумар Йєна

1

Ось прямий доказ:

Неважко помітити, що SET-PARTITION можна перевірити в поліноміальний час; задавши розділ P1,P2 просто підсумовуйте обидві і переконайтеся, що їх суми рівні одна одній, що, очевидно, перевірка поліноміального часу (адже підсумовування є поліноміальною операцією, і ми виконуємо лише щонайбільше |X| безліч підсумків).

Основа доказу полягає в тому, щоб зменшити ПІДСУМКУ до ЧАСТИНИ; з цією метою заданий набір X і значення t (запит підмножини) формуємо новий набір X=X{s2t} де s=xXx . Щоб побачити, що це зменшення:

  • () припустимо, що існує деякий SX такий, що t=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

Hence from a solution t=xSx we can form a parition P1=S{s2t}, P2=X(S{s2t}) and conversely from a partition P1,P2 we can form a soltuion t=xP1{s2t}x and therefore the mapping f:(X,t)X is a reduction (because (X,t) is in the language/set SUBSETSUM X=f(X,t) is in the language/set PARTITION) and it is clear to see that the transformation was done in polynomial time.


0

Subset Sum:

Input: {a1,a2,...,am} s.t M={1..m} and ai are non negative integer and S⊆{1..k} and Σai(i∈S) = t

Partition:

Input: {a1,a2,...,am} and S⊆ {1,· · ·,m} s.t Σai(i∈S) = Σaj(j∉S)

Partition Np Proof: if prover provides a partitions(P1,P2) for verifier, verifier can easily calculate the sum of P1 and P2 and check if the result is 0 in linear time.

NP_Hard: SubsetSum ≤p PARTITION

Let x be input of SubsetSum and x=〈a1,a2,...,am,t〉 and Σai(i from 1 to m) = a

Case1: 2t >= a:

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

We want to show that x∈SubsetSum ⇔ f(x)∈PARTITION

so there exist S⊆ {1,...,m} s.t T = {1..m} - S and Σai(i∈T) = a-t

and Let T' = {1...m,m+1} - S so Σaj(j∈T') = a-t+2t-a = t

which is exactly Σai(i∈S)= t and it shows f(x)∈PARTITION

now We also will show that f(x)∈PARTITION ⇔ x∈SubsetSum

so there exist S⊆ {1,...,m,m+1} s.t T = {1,...,m,m+1} - S and Σai (i∈T)= [a+(2t-a)-t]=t

and it shows Σai(i∈T) = Σaj(j∈S) so m+1∈T and S⊆ {1,· · ·,m} and Σai(i∈S)= t

so x∈SubsetSum

Case 2: 2t =< a :

we can check same but just this time am+1 is a−2t


-3

this link has a good description of both reductions, partition to subset-sum and subset-sum to partition. I think it is more obvious than YUVAL's answer. useful link


4
Please do not post link-only answers. If the content at the link changes or becomes unavailable, your answer will become useless. Please amend your answer so that it is useful, even if the link is unavailable (for instance, restating the content in your own words and providing the link as reference and source).
Tom van der Zanden
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.