Даны от двоичной матрицы (записи являются или ), проблема в том , чтобы определить, существует два двоичных векторов таким образом, что (все операции , выполняемые над ). Эта проблема NP-сложная?
Это ясно в NP, поскольку вы можете дать два вектора в качестве свидетелей.
Эквивалентно: если дано , существует ли ненулевой вектор такой, что ?
Эквивалентно: С учетом векторов над , существуют два различных подмножества , B ⊆ X такое , что Σ х ∈ х = Σ х ∈ В х ?
cc.complexity-theory
np-hardness
linear-algebra
Мухаммед Аль-Туркистани
источник
источник
Ответы:
Я использую эквивалентную формулировку user17410:
Вход: векторов X = { x 1 , … , x m } над { 0 , 1 } n , n является частью входного вопроса. Вопрос: Существуют ли два разных подмножества A , B ⊆ X, таких что ∑ x ∈ A x = ∑ x ∈ B xn X={x1,…,xm} {0,1}n n
A,B⊆X
Доказательство твердости включает в себя множество промежуточных сокращений, которые следуют той же «цепочке», используемой для доказательства твердости стандартной задачи EQUAL SUBSET SUM:
X3C подмножество SUM ≤ РАЗДЕЛА ≤ четный-нечетный РАЗДЕЛА ≤ РАВНО SUBSET СУММА≤ ≤ ≤ ≤
(Я все еще проверяю это, так что это может быть неправильно :)
ШАГ 1
Например, набор векторов:
Эквивалентно 0-1 векторам:
Таким образом, следующая проблема является NP-полной.
ШАГ 3
( ) Предположим, что существует такой, что ; мы устанавливаем и ; мы имеем⇒ A⊆X ∑x∈Ax=t B1=A∪{b′} B2=B∖B1=X∖{A}∪{b′′}
( ) Предположим, что и имеют равную сумму. не могут оба принадлежать одному и тому же набору (в противном случае их сумма равна и не может быть "сбалансирована" элементами в другом наборе). Предположим, что ; у нас есть:⇐ B1 B2 b′,b′′ ≥3S b′=−t+2S∈B1
Следовательно, мы должны иметь а является правильным решением для 0-1 VECTOR SUM.∑x∈B1∖{b′}x=t B1∖{b′}
Мы допускаем только 0-1 векторов в множестве , поэтому векторы должны быть «представлены в унарном виде», как показано в ШАГЕ 2.B b′,b′′
ШАГ 3
Проблема по-прежнему NP-полная, если векторы нумеруются из и два подмножества должны иметь одинаковый размер, и мы требуем, чтобы содержал ровно один из для (таким образом, из-за ограничения равного размера, другой элемент пары должен быть включен в ) ( 0-1 ВЕКТОР-ДАЖЕ-РАЗДЕЛЕНИЕ РАЗДЕЛА ).x1,...,x2n X1,X2 X1 x2i−1,x2i 1≤i≤n X2
Доказательство:: Сокращение от 0-1 VECTOR PARTITION и аналогично уменьшению от PARTITION к EVEN-ODD PARTITION. Если - это векторов более замените каждый вектор двумя векторами более :X={x1,...,xm} m {0,1}n {0,1}2n+2m
Из-за элемента векторы и не могут содержаться в одном и том же подмножестве; и правильное решение 0-1 ВЕКТОРНОГО РАЗДЕЛА ВЕКТОРА соответствует действительному решению исходного 0-1 ВЕКТОРНОГО РАЗДЕЛА (просто выберите элементы 2m + 1..2m + n каждого вектора решения, отбрасывая векторы, которые содержат все нули в этих позициях).2i x′2i−1 x′2i
ШАГ 4
0-1 ВЕКТОРНАЯ РАВНОВЕСНАЯ СУБСЕТНАЯ СУММА (проблема в вопросе) является NP-полной: сокращение от 0-1 ВЕКТОРНОГО РАЗДЕЛЕНИЯ ДАЖЕ-СТОЛБОВ аналогично сокращению от СОБСТВЕННОГО РАЗДЕЛЕНИЯ ДАЖЕ К ОБРАЗНОЙ СУБСЕТЕ, что доказано Герхардом Дж. Вёгингером , Zhongliang Ю., о проблеме равного подмножества суммы : дан упорядоченное множество из векторов над , мы строим множество из векторов над .A={x1,...,x2m} 2m {0,1}n Y 3m {0,1}2m+n
Для каждого вектора мы строим вектор над следующим образом:x2i−1,1≤i≤m y2i−1 {0,1}2m+n
Для каждого вектора мы строим вектор над следующим образом:x2i,1≤i≤m−1 y2i {0,1}2m+n
Мы отображаем элемент вx2m
Наконец, мы добавляем фиктивных элементов:m
Еще раз отметим, что векторы, содержащие значения могут быть представлены «унарно» с использованием группы из 0-1 векторов, как показано в ШАГЕ 2.>1
источник
РЕДАКТИРОВАТЬ: в моем оригинальном доказательстве была ошибка. Теперь я считаю, что это исправлено.
Мы сводим к этой проблеме проблему РАВНЫХ СУММ. Равноправные подмножества сумм - это проблема: при заданном наборе целых чисел найти два непересекающихся подмножества, которые имеют одинаковую сумму. РАВНЫЕ СУБСЕТЫ, как известно, являются NP-полными.m
Предположим, что эти битовые строки были не векторами, а представлениями битных чисел в двоичном виде. Тогда задача будет NP-полной за счет сокращения от EQUAL SUM SUBSETS. Я покажу, как заставить эти векторы вести себя как двоичные числа. Нам нужно уметь делать переноски; то есть для каждой пары смежных координат мы должны иметь возможность заменить вектор ..02 .. на ..10 ...n
Как мы можем сделать это? Нам нужен гаджет, который позволяет нам это делать. В частности, нам нужны два подмножества, чьи суммы равны ..02 .. x и ..10 .. x, где x - битовая строка с использованием новых координат (т. Е. Координат, которые не являются ни одной из координат, составляющих двоичный файл представления), и где есть только один способ создать два подмножества с одинаковой суммой в новых битовых позициях, соответствующих х.n
Это довольно легко сделать. Для каждой пары соседних позиций битов добавьте три вектора следующей формы. Здесь последние два бита являются координатами, которые ненулевые только в этих трех векторах, и каждый бит, явно не указанный ниже, равен 0.
Позвольте мне сделать пример. Мы хотим показать, как работает 5 + 3 = 8.
Вот 8 = 5 + 3 в двоичном виде:
знак равно
Эти битовые строки дают одинаковую сумму в двоичном виде, но не в векторном сложении.
Теперь у нас есть переносы в 1, 2, 4 местах, поэтому нам нужно добавить три уравнения из трех векторов в уравнение, чтобы выполнить эти переносы.
знак равно
Эти наборы теперь имеют одинаковую сумму в сложении векторов. Суммы:
в обоих случаях.
Эта конструкция прекрасно работает, если на одну позицию приходится только один перенос, но потенциально может быть до переносов на позицию, и вам необходимо убедиться, что ваша конструкция может обрабатывать до переносов, и что разные переносы не мешают друг с другом. Например, если вы добавили два разных набора из трех векторов для одной и той же пары смежных позиций (что я и предложил в моем первоначальном доказательстве):n n
у вас проблема в том, что вы получаете два разных набора векторов, дающих одинаковую сумму:
знак равно
Как это исправить? Добавьте один набор векторов, который позволяет переносить 1, один набор, который позволяет переносить 2, и один набор для 4, 8, , 2 . Я не собираюсь сейчас разбирать детали этой конструкции, но она должна быть достаточно простой. Поскольку каждое число имеет уникальное двоичное представление, это позволит вам переносить любое число до . Например, для переноса 4 вам нужно найти четыре вектора, которые имеют одинаковую сумму с двумя векторами, и для которых это единственное линейное соотношение между двумя наборами. Например, набор… ⌊logn⌋ n
работает. Вы можете легко проверить, что отношение
знак равно
является единственным возможным отношением между этими шестью векторами, потому что матрица, образованная этими шестью строками, имеет ранг 5.
источник
Это не отвечает на вопрос, но может содержать некоторые полезные замечания. Я не хотел помещать это как комментарий, потому что я нахожу длинные фрагментированные комментарии утомительными, чтобы читать
Переформулировка проблемы, как указано в моем комментарии к вопросу:
Вход: векторов более , является частью вводаn X={x1,…,xn} {0,1}m m
Вопрос: Существуют ли два разных подмножества таких чтоA,B⊆X
Может быть, я должен отметить, что нужно рассматривать как мультимножества (векторы не должны быть уникальными), а суммы превышают .X,A,B N
Я предлагаю называть эту проблему 2SUBSET-BINARY-VECTOR-SUM из-за того, что мы ищем 2 подмножества бинарных векторов.
Некоторые наблюдения:
Если содержит один вектор несколько раз, ответ становится тривиальным. Пусть и . Тогда работает как свидетель.X xi,xj∈X xi=xj A={xi},B={xj}
Если один из векторов в содержит только 0, он тривиален. Пусть будет этим вектором. Тогда для каждого следует свидетель.X 0∈X A⊆X∖{0} B=A∪{0}
Предположим , что существует свидетель такое , что . Это означает, что каждый вектор, который находится в но не в должен состоять только из нулей.A⊂B B A
Для перечисления вышеупомянутых двух пунктов: свидетель с существует тогда и только тогда, когда хотя бы один из векторов в содержит только нулиA,B A⊂B X
Предположим, существует такой свидетель , что . Вы можете удалить общие элементы в обоих наборах и при этом иметь правильного свидетеля.A,B A∩B≠∅
Эти точки означают, что вы ищете разбиение на два набора ( ) или три набора. Третий набор представляет векторы , которые не были выбраны для любого или . Пусть - числа Стирлинга второго рода - количество способов разбить набор из объектов на непустых разбиений. Тогда есть возможных решений, поэтому грубая сила здесь неосуществима.X A∪B=X A B S(n,k) n k S(n,3)+S(n,2)
Если вы позволите векторам превышать (2SUBSET-VECTOR-SUM), то мы можем попытаться свести UNIQUE-PARTITION к этой проблеме. Пусть и просто пропустите экземпляр UNIQUE-PARTITION (если он содержит 0, сначала удалите его, чтобы избежать тривиальных решений). Однако это не работает, поскольку возможные решения не обязательно содержат все входные элементы:Nm m=1 A,B
Рассмотрим . Это не в UNIQUE-PARTITION, но в 2SUBSET-VECTOR-SUM. Возможно, используя мы можем использовать дополнительные векторные записи, чтобы заставить разделить ввод.{1,2,3,5} A={1,2},B={3} m>1 A,B
источник