Відповідь Арябхати можна виправити, скориставшись тим, що ми можемо помножити всі числа на кілька великих c , а потім додати до кожного щось невелике, щоб діяти як "тег присутності", а потім подати кілька додаткових чисел, які дозволять нам дістатися до нуля, якби ми змогли дістатися до c К без них. Зокрема, ми будемо використовувати c = 2 ( n + 1 ) і 1 як тег присутності.
З огляду на екземпляр ( S= { х1, … , Хн} , К) загальної проблеми із цільовим значенням К , ми створимо екземпляр конкретної проблеми (із цільовим значенням 0), який містить:
- Y={y1,…,yn} , деyi=2(n+1)xi+1 .
- Число z=−2K(n+1)−n .
- n−1 примірник числа 1, який слід називати "підтягуючими" номерами.
Я вважаю, що Аріабхатта робить це K позитивним. (Оскільки минуло 6 років, я відповім на його вправу для читача: причина, яку ми можемо зробити це, полягає в тому, що якщо ми поміняємо знаки всіх чисел на екземпляр загальної проблеми, включаючи K , то ми закінчуємо новий, еквівалентний екземпляр проблеми. Це означає, що алгоритму для вирішення екземплярів додатного K достатньо, щоб вирішити будь-яку проблему - щоб вирішити екземпляр з негативним K , ми могли б виконати цю підміну підписання, запустити цей алгоритм і надіслати свою відповідь як відповідь на вихідне запитання. І звичайно, якщо K=0 тоді нам взагалі не потрібно проводити будь-яку трансформацію загальної справи в особливу справу!)
Спочатку покажемо це відповідь ТА на даний екземпляр загальної проблеми передбачає відповідь ТА на побудований екземпляр спеціальної проблеми. Тут ми можемо припустити , що якийсь - то рішення {xj1,…,xjm} до загальної задачі існує: тобто, це непорожній набір м чисел сум на К . Отже, якщо ми візьмемо відповідні значення у значень {yj1, … ,yjм} в наше рішення для побудованого екземпляра, вони будуть дорівнювати 2K( n + 1 ) + m . Тоді ми можемо вибрати, щоб включити-2K( n + 1 ) - n у розчин, залишаючи нам сумуm - n . Оскільки1 ≤ m ≤ n , це в діапазоні[ - n + 1 , 0 ] , який ми можемо успішно витягнути до 0, включивши деякий підмножина підсувних чисел.
Тепер покажемо, що відповідь YES на побудований екземпляр передбачає відповідь YES на початковий даний екземпляр. Тут стає важливим множення на 2 ( n + 1 ) - саме це дозволяє нам бути впевненим, що додаткові числа, які ми включили, не можуть "зробити занадто багато".
Тут можна припустити, що якесь рішення { уj'1,…,yj′m′}для побудованого екземпляра існує: тобто ця непуста колекціяm′чисел дорівнює 0. Відповідно до проблемних вимог, це рішення містить в хоча б один елемент. Далі він повинен містити принаймні один елемент зY, оскільки без цього неможливо досягти загальної кількості 0: Якщо присутні лише підсувні числа, то сума обов'язково знаходиться в діапазоні[1,n−1]( зауважте, що в цьому випадкухоча б одинномер підтягувача повинен бути присутнім, і всі вони суворо позитивні, тому сума не може бути 0); тоді як якщо рішення складається з просто z і деяких підтягуючих чисел, то загальна сума обов'язково від’ємна, оскільки z=−2K(n+1)−n≤−n і найбільше, що підсумні числа можуть збільшити суму by є n−1 .
Тепер припустимо протиріччя, що рішення не містить z . Кожен елемент у Y складається з двох доданків: кратне 2(n+1) та +1 "тег присутності". Зауважте, що додаток +1 для кожного з n елементів Y збільшує суму на 1, якщо цей елемент обраний, як і кожне з обраних до n−1 підтягуючих чисел, тому загальна сума, внесена цими 2 джерел будь-якого рішення становить щонайменше 1 (тому що в попередньому пункті ми встановили, що принаймні один елемент Y повинен бути обраний) і щонайменше n+n−1=2n−1 . Зокрема, це означає, що сума цих двох наборів доданків,якщо взяти модуль2(n+1) , є ненульовою. За припущенням, що рішення не міститьz , єдиними іншими компонентами цієї суми є кратні2(n+1) внесені вибраними членамиY , які не впливають на значення суми при взятті за модулем2(n+1) . Таким чином, сума всіх доданків у розчині, якщо брати модуль2(n+1) - ненульовий, це означає, що він не може бути рівний цільовій сумі 0, тобто зовсім не може бути правильним рішенням: ми знайшли протиріччя, тобто, щоz=−2K(n+1)−n присутній у кожному рішенні.
Отже, кожне рішення містить z . Ми це знаємо
(−2K(n+1)−n)+∑m′i′=1(2(n+1)xj′i′+1)+∑pull-ups=0,
і ми можемо переставити умови:
−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.
Оскільки сума дорівнює 0, вона повинна залишатися 0, коли беремо модуль 2(n+1) , що означає, що ми можемо відкинути всі доданки, що містять кратне 2(n+1) щоб отримати нове рівняння
−(n+m′+∑pull-ups)=0 .
Це можна безпосередньо замінити в попереднє рівняння, щоб отримати
2(n+1)(−K+∑m′i′=1xj′i′)=0 .
Нарешті, розділивши обидві сторони на 2(n+1) листя
−K+∑m′i′=1xj′i′=0 ,
що дає вирішення оригінальному екземпляру загальної проблеми.