Учитывая язык L, определенный машиной Тьюринга, который его решает, возможно ли алгоритмически определить, лежит ли L в NP?
Учитывая язык L, определенный машиной Тьюринга, который его решает, возможно ли алгоритмически определить, лежит ли L в NP?
Ответы:
Во-первых, по теореме Райс, это свойство ТМ, которое зависит только от языка, который они вычисляют, поэтому оно не может быть вычислимо.
Но, более того, известно , что индекс набор (то есть, множества ДЧ , что языки в вычислительных N P ) является Σ 0 3 -полным ( Σ 0 3 в арифметической иерархии вычислимости, не полиномиальная иерархия).
Подобные вопросы были впервые исследованы Хайеком . Для получения дополнительной информации см., Например, эту статью Кена Ригана.
Еще несколько замечательных самородков из статьи Хайека:
Ответ на ваш буквальный вопрос - нет, как отметил Джошуа Грохув.
Однако, как заявил Хольгер, можно в линейное время проверить, «недетерминирован ли машина Тьюринга (NTM)» самосинхронизируется и останавливается после n ^ k шагов для некоторой константы k, с помощью некоторого стандартного способа моделирования часов (таких как код ниже). Часто, когда статья или книга предполагают (неправильно), что можно определить, является ли NTM полиномиальным временем, это то, что они действительно имеют в виду. Возможно, именно поэтому вы задали вопрос? (У меня был тот же вопрос, когда я впервые изучил теорию сложности и где-то увидел утверждение о том, что можно проверить, является ли ТМ многопоточным.) Реальный вопрос заключается в том, почему кто-то может захотеть сделать это, и я расскажу ниже после объяснения как .
Есть много способов добавить такую функцию часов. Например, представьте на входе x длину n, поочередно выполняя одну инструкцию тактируемого «первичного алгоритма», а затем одну инструкцию следующего алгоритма, которая заканчивается (что-то близкое к) n ^ k шагов:
для i_1 = 1 до n для i_2 = 1 до n ... для i_k = 1 до n нет-оп; возвращение;
Если приведенный выше код возвращается до остановки основного алгоритма, то остановите все вычисления (скажем, с отклонением).
Алгоритм, который решает, имеет ли NTM такую форму, если интерпретировать его как попытку алгоритма определить, является ли его входной сигнал многовременным NTM, сообщит о ложных отрицаниях: некоторые NTM гарантированно останавливаются за полиномиальное время, даже если они не чередуют выполнение одного оператора алгоритма с одним оператором часов, как в приведенном выше коде (следовательно, они будут отклонены, несмотря на то, что они имеют многократное время).
Но нет ложных срабатываний. Если NTM проходит тест, то он определенно останавливается за полиномиальное время, следовательно, он определяет некоторый язык NP. Однако, возможно, поведение его основного первичного алгоритма изменяется, если часы иногда заканчиваются до того, как первичный алгоритм останавливается, вызывая отклонение вычислений, даже если первичный алгоритм мог бы принять, если дать достаточно времени для завершения. Поэтому решаемый язык может отличаться от языка основного алгоритма. Нои это является ключевым, если выполняемый основной алгоритм на самом деле является алгоритмом полиномиального времени, работающим в момент времени p (n), и если постоянная k в часах достаточно велика, чтобы n ^ k> p (n), то основной алгоритм всегда останавливается до истечения времени. В этом случае ответ основного алгоритма не изменяется, поэтому основной алгоритм и синхронизированный NTM, имитирующий его, выбирают один и тот же язык NP.
Почему это важно? Это означает, что можно «перечислить все языки NP» (которые, как я сказал, в литературе часто неточно обозначаются как «решить, является ли данный NTM многовременным» или «перечислить все многовременные NTM»). Точнее, можно перечислить бесконечный список NTM M_1 M_2, ..., со свойствами, которые
Чего не происходит, так это того, что каждый NTM за полиномиальное время находится в списке. Но каждый язык NP имеет бесконечное количество NTM, представляющих его. Таким образом, каждый NP-язык гарантированно имеет по крайней мере некоторые из своих репрезентативных NTM в списке, в частности, все эти NTM с достаточно большим индексом k, который n ^ k превышает время работы M_k.
Это полезно для выполнения трюков типа диагонализации, которые требуют алгоритмического перечисления таких бесконечных (или неограниченных) списков всех языков NP. И, конечно же, все это обсуждение применимо ко многим другим типам машин, кроме многополосных NTM, таких как поливременные детерминированные TM.