Этот вопрос чисто из любопытства. Я не хожу в школу на лето и собирался реализовать алгоритм, чтобы решить эту проблему просто для удовольствия. Это привело к вышеупомянутому вопросу, насколько сложна эта проблема?
Задача: вам дан список натуральных чисел, набор математических операторов и знак равенства (=). можете ли вы создать правильное математическое выражение, используя целые числа (в том же порядке) и операторы (любое количество раз)?
Пример завещания должен прояснить любые вопросы:
задано: {2, 3, 5, 25}, {+, -, *, /}, {=}
вывод: ДА
выражение (я думаю, только одно) равно (2 + 3) * 5 = 25. вам нужно только вывести ДА/НЕТ.
Думаю проблема в НП. Я говорю это, потому что это проблема принятия решения (ответ ДА/НЕТ), и я могу найти недетерминированный поливременной алгоритм, который ее решает.
а. недетерминированный выбор последовательности операторов для размещения между целыми числами.
b. убедитесь, что ваш ответ является допустимым математическим выражением (это можно сделать за постоянное время).
В этом случае большой вопрос заключается в следующем: проблема в P? (т. е. существует ли детерминированный поливременной алгоритм, который решает это?) ИЛИ Является ли проблема NP полной? (т. е. можно ли свести к этой проблеме известную проблему NP Complete? или, что то же самое, можно ли свести к этой проблеме каждый язык NP poly time?) ИЛИ ни то, ни другое? (т.е. проблема в NP, но не в NP Complete)
Примечание. В этой постановке задачи предполагается, что P не равно NP. Кроме того, хотя я новичок в Stack Overflow, я знаком с тегом домашнего задания. Это действительно просто любопытство, а не домашнее задание :)