ฉันใช้สูตรเทียบเท่ากับผู้ใช้ 17410:
อินพุต: vector 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
การพิสูจน์ความกระด้างเกี่ยวข้องกับการลดระดับกลางจำนวนมากซึ่งเป็นไปตาม "โซ่" เดียวกันที่ใช้เพื่อพิสูจน์ความแข็งของปัญหาผลรวมเท่ากับ SUBSET SUBSET SUM:
X3C กลุ่มย่อย SUM ≤ PARTITION ≤ แม้ ODD PARTITION ≤เท่ากับกลุ่มย่อย SUM≤≤≤≤
(ฉันยังตรวจสอบอยู่ดังนั้นจึงอาจผิด :)
ขั้นตอนที่ 1
ปัญหาต่อไปนี้ ( 0-1 VECTOR SUBSET SUM ) คือ NP-complete: กำหนด , x iเวกเตอร์มากกว่า{ 0 , 1 } nและเวกเตอร์รวมเป้าหมายtตัดสินใจว่ามีA ⊆ Xเช่นนั้น
∑ x ∈ A x = tพิสูจน์ : การลดโดยตรงจากปกที่แน่นอนโดย 3-SETS (X3C): กำหนดชุดขององค์ประกอบn Y = { yX={x1,…,xm}xi{0,1}ntA⊆X
∑x∈Ax=t
nและชุด
Cของ
ม.สามองค์ประกอบย่อย
C = { C 1 , . . , C m }เราสร้างการตั้งค่าอินสแตนซ์ 0-1 VECTOR SUM ที่สอดคล้องกัน
x i [ j ] = 1ถ้าหากองค์ประกอบ
jรวมอยู่ใน
C i ;
T = [ 1 , 1 , . 0.1Y={y1,...,yn}CmC={C1,...,Cm}xi[j]=1jCi .
t=[1,1,...1]
ขั้นตอนที่ 2
การหาผลรวมสองส่วนย่อยเท่ากับ, Bหมู่ม. 0-1 เวกเตอร์บน{ 0 , 1 } nเทียบเท่ากับการหาผลรวมสองส่วนย่อยเท่ากับ, Bของเวกเตอร์ที่มีองค์ประกอบของขนาด bounded x 1 . . x เมตรที่m x { x ฉัน } = O ( ( มn ) k )สำหรับการแก้ไขkA,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
ดังนั้นปัญหาต่อไปนี้คือ NP-complete
ขั้นตอนที่ 3
ปัญหาต่อไปนี้ ( 0-1 VECTOR PARTITION ) คือปัญหา NP-complete: กำหนด , x iเวกเตอร์มากกว่า{ 0 , 1 } nตัดสินใจว่าXสามารถแบ่งพาร์ติชันได้ในเซตย่อยสองชุดB 1 , B 2เช่นนั้น
∑ x ∈ B 1 x = ∑ x ∈ B 2 xB={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⇒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 VECTOR SUM∑x∈B1∖{b′}x=tB1∖{b′}
เราอนุญาตให้มีเวกเตอร์ 0-1 ในเซตเท่านั้นดังนั้นเวกเตอร์จะต้อง "แสดงเป็นเอกนารี" ดังแสดงในขั้นตอนที่ 2Bb′,b′′
ขั้นตอนที่ 3
ปัญหายังคงเป็นปัญหาที่สมบูรณ์ถ้าเวกเตอร์มีหมายเลขจากและเซตย่อยสองชุดต้องมีขนาดเท่ากันและเราต้องการให้มีหนึ่งในสำหรับ (ดังนั้นโดยข้อ จำกัด ขนาดเท่ากันองค์ประกอบอื่น ๆ ของคู่จะต้องรวมอยู่ใน ) ( 0-1 VECTOR EVEN-ODD PARTITION )x1,...,x2nX1,X2X1x2i−1,x2i1≤i≤nX2
หลักฐาน:การลดลงมาจาก 0-1 VECTOR PARTITION และคล้ายกับการลดลงจาก PARTITION ไปเป็น EVEN-ODD PARTITION ถ้าเป็นเวกเตอร์แทนที่แต่ละเวกเตอร์ด้วยเวกเตอร์สองตัวที่ :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 VECTOR EVEN-ODD PARTITION สอดคล้องกับวิธีแก้ปัญหาที่ถูกต้องของ Part1 0-1 VECTOR ดั้งเดิม (เพียงแค่เลือกองค์ประกอบ 2m + 1..2m + n ของแต่ละเวกเตอร์ของการแก้ปัญหาทิ้งเวกเตอร์ที่มีทั้งหมด ศูนย์ในตำแหน่งเหล่านั้น)2ix′2i−1x′2i
ขั้นตอนที่ 4
0-1 VECTOR Equal SUBSET SUM (ปัญหาในคำถาม) คือ NP-complete: ลดลงจาก 0-1 VECTOR EVEN-ODD PARTITION คล้ายกับการลดลงจาก EVEN-ODD PARTITION ไปเป็น SUBSET ส่วนแบ่งเท่าที่พิสูจน์แล้วในGerhard J. Woeginger , Zhongliang Yu, ในปัญหาเท่ากับส่วนย่อย : ได้รับชุดคำสั่งของเวกเตอร์มากกว่าเราสร้าง ชุดของเวกเตอร์บนn}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
โปรดทราบอีกครั้งว่าเวกเตอร์ที่มีค่าสามารถแสดงใน "unary" โดยใช้กลุ่มของเวกเตอร์ 0-1 เช่นที่แสดงในขั้นตอนที่ 2>1
Y 1 ,Yมีสอง disjointเซ็ตย่อยมีผลรวมเท่ากันถ้ามีพาร์ติชั่นคี่คู่ Y1,Y2X