Складність варіанту суми підмножини


9

Чи легкий / відомий цей варіант проблеми сукупності підмножини?

Враховуючи ціле і набір натуральних чисел таких, що кожен має максимум біти, встановлені на ( ); чи існує підмножина така, що сума її елементів дорівнює ?mA={x1,x2,...,xn}xik=21xi=2bi1+2bi2,bi1,bi20AAm

Це в ? Чи все ще -повне?PNP

І якщо кожен має максимум біта, встановлений на ? Для задача тривіальна.xik=31k=1

Відповіді:


8

Це все ще -повне, навіть для . Враховуючи екземпляр суми підмножини, ми можемо перетворити його на цей варіант, розділивши числа і додавши додаткові біти.NPk=2

По-перше, сума всіх чисел у задачі буде меншою за для деякого значення .2mm

Тепер візьмемо число з початкової задачі, у якій встановлено біт. Ми розділимо це число на чисел з точно встановленими двома бітами, щоб сума цих чисел була . Ми можемо зробити це рекурсивно, знайшовши числа, які підсумовують першим бітів плюс і числа, які підсумовуємо останні біти плюс .nkkn+2k+mkk2k+m1kk2k+m1

На додаток до цього числа ми також додамо до задачі число . Рішення повинно містити або це число, або всі числа, побудовані раніше. Якщо початкове цільове значення було нове цільове значення буде .2k+mktt+2k+m

Якщо в початковій задачі було більше одного числа, ми можемо повторити цей процес, приймаючи для нового значення .k+m+1m

Існує лише два способи встановлення біта в положенні : відповідь може містити число або всі числа, що дорівнюють . Таким чином, ми зменшили суму підмножини до Вашого варіанту підмножини.k+m2k+mkn+2k+m

Як приклад, візьмемо з цільовим значенням . Ця проблема може бути закодована як варіант підмножини, представлений тут, взявши наступні двійкові числа:{2,3,5}7

2 відображається на та . (Використання додаткового біта тут не є строго необхідним.)0100 10000 1

3 відображається на та1000 00 1,0100 00 10000 00 01

5 відображається на та .1000 00 000 1,0010 00 000 10000 00 000 01

Нове цільове значення стане .1110 10 010 01

Якщо вихідна задача представлена бітами, то трансформована задача має максимум біт. Початкова проблема матиме щонайбільше чисел, кожне з щонайбільше бітів, тому сума всіх їх також O (n). Трансформована задача матиме числа (оскільки кожне бітове число розбивається на бітні числа, причому їх довжина становить максимум оскільки ми використовуємо додаткових біт для кожне число. Отже, загальний розмір перетвореної задачі становить біт.nO(n4)O(n)O(n)O(n2)nn+1 2O(n2)nO(n4)


Ви впевнені, що кодування не призводить до експоненціального розміру робочої стрічки?
Vor

Ні, я думаю, що трансформована проблема має квар- тичну величину. Якщо вхід має n біт, то існує щонайбільше n чисел, у кожному з яких встановлено n біт. Таким чином, у перетвореній задачі будуть числа O (n ^ 2) (оскільки k-бітове число розбивається на k + 1 числа). Кожне число (2n) біт довге, щоб вмістити максимальну суму плюс n біт для кожного з n чисел у вихідній задачі. Таким чином, кожне число матиме O (2n + n ^ 2) бітів, для загальної кількості O (n ^ 4) біт.
Том ван дер Занден

@TomvaderZanden: я додав картину вашого зменшення питання; подивіться, чи правильно я його інтерпретував
Vor

@TomvaderZanden: сьогодні я знову дивлюся на ваше скорочення, але незрозуміло, як з довільного числа з встановленими бітами ви можете розділити його на 2-бітні числа, де "найвища" частина дорівнює . Припустимо, у вас є число з біт; вам потрібно 13 2-розрядних чисел, але 13 - 1101, і ви не можете "накрити" його дворозрядним числом (ваш приклад працює, тому що для 3 і 5 k = 2). Я думаю, що це можна легко виправити, якщо використовувати різний високий біт для кожного з 2-бітних чисел; вони дорівнюватимуть 01111 ... 1, тоді ви додасте манекен 0000 ... 1, що дозволить сумі скласти . nkk2knk=13k2k
Vor

Це трохи розпливчасто, але це, звичайно, можливо за допомогою "індуктивної" процедури. Насправді вам не потрібні біт, вам потрібен лише . Якщо ви хочете знайти 13 1-розрядних чисел, що дорівнюють до , то вам потрібно знайти 6 чисел, що підсумовують до і 7, які також до . Ми можемо взяти що насправді дорівнює . kceil(logk)2423231020+32124
Том ван дер Занден

0

Це інформація, витягнута з запитання Vor.

Для проблема залишається NP-повною. Я знайшов швидке скорочення від монотонного X-SAT ( див. Схему зменшення тут ).k3

Проблема залишається NP-повною, навіть якщо , див. Відповідь Тома для деталей. Ось невелике представлення його скорочення від SUBSET SUM:k=2

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.