Является ли проблема «подмножество продукта» NP-полной?

21

Задача подмножества сумм является классической NP-полной задачей:

Учитывая список чисел и цель , есть ли подмножество чисел из которое суммирует к ?k L kLkLk

Студент спросил меня, является ли этот вариант проблемы, называемый проблемой «подмножество продукта», NP-полным:

Имея список чисел и цель , существует ли подмножество чисел из , произведение которых равно ?k L kLkLk

Я немного искал и не мог найти никаких ресурсов, которые говорили бы об этой проблеме, хотя, возможно, я пропустил их.

Является ли проблема подмножества продукта NP-полной?

templatetypedef
источник
2
Интересные ответы, но мне интересно: неужели мы не можем свести к сумме подмножеств просто взяв логи k и все числа? (Может быть, я должен задать отдельный вопрос?)
j_random_hacker
1
@j_random_hacker, да, если вы не можете найти ответ после поиска на этом сайте и в Интернете, я предлагаю вам опубликовать отдельный вопрос. Это хороший вопрос с хорошим ответом (подсказка: при взятии журналов у вас остается нечто, не являющееся целым числом; с другой стороны, подумайте, что дает возведение в степень с размером чисел), но это немного касательно и было бы лучше в своем собственном вопросе.
DW
1
@DW: Спасибо, когда у меня будет время, я сделаю так, как ты предлагаешь!
j_random_hacker

Ответы:

13

В комментарии упоминается сокращение с X3C до ПОДВОДНОГО ПРОДУКТА, приписываемое Яо. Учитывая цель сокращения, было нетрудно догадаться, каким могло быть снижение.

Определения:

Точная крышка на 3 комплекта (X3C)

Дано конечное множество с | X | кратное 3 и набор C из 3-элементных подмножеств X , содержит ли C точное покрытие C для X , где C C и каждый элемент в X встречается ровно один раз в C ?X|X|CXCCXCCXC

СУБСЕТНЫЙ ПРОДУКТ

Имея список чисел и цель k , существует ли подмножество чисел из L , произведение которых равно k ?LkLk

Чтобы уменьшить экземпляр X3C до экземпляра SUBSET PRODUCT:

  1. Установить биективное отображение между членами и первым | X | простые числа. Замените члены подмножеств X и C сопоставленными простыми числами.X|X|XC

  2. Для каждого подмножества в умножьте его члены вместе; результирующий список продуктов L для экземпляра SUBSET PRODUCT. Поскольку простые числа используются для отображения на шаге 1, произведения гарантированно эквивалентны, если подмножества эквивалентны по теореме об уникальной факторизации .CL

  3. Умножьте члены вместе; В результате получается значение k для экземпляра SUBSET PRODUCT.Xk

Простые множители точно члены X . Простые множители чисел в L точно соответствуют членам C подмножеств. Поэтому любое решение нового экземпляра SUBSET продукта может быть превращено в раствор X3C путем сопоставления членов раствора L обратно к подмножествам в С .kXLCLC

Каждый из 3 шагов преобразования включает в себя операции, полиномиальные по размеру ввода или размер члена X . Первый | X | простые числа могут быть сгенерированы во времени O ( | X | ) с помощью сита Эратосфена и гарантированно помещаются в пространство O ( | X | 2 ln | X | ) по теореме простых чисел .|X|X|X||X|O(|X|2ln|X|)

Кайл Джонс
источник
1
+1, но для сокращения, я думаю, мы требуем, чтобы первое | X | простые числа могут быть представлены в виде числа битов, полиномиальных по | X | - Прав ли я в этом, и если да, есть ли у нас эта гарантия?
j_random_hacker
1
Отличный момент. Я добавил параграф для решения этой проблемы.
Кайл Джонс
1
Спасибо, эта теорема это цементирует! Не для мелочей, но в соответствии со страницей, на которую вы ссылаетесь, k-е простое число приблизительно равно k log k, и, учитывая, что сито Эратосфена, по-видимому, вычисляет все простые числа до n за время O (n log log n) , подставляя n = k log k, по-видимому, дает время O (k * log (k) * log (log (k log k))), а не O (k) (ваше O (| X |)), для вычисления первого k простой путь таким образом.
j_random_hacker
1
Кайл Джонс, разве не важно, что шаг 3 создаст число экспоненциального размера? Это сокращение действительно полиномиального времени? k
user1742364
3
kk|X|O(n2)kPXkO(logP)
9

Согласно [ 1 ]: да, это

Я также цитирую ту же ссылку: Комментарии: между этим и проблемой 42 существует тонкое техническое различие: в первом случае используется псевдоэффективный алгоритм, полученный путем представления чисел в унарном виде; однако, если все NP-полные проблемы не могут быть решены с помощью быстрых алгоритмов, проблема подмножества продукта не может быть решена «эффективными» методами, использующими даже это необоснованное входное представление.

посмотрите на [2] для сокращения. [2]: Товарищи Майкл и Нил Коблиц. «Фиксированная сложность параметров и криптография». Прикладная алгебра, алгебраические алгоритмы и коды, исправляющие ошибки (1993): 121-131.

AJed
источник
1
Фактическое сокращение или цитирование в журнальной статье было бы хорошо, если это возможно.
templatetypedef
3
@templatetypedef В Garey и Johnson приведено точное покрытие на 3 комплекта. Из-за личного общения с Яо.
AJed
Сокращение в криптографическом документе связано с другой проблемой, в которой целевой продукт заменяется конгруэнцией с целевым числом по модулю, указанному в данном примере. (Хотя, если я правильно понимаю доказательства, они все равно получают слабую твердость, потому что модуль имеет экспоненциальную величину.)
Джеффри Босбум