ฉันจะลดผลรวมกลุ่มย่อยให้เป็นพาร์ติชันได้อย่างไร


20

อาจจะค่อนข้างง่าย แต่ฉันมีปัญหาในการลดขนาดนี้ ฉันต้องการลดผลรวมเซ็ตย่อยเป็น พาร์ติชันแต่ในเวลานี้ฉันไม่เห็นความสัมพันธ์!

เป็นไปได้ไหมที่จะลดปัญหานี้โดยใช้การลดเลวิน?

หากคุณไม่เข้าใจเขียนเพื่อชี้แจง!

คำตอบ:


19

อนุญาต(L,B)เป็นตัวอย่างของผลรวมย่อยของเซตโดยที่Lคือรายการ (มัลติเซ็ต) ของตัวเลขและBคือผลรวมเป้าหมาย ให้S=ΣL L Let L'เป็นรายการที่เกิดขึ้นโดยการเพิ่มS+B,2S-Bเพื่อLL

(1) หากมีรายการย่อยMLข้อสรุปเพื่อBแล้วL'สามารถแบ่งออกเป็นสองส่วนเท่า ๆ กัน: M{2S-B}และ\} อันที่จริงส่วนเงินก้อนแรกที่และสองเพื่อ( S - B ) + ( S + B ) = 2 SLM{S+B}B+(2S-B)=2S(S-B)+(S+B)=2S

(2) ถ้าL'สามารถแบ่งออกเป็นสองส่วนเท่า ๆ กันP1,P2แล้วมีรายการย่อยของLข้อสรุปเพื่อBBแน่นอนเนื่องจาก(S+B)+(2S-B)=3Sและแต่ละส่วนจะรวมกันเป็น2Sองค์ประกอบทั้งสองจึงอยู่ในส่วนที่แตกต่างกัน โดยไม่สูญเสียของทั่วไป, 2S-BP1 1 องค์ประกอบที่เหลือในP1เป็นของLและผลรวมไปBB


2
แต่ปัญหาผลรวมของเซ็ตย่อยมาตรฐานใช้จำนวนเต็มทั้งหมดและปัญหาของพาร์ติชันใช้จำนวนเต็มแบบไม่ลบ ...
gukoff

SUBSET-SUM นั้นสมบูรณ์แบบ NP แม้ว่าจะมีจำนวนเต็มไม่เป็นลบเช่นการลดลงของ 3SAT นั้นจบลงด้วยจำนวนเต็มลบ นอกจากนี้อาจมีการลดลงโดยตรงจากจำนวนเต็ม SUBSET-SUM เป็นจำนวนเต็มไม่ใช่ลบ SUBSET-SUM
Yuval Filmus

1
ใช่ฉันรู้และการลดลงนี้ง่ายมาก เพียงสังเกตว่าไม่ใช่ผลรวมย่อยในรูปแบบ "ค่าเริ่มต้น" :)
gukoff

มันจะทำงานได้ไหมถ้าคือL{B,S-B}? เป็น| {B,S-B}| =Bเช่น| L| =BL'L{B,S-B}|{B,S-B}|=B|L|=B
อยากรู้อยากเห็น

1
@Issam ไม่เช่นนี้ PARTITION อินสแตนซ์จะมีทางออกเสมอ L,{B,S-B}
Yuval Filmus

1

คำตอบที่กล่าวถึงโดย@Yuval Filmusไม่ถูกต้อง (ถูกต้องเฉพาะในกรณีที่ไม่มีจำนวนเต็มลบ) พิจารณามัลติเซ็ตต่อไปนี้:

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

และผลรวมเป้าหมายคือ 2 เรารู้ว่าไม่มีส่วนย่อย ตอนนี้เราสร้างอินสแตนซ์สำหรับปัญหาพาร์ติชัน ทั้งสององค์ประกอบใหม่ที่เพิ่มขึ้นเป็น2 σ - T = 12และσ + T = 3 MultiSet ขณะนี้: { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 }และผลรวมเป็น20-22σ-เสื้อ=12σ+เสื้อ=3

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

ปัญหาของพาร์ติชันแก้คำตอบที่ให้เซ็ตย่อยนี่อิลิเมนต์ใหม่ 2 ตัวนั้นอยู่ในเซตย่อยเดียวกัน ดังนั้นนี่คือตัวอย่างเคาน์เตอร์ คำตอบที่ถูกต้องมีดังนี้:

{2,2,2,2,2}

เพิ่มองค์ประกอบที่มีค่าเป็น σ ผลรวมของ MultiSet ในขณะนี้คือ2ตัน แก้ปัญหาพาร์ทิชันที่จะให้ 2 ส่วนย่อยของจำนวนเงินเอาเสื้อ พาร์ทิชันเดียวเท่านั้นที่จะมีองค์ประกอบใหม่ เราเลือกพาร์ติชันอื่นที่มีผลรวมเป็นtและเราได้แก้ไขปัญหาชุดย่อยโดยลดลงในปัญหาพาร์ติชัน นี่คือสิ่งที่ลิงค์อธิบาย2เสื้อ-σ2เสื้อเสื้อเสื้อ


1
แต่ดังที่ Yuval กล่าวไว้ในความคิดเห็นต่อคำตอบของเขาผลรวมย่อยคือNPสมบูรณ์เมื่อเรา จำกัด จำนวนเต็มบวก ดังนั้นเราสามารถสรุปได้ว่าไม่มีจำนวนลบ
David Richerby

1
ใช่ฉันยอมรับผลรวมย่อยคือ NP-complete แม้ในกรณีที่เป็นจำนวนเต็มบวก ฉันแค่ให้หลักฐานที่สมบูรณ์มากขึ้นสำหรับจำนวนเต็มใด ๆ
Rohit Kumar Jena

1
"เพียงแสดงหลักฐานที่สมบูรณ์ยิ่งขึ้น" และอ้างอย่างผิด ๆ ว่าคำตอบที่มีอยู่นั้นไม่ถูกต้อง
David Richerby

1
มันไม่ถูกต้องในแง่ที่ว่ามันไม่ทำงานสำหรับจำนวนเต็มลบ :) Peace :)
Rohit Kumar Jena

1

นี่คือหลักฐานที่ตรงไปตรงมา:

เป็นเรื่องง่ายที่จะเห็นว่า SET-PARTITION สามารถตรวจสอบได้ในเวลาพหุนาม ให้พาร์ทิชันP1,P2เพียงสรุปทั้งสองและตรวจสอบว่าผลรวมของพวกเขาเท่ากับแต่ละอื่น ๆ ซึ่งจะเห็นได้ชัดในการตรวจสอบเวลาพหุนาม (เพราะบวกคือการดำเนินการพหุนามและเราเป็นเพียงการแสดงที่มากที่สุด|X| summations ๆ อีกมากมาย)

แก่นแท้ของการพิสูจน์คือการลด SUBSETSUM เป็น PARTITION; ที่ปลายได้รับชุดXและค่าเสื้อ (แบบสอบถามเซตรวม) เราฟอร์มชุดใหม่X'=X{s-2เสื้อ}ที่s=ΣxXx x หากต้องการดูว่านี่เป็นการลด:

  • () ถือว่ามีอยู่บางSXดังกล่าวว่าเสื้อ=ΣxSxแล้วเราจะมีที่

    s-เสื้อ=ΣxS{s-2เสื้อ}x,
    s-เสื้อ=ΣxX'(S{s-2เสื้อ})x
    และเราจะได้ว่าS{s-2เสื้อ}และX'(S{s-2เสื้อ})สร้างพาร์ติชันของX'

  • () สมมติว่ามีพาร์ทิชันP1',P2'ของX'ดังกล่าวว่าxP1x=xP2x x โปรดสังเกตว่าสิ่งนี้ทำให้เกิดพาร์ติชันธรรมชาติP1และP2ของXเช่นนั้น WLOG เรามี

    s2t+xP1x=xP2x
    s-2เสื้อ+ΣxP1x+ΣxP1x=ΣxP2x+ΣxP1x=s
    s-2เสื้อ+2ΣxP1x=s
    ΣxP1x=เสื้อ

ดังนั้นจากวิธีแก้ปัญหาเสื้อ=ΣxSxเราสามารถสร้าง parition P1=S{s-2เสื้อ} , P2=X'(S{s-2เสื้อ})และตรงกันข้ามจากพาร์ติชันP1',P2'เราสามารถสร้าง soltuion เสื้อ=ΣxP1'{s-2เสื้อ}xดังนั้นการทำแผนที่:(X,เสื้อ)X'เป็นการลด (เนื่องจาก(X,เสื้อ)อยู่ในภาษา / ชุด SUBSETSUMX'=(X,เสื้อ)คือ ในส่วนของภาษา / ชุด) และเห็นได้ชัดว่าการเปลี่ยนแปลงได้ทำในเวลาพหุนาม


0

ผลรวมย่อย:

อินพุต: {a1, a2, ... , am} st M = {1..m} และ ai ไม่ใช่จำนวนเต็มลบและS⊆ {1..k} และΣai (i∈S) = t

Partition:

อินพุต: {a1, a2, ... , am} และS⊆ {1, ···, m} st Σai (i∈S) = Σaj (j∉S)

Partition Np Proof: ถ้า prover มีพาร์ติชั่น (P1, P2) สำหรับ verifier, verifier สามารถคำนวณผลรวมของ P1 และ P2 ได้อย่างง่ายดายและตรวจสอบว่าผลลัพธ์เป็น 0 ในเวลาเชิงเส้นหรือไม่

NP_Hard: กลุ่มผลรวม PARTp PARTITION

ปล่อยให้ x เป็นอินพุทของเซตย่อยและ x = 〈a1, a2, ... , am, t〉 และΣai (i จาก 1 ถึง m) = a

Case1: 2t> = a:

ให้ f (x) = 〈a1, a2, ... , am, am + 1〉 โดยที่ + 1 = 2t − a

เราต้องการแสดงให้เห็นว่าx∈SubsetSum⇔ f (x) ARTPARTITION

ดังนั้นจึงมีS⊆ {1, ... , m} st T = {1..m} - S และΣai (i∈T) = ที่

และให้ T '= {1 ... m, m + 1} - S so Σaj (j∈T') = a-t + 2t-a = t

ซึ่งก็คือΣai (i∈S) = t และจะแสดง f (x) ARTPARTITION

ตอนนี้เราจะแสดงให้เห็นว่าf (x) ARTPARTITION ∈x∈SubsetSum

ดังนั้นจึงมีS⊆ {1, ... , m, m + 1} st T = {1, ... , m, m + 1} - S และΣai (i∈T) = [a + (2t-a ) -t] = T

และมันแสดงให้เห็นΣai (i∈T) = Σaj (j∈S) ดังนั้น m + 1∈TและS⊆ {1, ···, m} และΣai (i∈S) = t

ดังนั้น xSubsetSum

กรณีที่ 2: 2t = <a :

เราสามารถตรวจสอบได้เหมือนกัน แต่ในเวลานี้ฉัน +1 คือ − 2t


-3

ลิงก์นี้มีคำอธิบายที่ดีเกี่ยวกับการลดพาร์ติชันไปยังผลรวมย่อยและผลรวมย่อยของพาร์ติชัน ฉันคิดว่ามันชัดเจนกว่าคำตอบของ YUVAL ลิงค์ที่มีประโยชน์


4
โปรดอย่าโพสต์คำตอบสำหรับลิงค์เท่านั้น หากเนื้อหาที่ลิงค์มีการเปลี่ยนแปลงหรือไม่สามารถใช้ได้คำตอบของคุณจะไร้ประโยชน์ โปรดแก้ไขคำตอบของคุณเพื่อให้มีประโยชน์แม้ว่าลิงก์จะไม่สามารถใช้งานได้ (ตัวอย่างเช่นการปรับปรุงเนื้อหาด้วยคำพูดของคุณเองและให้ลิงค์เป็นข้อมูลอ้างอิงและแหล่งที่มา)
Tom van der Zanden
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.