Я використовую еквівалентну формулювання user17410:
Вхід: векторів X = { x 1 , … , x m } над { 0 , 1 } n , n є частиною вхідного
питання: Чи є два різні підмножини A , B ⊆ X такі, що
∑ x ∈ A x = ∑ x ∈ B xnX={x1,…,xm}{0,1}nn
A,B⊆X
∑x∈Ax=∑x∈Bx
Доказ твердості передбачає безліч проміжних скорочень, що слідують за тією ж "ланцюжком", що використовується для доведення твердості стандартної проблеми РІВНІ ПІДСТАВЛЕННЯ СУМ:
X3C SUBSET SUM ≤ PARTITION ≤ EVEN-ODD PARTITION ≤ EQUAL SUBSET SUM≤≤≤≤
(Я все ще перевіряю це, щоб це було неправильно :)
КРОК 1
Наступна проблема ( 0-1 ПІДСУМКА ВЕКТОРА ) NP-повна: задано вектори , x i над { 0 , 1 } n та цільовий вектор t , вирішіть, чи є A ⊆ X такий, що
∑ x ∈ A x = t Доказ : Пряме зменшення від ТОЧНОГО ПОКРИТТЯ НА 3-НАСТРОЙКИ (X3C): задано набір n елементів Y = { yX={x1,…,xm}xi{0,1}ntA⊆X
∑x∈Ax=t
n і набір
С з
М трьох елементів підмножин
C = { C 1 , . . . , C m } ми будуємо відповідне встановлення екземпляра 0-1 VECTOR SUM
x i [ j ] = 1, якщо і тільки якщо елемент
j включений у
C i ;
т = [ 1 , 1 , . . .1Y={y1,...,yn}CmC={C1,...,Cm}xi[j]=1jCi .
t=[1,1,...1]
КРОК 2
Знаходження двох рівних підмножин серед m 0-1 векторів понад { 0 , 1 } n , еквівалентне знаходженню двох рівних підмножин A , B векторів з елементом обмеженого розміру x 1 . . . x m де m a x { x i } = O ( ( m n ) k ) для нерухомого k .A,Bm{0,1}nA,Bx1...xmmax{xi}=O((mn)k)k
Наприклад, набір векторів:
x1 2 1 0 1
x2 1 2 3 1
Еквівалентний векторам 0-1:
x1 1 1 0 1 1 0 0 0 0
1 0 0 0 0 1 0 0 0
0 0 0 0 1 1 0 0 0
^ ^
+-- 0 elsewhere
x2 1 1 1 1 0 0 1 0 0
0 1 1 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1
0 0 0 0 0 0 1 1 1
^ ^ ^
+-- 0 elsewhere
Неформально вектори 0-1 групуються (якщо ви вибрали один вектор групи x2 і додали його до підмножини , то ви змушені включити в A інші два і помістити останній у підмножину B ), і суми виконані в одинарний (це причина, чому відповідні не бінарні вектори повинні містити елементи, поліноміально обмежені відносно m n ).AABmn
Отже, наступна проблема не є повною.
КРОК 3
B={x1,…,xm}xi{0,1}nXB1,B2
∑x∈B1x=∑x∈B2x
X={x1,…,xm}tS=∑xiXb′=−t+2Sb′′=t+SB=X∪{b′,b′′}
( ) Припустимо, що існує такий, що ; встановлюємо і ; маємо
⇒A⊆X∑x∈Ax=tB1=A∪{b′}B2=B∖B1=X∖{A}∪{b′′}
∑x∈B1=b′+∑x∈Ax=t−t+S=2S
∑x∈B2=b′′+∑x∈X∖Ax=b′′+S−∑x∈Ax=2S
( ) Припустимо, що і мають рівну суму. не можуть обидва належати одній множині (інакше їх сума дорівнює і не може бути "врівноважена" елементами іншого набору). Припустимо, що ; ми маємо:⇐B1B2b′,b′′≥3Sb′=−t+2S∈B1
−t+2S+∑x∈B1∖{b′}x=t+S+∑x∈B2∖{b′′}x
Отже, ми повинні мати а є правильним рішенням для 0-1 ВЕКТОРНОЇ СУМИ.∑x∈B1∖{b′}x=tB1∖{b′}
У множині ми допускаємо лише 0-1 векторів , тому вектори повинні бути "представлені одинарними", як показано на КРОКІ 2.Bb′,b′′
КРОК 3
Проблема все ще є NP-повною, якщо вектори пронумеровані з і два підмножини повинні мати однаковий розмір, і нам потрібно, щоб містив точно один з для (значить, через обмеження рівних розмірів, інший елемент пари повинен бути включений у ) ( 0-1 ВЕКТОР НАДІЙЧИЙ ПАРТІЯ ).x1,...,x2nX1,X2X1x2i−1,x2i1≤i≤nX2
Доведення: зменшення становить від 0-1 ВЕКТОРНА ПАРТІЯ та аналогічне зменшенню від ЧАСТИНИ до ВІДЧУТНОЇ ЧАСТИНИ. Якщо є вектори над замінити кожен вектор з двома векторами над :X={x1,...,xm}m{0,1}n{0,1}2n+2m
1 2 n
--------------------
x_i b_1 b_2 ... b_n
becomes:
1 2 ... 2i ... 2m
--------------------------
x'_2i-1 0 0 ... 1 ... 0 b_1 b_2 ... b_n 0 0 ... 0
x'_2i 0 0 ... 1 ... 0 0 0 ... 0 b_1 b_2 ... b_n
Через елемент вектори і не можуть міститися в одному підмножині; і чинне рішення 0-1 ВЕКТОРНОГО ВАРІТТЯ ВЕКТОР відповідає дійсному рішенню оригінального 0-1 ВЕКТОРНОГО РОЗДІЛУ (просто виберіть елементи 2m + 1..2m + n кожного вектора розчину, відкидаючи вектори, які містять усі нулі в тих позиціях).2ix′2i−1x′2i
КРОК 4
0-1 ВЕКТОРНА РІВНОВА ПІДПРИЄМСТВО (проблема у питанні) не завершена NP: зменшення від 0-1 ВЕКТОРНОГО ЧАСНОГО ПАРТІЮ, аналогічного зменшенню з ЧАСУ ДЕТАЛЬНОГО ЧАСУ до РІВНОГО ПІДЛОСУ, як це було доведено Герхардом Дж. , Zhongliang Ю., про проблему рівного підмножини суми : дан впорядкована множина з векторів над , ми будуємо задаємо з векторів над .A={x1,...,x2m}2m{0,1}nY3m{0,1}2m+n
Для кожного вектора будуємо вектор над таким чином:x2i−1,1≤i≤my2i−1{0,1}2m+n
1 2 ... i i+1 ... m m+1 m+2 ... m+i ... 2m 2m+1 ... 2m+n
------------------------------------------------------
0 0 ... 2 0 ... 0 0 0 1 0 x_{2i-1}
Для кожного вектора будуємо вектор над таким чином:x2i,1≤i≤m−1y2i{0,1}2m+n
1 2 ... i i+1 ... m m+1 m+2 ... m+i ... 2m 2m+1 ... 2m+n
------------------------------------------------------
0 0 ... 0 2 ... 0 0 0 1 0 x_{2i}
Відображаємо елемент наx2m
1 2 ... ... m m+1 m+2 ... . 2m 2m+1 ... 2m+n
------------------------------------------------------
2 0 ... ... 0 0 0 1 x_{2m}
Нарешті додаємо манекенних елементів:m
1 2 ... ... m m+1 m+2 ... ... 2m 2m+1 ... 2m+n
------------------------------------------------------
4 0 ... ... 0 0 0 0 0 ... 0
0 4 ... ... 0 0 0 0 0 ... 0
...
0 0 ... ... 4 0 0 0 0 ... 0
Зауважимо ще раз, що вектори, що містять значення можуть бути представлені в "одинарних", використовуючи групу 0-1 векторів, як показано на етапі 2.>1
Y має два непересічні підмножини мають рівну суму, якщо і лише тоді, коли має непарний розділ. Y1,Y2X