มันยังคงเป็นสมบูรณ์แม้สำหรับ 2 จากตัวอย่างของผลรวมย่อยเราสามารถแปลงให้เป็นตัวแปรนี้โดยแยกตัวเลขและเพิ่มบิตพิเศษบางอย่างNPk=2
ครั้งแรกที่ผลรวมของตัวเลขทั้งหมดในปัญหาที่เกิดขึ้นจะน้อยกว่ามูลค่าของบางเมตร2mm
ทีนี้ลองหาตัวเลขจากปัญหาเดิมซึ่งมีบิตตั้งไว้ เราจะแบ่งจำนวนนี้ในหมายเลขตรงกับ 2 บิตตั้งค่าดังกล่าวว่าผลรวมของตัวเลขเหล่านั้นคือm} เราสามารถทำสิ่งนี้ซ้ำโดยการหาตัวเลขที่รวมกันเป็นครั้งแรกบิตบวกและหมายเลขที่ รวมถึงล่าสุดบิตบวกm-1}nkkn+2k+m⌈k⌉⌈k⌉2k+m−1⌊k⌋⌊k⌋2k+m−1
นอกจากหมายเลขนั้นเราจะเพิ่มหมายเลขให้กับปัญหา คำตอบจะต้องมีหมายเลขนี้หรือหมายเลขทั้งหมดที่สร้างขึ้นก่อนหน้านี้ ถ้าราคาเป้าหมายเดิมคือมูลค่าเป้าหมายใหม่จะเป็นm}2k+mktt+2k+m
ถ้าปัญหาเดิมมีมากกว่าจำนวนหนึ่งที่เราสามารถทำซ้ำขั้นตอนนี้การสำหรับค่าใหม่ของม.k+m+1m
มีเพียงสองวิธีบิตในตำแหน่งที่มีสามารถตั้งค่า: คำตอบจะมีจำนวนหรือทั้งหมดของตัวเลขที่รวมถึงm} ดังนั้นเราจึงลดผลรวมย่อยลงไปยังชุดผลรวมย่อยของคุณk+m2k+mkn+2k+m
ตัวอย่างเช่นลองกับค่าเป้าหมาย7ปัญหานี้อาจถูกเข้ารหัสเป็นชุดผลรวมย่อยชุดย่อยที่แสดงที่นี่โดยรับเลขฐานสองต่อไปนี้:{2,3,5}7
2 ได้รับการแมปไปและ 1 (การใช้บิตพิเศษไม่จำเป็นอย่างยิ่งที่นี่)0100 10000 1
3 ได้รับการแมปกับและ1000 00 1,0100 00 10000 00 01
5 ได้รับการแมปไปและ011000 00 000 1,0010 00 000 10000 00 000 01
ค่าเป้าหมายใหม่จะกลายเป็น011110 10 010 01
หากปัญหาดั้งเดิมแสดงด้วยบิตดังนั้นปัญหาที่แปลงแล้วจะมีบิตไม่เกิน ปัญหาดั้งเดิมจะมีจำนวนมากที่สุดแต่ละที่มีมากที่สุดบิตดังนั้นผลรวมของทั้งหมดคือ O (n) ปัญหาที่แปลงแล้วจะมีตัวเลข (เนื่องจากแต่ละหมายเลขบิตถูกแบ่งเป็นบิตโดยมีความยาวอยู่ที่มากที่สุดเนื่องจากเราใช้บิตเพิ่มเติมสำหรับ แต่ละหมายเลขดังนั้นขนาดโดยรวมของปัญหาที่แปลงแล้วคือบิตnO(n4)O(n)O(n)O(n2)nn+1 2O(n2)nO(n4)