Câu trả lời của Aryabhata có thể được khắc phục bằng cách sử dụng thực tế là chúng ta có thể nhân tất cả các số với một số c lớn , sau đó thêm một số nhỏ vào mỗi số để hoạt động như một "thẻ hiện diện", và sau đó cung cấp thêm một số số sẽ cho phép chúng tôi sẽ về 0 nếu chúng tôi có thể đến cK mà không có họ. Cụ thể, chúng tôi sẽ sử dụng c=2(n+1) và 1 làm thẻ hiện diện.
Cho một thể hiện (S={x1,…,xn},K) của vấn đề chung với giá trị đích K , chúng ta sẽ tạo một thể hiện của vấn đề cụ thể (với giá trị đích 0) có chứa:
- Y={y1,…,yn} , nơiyi=2(n+1)xi+1 .
- Số z=−2K(n+1)−n .
- n−1 bản sao của số 1, được gọi là số "kéo lên".
Tôi sẽ cho rằng Aryabhatta làm K là tích cực. (Vì đã 6 năm rồi, tôi sẽ trả lời bài tập của anh ấy cho người đọc: lý do chúng tôi có thể làm điều này là vì nếu chúng tôi trao đổi các dấu hiệu của tất cả các số trong một ví dụ của vấn đề chung, bao gồm K , thì chúng tôi sẽ kết thúc bằng một Điều đó có nghĩa là một thuật toán để giải quyết các trường hợp K tích cực đủ để giải quyết bất kỳ vấn đề nào - để giải quyết một trường hợp có K âm , chúng ta có thể thực hiện trao đổi ký hiệu này, chạy thuật toán đó và chuyển tiếp câu trả lời của nó câu trả lời cho câu hỏi ban đầu. Và tất nhiên nếu K=0 sau đó chúng ta không cần phải thực hiện bất kỳ sự chuyển đổi nào của trường hợp chung thành trường hợp đặc biệt nào cả!)
Trước tiên, hãy chỉ ra rằng một câu trả lời CÓ cho trường hợp cụ thể của vấn đề chung ngụ ý câu trả lời CÓ cho trường hợp được xây dựng của vấn đề đặc biệt. Ở đây chúng ta có thể giả định rằng một số giải pháp {xj1,…,xjm} cho vấn đề chung tồn tại: đó là, bộ sưu tập không rỗng này của m số tiền để K . Vì vậy, nếu chúng ta lấy tương ứng y -values {yj1,…,yjm} vào giải pháp của chúng tôi để các trường hợp xây dựng, họ sẽ tổng hợp để 2K(n+1)+m . Sau đó, chúng ta có thể chọn bao gồm−2K(n+1)−n trong giải pháp, để lại cho chúng ta một tổngm−n . Kể từ khi1≤m≤n , điều này nằm trong khoảng[−n+1,0] , mà chúng tôi thành công có thể kéo lên đến 0 bằng cách bao gồm một số tập hợp con của những con số pull-up.
Bây giờ chúng ta hãy chỉ ra rằng một câu trả lời CÓ cho thể hiện được xây dựng ngụ ý một câu trả lời CÓ cho thể hiện ban đầu. Đây là nơi phép nhân với 2(n+1) trở nên quan trọng - đó là điều cho phép chúng tôi chắc chắn rằng các số phụ mà chúng tôi đưa vào không thể "làm quá nhiều".
Ở đây chúng ta có thể giả định rằng một số giải pháp {yj′1,…,yj′m′} đến dụ xây dựng tồn tại: đó là, bộ sưu tập không rỗng này của m′ số tiền là 0. Bằng cách yêu cầu vấn đề, giải pháp này có chứa ít ít nhất một yếu tố. Hơn nữa, nó phải chứa ít nhất một phần tử từ Y , vì nếu không có phần tử này thì không thể đạt được tổng bằng 0: Nếu chỉ có số kéo lên, thì tổng số nhất thiết phải nằm trong phạm vi [1,n−1] ( lưu ý rằng trong trường hợp này ít nhất mộtsố kéo lên phải có mặt và tất cả chúng đều dương, vì vậy tổng không thể là 0); trong khi nếu giải pháp chỉ bao gồm z và một số số kéo lên thì tổng số nhất thiết là âm vì z=−2K(n+1)−n≤−n và hầu hết các số kéo lên có thể tăng tổng bởi n−1 .
Bây giờ giả sử đối với mâu thuẫn rằng giải pháp không chứa z . Mỗi phần tử trong Y bao gồm hai thuật ngữ: Bội số của 2(n+1) và "thẻ hiện diện" +1. Lưu ý rằng số hạng +1 trên mỗi n phần tử của Y tăng tổng 1 nếu phần tử đó được chọn, cũng như mỗi số có tới n−1 kéo lên, do đó tổng số đóng góp của 2 phần tử này được chọn, do đó tổng số đóng góp của 2 phần tử này nguồn cho bất kỳ giải pháp nào ít nhất là 1 (vì chúng tôi đã thiết lập trong đoạn trước rằng ít nhất một yếu tố của Y phải được chọn) và tối đa là n+n−1=2n−1 . Cụ thể, điều này ngụ ý rằng tổng của hai bộ thuật ngữ này,khi được sử dụng modulo2(n+1) , là khác không. Theo giả định rằng giải pháp không chứaz , chỉ các thành phần khác trong tổng này là bội số của2(n+1) đóng góp bởi các thành viên đã chọn củaY , không ảnh hưởng đến giá trị của tổng khi lấy modulo2(n+1) . Do đó, tổng của tất cả các điều khoản trong giải pháp, khi lấy modulo2(n+1) , là khác không, có nghĩa là nó không thể bằng tổng mục tiêu bằng 0, có nghĩa là nó không thể là một giải pháp hợp lệ: chúng tôi đã tìm thấy một mâu thuẫn, có nghĩa là nó phải làz=−2K(n+1)−n có mặt trong mọi giải pháp sau tất cả.
Vì vậy, mọi giải pháp đều chứa z . Chúng ta biết rằng
(−2K(n+1)−n)+∑m′i′=1(2(n+1)xj′i′+1)+∑pull-ups=0 ,
và chúng ta có thể sắp xếp lại các điều khoản:
−2K(n+1)+∑m′i′=1(2(n+1)xj′i′)−(n+∑m′i′=11+∑pull-ups)=0
−2K(n+1)+∑m′i′=1(2(n+1)xj′i′)−(n+m′+∑pull-ups)=0
2(n+1)(−K+∑m′i′=1xj′i′)−(n+m′+∑pull-ups)=0 .
Vì tổng bằng 0, nên nó vẫn là 0 khi lấy modulo 2(n+1) , ngụ ý rằng chúng ta có thể loại bỏ tất cả các số hạng chứa bội số của 2(n+1) để có được phương trình mới
−(n+m′+∑pull-ups)=0
Điều này có thể được thay thế trực tiếp trở lại phương trình trước để có được
2(n+1)(−K+∑m′i′=1xj′i′)=0
2(n+1)
−K+∑m′i′=1xj′i′=0
trong đó mang lại một giải pháp cho trường hợp vấn đề chung ban đầu.