2
อัลกอริทึมที่มีประสิทธิภาพสำหรับ 'unsumming' ชุดจำนวนเงิน
รับชุดของตัวเลขธรรมชาติ X พิจารณาชุดของผลรวมที่เป็นไปได้ทั้งหมด: จำนวนเงิน (X) = { ∑ฉัน∈ผม|A ⊆ X}sums(X)={∑i∈Ai|A⊆X}\textrm{sums}(X)= \left\{ \sum_{i \in A} i \,|\, A \subseteq X \right\} ยกตัวอย่างเช่นผลรวม ( { 1 , 5 } )= { 0 ,1,5,6}sums({1,5})={0,1,5,6}\textrm{sums}(\left\{1,5\right\}) = \left\{0, 1, 5, 6\right\}ในขณะที่ sums({1,1})={0,1,2}sums({1,1})={0,1,2}\textrm{sums}(\left\{1,1\right\}) = \left\{0, 1, 2\right\} } อัลกอริธึมที่มีประสิทธิภาพมากที่สุดสำหรับการคำนวณการดำเนินการผกผันคืออะไร โดยเฉพาะมันเป็นไปได้ที่จะคำนวณอย่างมีประสิทธิภาพต่อไปนี้: ไม่ว่าจะเป็นชุดที่กำหนดเป็นชุดผลรวมที่ถูกต้อง (ตัวอย่างเช่น{0,1,2}{0,1,2}\left\{0,1,2\right\}ถูกต้อง แต่{0,1,3}{0,1,3}\left\{0,1,3\right\}ไม่ถูกต้อง) เซ็ตมัลติเซตที่รวมกับเซ็ตที่กำหนด ชุดมัลติเซ็ตที่เล็กที่สุดที่รวมกับเซ็ตที่กำหนด (ตัวอย่างเช่น{1,2}{1,2}\left\{1,2\right\}และ{1,1,1}{1,1,1}\left\{1,1,1\right\}ทั้งผลรวมเป็น{0,1,2,3}{0,1,2,3}\left\{0,1,2,3\right\}แต่ตัวเก่ามีขนาดเล็กลง)