Является ли это допустимой задачей математического выражения P или NP?

Этот вопрос чисто из любопытства. Я не хожу в школу на лето и собирался реализовать алгоритм, чтобы решить эту проблему просто для удовольствия. Это привело к вышеупомянутому вопросу, насколько сложна эта проблема?

Задача: вам дан список натуральных чисел, набор математических операторов и знак равенства (=). можете ли вы создать правильное математическое выражение, используя целые числа (в том же порядке) и операторы (любое количество раз)?

Пример завещания должен прояснить любые вопросы:

задано: {2, 3, 5, 25}, {+, -, *, /}, {=}
вывод: ДА

выражение (я думаю, только одно) равно (2 + 3) * 5 = 25. вам нужно только вывести ДА/НЕТ.

Думаю проблема в НП. Я говорю это, потому что это проблема принятия решения (ответ ДА/НЕТ), и я могу найти недетерминированный поливременной алгоритм, который ее решает.

а. недетерминированный выбор последовательности операторов для размещения между целыми числами.
b. убедитесь, что ваш ответ является допустимым математическим выражением (это можно сделать за постоянное время).

В этом случае большой вопрос заключается в следующем: проблема в P? (т. е. существует ли детерминированный поливременной алгоритм, который решает это?) ИЛИ Является ли проблема NP полной? (т. е. можно ли свести к этой проблеме известную проблему NP Complete? или, что то же самое, можно ли свести к этой проблеме каждый язык NP poly time?) ИЛИ ни то, ни другое? (т.е. проблема в NP, но не в NP Complete)

Примечание. В этой постановке задачи предполагается, что P не равно NP. Кроме того, хотя я новичок в Stack Overflow, я знаком с тегом домашнего задания. Это действительно просто любопытство, а не домашнее задание :)


person trh178    schedule 10.06.2009    source источник
comment
P != NP — широко распространенная гипотеза. Это не доказано и не опровергнуто. Когда я задавал вопрос, мне всегда говорили, чтобы он был максимально точным. Вот почему я счел необходимым включить это в качестве примечания.   -  person trh178    schedule 10.06.2009
comment
@Toddeman - Хороший рациональный, умный комментарий удален!   -  person Gavin Miller    schedule 10.06.2009
comment
Ваше выражение подразумевает множество других допустимых выражений: 2+3 = 25/5, 25/5 - 3 = 2 и так далее. Конечно, это не имеет прямого отношения к вопросу.   -  person SingleNegationElimination    schedule 10.06.2009
comment
@TokenMacGuy - в вопросе говорится, что целые числа должны быть в том же порядке, что и заданный.   -  person Shane Fulmer    schedule 10.06.2009
comment
Поскольку целые числа должны оставаться в порядке, называть их набором просто все запутывает. Наборы не имеют порядка.   -  person David Thornley    schedule 10.06.2009
comment
@ Дэвид Торнли - хороший момент. отредактировано, чтобы исправить.   -  person trh178    schedule 10.06.2009


Ответы (7)


Прямое сокращение от проблемы с разделами (которая является NP-полной) — при заданном наборе N целые числа S, входными данными для задачи «Действительная математика» будут — элементы S, N-2 оператора «+» и знак «=».

person user120571    schedule 10.06.2009
comment
Вы не можете указать количество операторов. Однако начинайте и заканчивайте последовательность целых чисел с 0 и разрешайте знаки + и -. Это действительное сокращение. - person David Thornley; 10.06.2009
comment
+1 за комментарий Дэвида Торнли, что делает его правильным ответом :) - person ShreevatsaR; 10.06.2009

Кажется, есть какая-то путаница в том, как проверять NP-полноту. NP-полная задача в определенном смысле не менее сложна, чем любая другая задача из NP. Предположим, мы сравнивали с 3SAT, как это пытаются сделать некоторые плакаты.

Теперь сведение данной задачи к 3SAT ничего не доказывает. Тогда верно, что если 3SAT можно решить эффективно (имеется в виду P = NP), данная проблема может быть решена эффективно. Однако, если данная задача может быть решена эффективно, то, возможно, она соответствует только легким частным случаям 3SAT.

Пришлось бы сводить 3SAT к данной задаче. Это означает, что нам нужно было бы составить правило для преобразования произвольных задач 3SAT в примеры данной задачи, чтобы решение данной задачи подсказывало нам, как решить задачу 3SAT. Это означает, что 3SAT не может быть сложнее данной задачи. Поскольку 3SAT является самым сложным из возможных, данная задача также должна быть максимально сложной.

Сокращение от проблемы с разделом работает. Эта проблема работает следующим образом: учитывая мультимножество S целых чисел, можем ли мы разделить его на два непересекающихся подмножества, которые включают каждый член S, так что суммы непересекающихся подмножеств равны?

Для этого мы строим последовательность, начинающуюся с 0, содержащую каждый элемент S, а затем 0. Мы используем {+, -} в качестве набора операций. Это означает, что каждый элемент S будет либо добавлен, либо вычтен, чтобы в сумме получить 0, а это означает, что сумма добавленных элементов такая же, как сумма вычтенных элементов.

Следовательно, эта задача не менее сложна, чем задача о разбиении, поскольку мы можем решить примерную программу разбиения, если решим заданную, и, следовательно, NP-полную.

person David Thornley    schedule 10.06.2009

Хорошо, во-первых, вы указываете «набор» целых чисел, но набор по определению неупорядочен, поэтому вы имеете в виду «список» целых чисел.

Кроме того, я собираюсь сделать здесь предположение, которое может быть неверным, а именно то, что знак = всегда появляется ровно один раз, между предпоследним и последним целым числом в вашем списке. Если вы разрешите знак равенства в середине, это станет более сложным.

Вот фактическое доказательство того, что «действительное математическое выражение» (VME) является NP-полным. Мы можем выполнить сокращение из суммы подмножества. ЗАМЕЧАНИЕ: определение суммы подмножества в Википедии требует, чтобы подмножество было непустым. На самом деле верно, что более общая проблема суммы подмножеств, допускающая пустые подмножества, является NP-полной, если желаемая сумма также является частью входных данных. Я не предоставлю это доказательство, если меня не попросят. Учитывая экземпляр суммы подмножества {i_1, i_2, ..., i_n} вместе с желаемой суммой s, создайте следующий экземпляр VME:

{0, i_1, 0, i_2, 0, ..., i_n, s}, {+, *}, {=}

ЕСЛИ экземпляр суммы подмножества разрешим, то существует некоторое подмножество целых чисел, которое добавляет к 0. Если целое число i1 является частью суммы, добавьте его с соответствующим нулем (сразу слева), и если i1 не является частью суммы, умножьте ее. Между каждым нулем и членом справа поставьте знак сложения.

Возьмем пример из Википедии

{−7, −3, −2, 5, 8}

где сумма { −3, −2, 5} равна 0, мы бы закодировали это как

{0, -7, 0, -3, 0, -2, 0, 5, 0, 8, 0}

и результирующее выражение будет

{0*7 + 0 + -3 + 0 + -2 + 0 + 5 + 0*8 = 0}

Теперь нам также нужно показать, что любое решение этого экземпляра VME приводит к решению экземпляра суммы подмножества. Это проще, чем вы думаете. Когда мы смотрим на результирующее выражение, мы можем сгруппировать числа на те, которые умножаются на 0 (в том числе как часть цепного умножения), и те, которые не умножаются. Любое число, умноженное на ноль, не входит в итоговую сумму. Любое число, не умноженное на ноль, должно быть добавлено к итоговой сумме.

Таким образом, мы показали, что этот экземпляр VME разрешим, ЕСЛИ и ТОЛЬКО ЕСЛИ разрешим соответствующий экземпляр суммы подмножества, поэтому редукция завершена.

РЕДАКТИРОВАТЬ: Уменьшение раздела (с комментарием) также работает и лучше, потому что позволяет поставить знак равенства в любом месте. Аккуратный!

person Martin Hock    schedule 10.06.2009

Сейчас нет времени на полный ответ, но вы можете описать сокращение этой проблемы до Задача о рюкзаке.

Используя динамическое программирование, вы можете достичь псевдополиномиального временного решения. Обратите внимание, что это не противоречит тому факту, что проблема действительно NP Complete.

person Yuval Adam    schedule 10.06.2009
comment
-1 было для решения за полиномиальное время, что неверно, учитывая, что рюкзак - это NP. - person Gavin Miller; 10.06.2009
comment
однако теперь вы указали псевдополиномиальное время, поэтому я отказался от своего отрицательного голоса. - person Gavin Miller; 10.06.2009
comment
Задача о рюкзаке имеет решение за псевдополиномиальное время, хотя на самом деле она NP-полная. Это связано с тем, как определяется вход в проблему. См. ссылку на википедию. Случайно пропустил псевдо-часть, сейчас исправил. - person Yuval Adam; 10.06.2009
comment
вы можете описать сведение этой задачи к задаче о рюкзаке — это не поможет. Чтобы доказать, что эта задача является NP-полной, вам нужно свести от NP-полной задачи к этой задаче. - person ShreevatsaR; 10.06.2009

На самом деле это не ответ на ваш сложный вопрос, но ваша проблема немного похожа на Обратный отсчет проблема. Быстрый поиск нашел эту статью: http://www.cs.nott.ac.uk/~gmh/countdown.pdf

person Joe Freeman    schedule 10.06.2009

В данный момент у меня нет времени на разработку доказательства, но предчувствие подсказывает мне, что его может не быть в P. вы можете определить грамматику для арифметики, и тогда этот вопрос сводится к поиску допустимого дерева синтаксического анализа. который использует все эти терминалы. я полагаю, что эта проблема в NP, но вне P.

person Autoplectic    schedule 10.06.2009

person    schedule
comment
Не могли бы вы показать, как 3SAT сводится к этому? Я честно не придумываю способ. Как бы вы смоделировали задачу 3SAT как последовательность целых чисел и набор операций? - person David Thornley; 10.06.2009