Это похоже на SAT, за исключением того, что мы знаем назначение каждой переменной, но не знаем назначения какого-либо логического оператора. В таком случае, является ли поиск присваивания каждого оператора таким образом, чтобы выражение оценило данное логическое значение как проблему NPC?
На самом деле, мне было интересно, если поиск назначения арифметических операторов для удовлетворения целочисленного арифметического выражения (например, = 10) является NP завершенным?
cc.complexity-theory
np-hardness
DSounders
источник
источник
Ответы:
Я думаю , что с сложением и вычитанием проблема с разделами , которая является NP-сложной, сводится к вашей второй проблеме.
Учитывая множество мы создаем задачуS={s1,s2,…,sn}
o p 1 s 2 o p 2 s 3 o p 3 … o p n - 1 s n = 0 .s1 op1 s2 op2 s3 op3 …opn−1 sn=0
Если решение существует, мы создаем два набора:
Эти два набора должны иметь одинаковую сумму при установке нашей исходной задачи, поэтому проблема разбиения решена. Это показывает, что не только сложно найти реальное решение этой проблемы, но и на самом деле трудно определить, существует ли решение (по крайней мере, для сложения и вычитания).
Для набора операций, который не позволяет создавать отрицательные целые числа, например, умножение и сложение, это не так ясно. Кроме того, это только показывает, что проблема слабо NP-трудна; может быть сокращение, которое дает более сильный результат, чем этот.
источник
Краткий ответ. Операторская версия SAT эффективно разрешима - по крайней мере, если мы примем произвольные схемы двухвходных вентилей без разветвления, при любом желаемом выборе стробирования.
Длинный ответ Я предполагаю следующую форму логической проблемы:
В частности, мы не навязываем конкретную структуру схемам (кроме двоичных деревьев), не допускаем разветвления (так что каждый бит используется только один раз), и вентили могут быть асимметричными. Допуская только двухбитные вентили, я исключаю вентиль NOT (но который может быть смоделирован наличием множества вентилей, которые связаны друг с другом отрицаниями, такими как AND / NAND ; также я исключаю вентили, которые просто выводят константы без входов , так что число вентилей в схеме фактически всегда будет для битного входа. Для краткости ниже я буду называть 2-TREE-OPSAT просто OPSATC x n−1 n ; хотя анализ проблемы может стать намного более сложным для схем, допускающих произвольные k- входные вентили ( k-TREE-OPSAT ) или допускающих разветвление (которое мы могли бы назвать k-FANOUT-OPSAT ).
[ Отредактировано, чтобы добавить : мы можем легко адаптировать это, чтобы рассмотреть более общую проблему текущей ревизии вашего вопроса, в которой мы пытаемся отобразить данный к целевому значению , поменяв ролями и в приведенном ниже анализе; это приводит к смене ролей AND и OR , NAND и NOR и т. д. ]x∈{0,1}∗ b∈{0,1} 0 1
Для фиксированного выбора проблема выбора подходящего дерева с подходящими воротами не отличается от логической дизъюнкции: использование эквивалентностей, таких как мы можем выполнять сокращения между коллекциями, связывающими более сложные наборы ворот с простыми (и мощными) наборами ворот; a может говорить о том, что один набор гейтов может эмулировать другие вентили, не принадлежащие этому набору, мудро выбирая некоторый элемент который имеет тот же эффект (когда представлен с определенным входом), что и вентиль , В частности, определенные комбинации вентилей (такие как ) могут моделировать постоянную функцию, дающуюx∈{0,1}n
Далее мы рассмотрим наборы затворов, включающие в себя различные типы затворов , а затем исключим эти затворы из более поздних случаев анализа, чтобы показать, что наборы затворов, включающие какой-либо один из затворов, приводят к решаемой проблеме. Мы будем исходить в порядке числа двух битовых строк , которые удовлетворяют ворота в вопросе, начиная с постоянной ворот до постоянной ворот.G 1 0
Для любого набора логических элементов который содержит постоянные вентили , мы можем просто построить схему используя только эти вентили, и в этом случае принимает любой .G G(x,y)=1 C C x
ИЛИ и НАНД. Для любого набора вентилей который содержит : если все другие вентили удовлетворяют , то нет никакого выбора для выбора других вентилей, кроме в построении схемы . Схема только ворот принимает любую строку кроме . В противном случае существует элемент такой что тавтологичен. Таким образом, любой экземпляр OPSAT с легко; и подобные замечания относятся к .G OR G∈G G(x,y)⟹OR(x,y) OR C OR x∈0∗ G∈G {G,OR} OR∈G NAND∈G
Имплицитные ворота. Рассмотрим вентиль , который выводит ноль только в том случае, если . Для дальнейшего аналогичного анализа будет применяться для ворот . Рассмотрим любую строку . Если заканчивается на , разложить на подстроки вида ; к каждому такому мы рекурсивно применяем справа налево, что дает вывод для каждого . (Для подстроки длиной 1 мы используем тривиальную схему, т.е. оставляем этот вход в покое.) Аналогично, еслиG(x,y)=¬x∨y (x,y)=(1,0) G′(x,y)=x∨¬y
x∈{0,1}n x 0 x wj=1∗0 wj G 0 wj x заканчивается на , разлагает на подстроки вида и рекурсивно применяет слева направо к каждому , что дает выход для каждого . Таким образом, мы можем свести задачу к построению цепей, которые удовлетворяются либо на либо на , где - это число подстрок или . Для мы можем согласиться с использованием gates, рекурсивно применяя слева направо. Это просто оставляет дело1 x wj=0∗1 G wj 1 wj 0m 1m m 1∗0 0∗1 m⩾2 G G m=1 , для которого проблемным случаем являются входы . При любая схема, состоящая только из элементов, будет давать только более короткие строки вида , что в конечном итоге приведет к однобитовой строке : так что ни одна схема элементов не может быть удовлетворена этот вход. Если есть также ворота для которых , то тавтологично; или, если есть вентиль для которого , мы можем уменьшить строки видаx∈1∗0
x=1∗0 G 1∗0 0 G H∈G H(1,0)=1 {G,H} H∈G H(1,1)=0 11∗0 в строки вида , применяя к первым двум битам . В противном случае не может быть построена схема, которая принимает .
Таким образом, для любого набора гейтов который содержит импликатообразные ворота, OPSAT прост.(1∗0)∗ H x x∈1∗0
G
Отрицания проекций. Рассмотрим ворота и . Мы рассматриваем , анализ с аналогичен. Сам по себе может принять любую строку в для , уменьшив последние бит до одного бита, а затем применив ; и он может аналогичным образом принять для , уменьшив последние бита до одного бита, а затем применив схему¬π1(x,y)=¬x ¬π2(x,y)=¬y ¬π1 ¬π2 ¬π1 0(0|1)n−1 n⩾2 n−1 ¬π1 1(0|1)n−1 n⩾3 n−2 ¬π1(¬π1(x1,x2),x3) , Единственные входы, которые не могут принять схемы - это или ; Определение того, принимают ли они какие-либо дополнительные врата, тривиально. Таким образом, ОПСАТ легок для отрицания прогнозов.¬π1 10 11
ПАРИТЕТ и РАВЕНСТВО . Рассмотрим ворота . Очевидно, что множество ворот может быть точно удовлетворено только строками с нечетным числом 1s; мы рассматриваем преимущества добавления любых других ворот.PARITY(x,y)=(x∨¬y)∧(¬x∨y) G={PARITY} x∈{0,1}n
Таким образом, OPSAT легко для любого содержащего . Аналогичный анализ применяется для логического элемента как для логического элемента : потому что , схемы из ворота существенно подсчитывают четность числа сек на входе. Затем мы можем свести анализ для к анализу путем замены и .G PARITY
EQUAL PARITY EQUAL(x,y)=¬PARITY(x,y)=¬PARITY(¬x,¬y) EQUAL 0 EQUAL PARITY 0 1
Проекционные ворота. Ворота и , взятые сами по себе, могут создавать только схемы, которые принимают строки, начинающиеся или заканчивающиеся на соответственно. Рассмотрим эффект увеличения шлюза любым другим вентилем (аналогичный анализ выполняется для ):π1(x,y)=x π2(x,y)=y 1 π1 π2
Таким образом, для любого другого гейта, который мы можем дополнить (или ), мы получим либо тавтологичный набор, не получим никакой дополнительной принимающей способности по сравнению с (или ), либо можем уменьшить до более раннего простого случая OPSAT , Тогда любой экземпляр OPSAT с или легко.π1 π2 π1 π2 π1∈G π2∈G
Дельта-функция ворот. Рассмотрим двухбитные вентили, для которых имеется только один вход, удовлетворяющий им: , , и . Схемы, выполненные только с воротами могут принимать только строку : добавление к ним любых других шлюзов дельта-функций позволяет имитировать либо , , либо , что является решаемыми случаями; аналогичные замечания относятся к . Кроме того, набор может также использоваться для имитацииAND NOR G10(x,y)=x∧¬y G01(x,y)=¬x∧y AND 1∗ EQUAL π1 π2 NOR {G01,G10} PARITY Ворота. Таким образом, можно либо сосредоточиться на ворота или , возможно , с добавлением затвора . Мы фокусируемся на , причем случай аналогичен. Схемы, сделанные только из могут быть построены так, чтобы принимать , за исключением строки , путем применения произвольной схемы к последним битам и затем применения схемы . Ясно, что строка не может быть принята или ; и мы можем показать по индукции, что любойG10 G01 Z(x,y)=0 G10 G01
G10 1(0|1)n−1 11 n−2 G10(x1,G10(x2,x3)) 11 G10 Z G10 Схема, которая принимает строку, должна иметь промежуточные результаты от логических элементов в самой левой ветви, дающих , до самого левого входа. Дополнительное преимущество не достигается при добавлении ворот. Следовательно, схемы могут принимать только .1 Z G10 x∈1(0|10|11)(0|1)∗
Наконец, цепи, состоящие только из вентилей, не принимают входные данные.Z
Поскольку каждый ворота приводит к четко определенному и в целом довольно большому классу входов , которые он принимает, с дополнительными воротами , стремящихся к банальным проблемам, мы находим , что 2-ДЕРЕВО-OPSAT в P .
источник