Теоретическая сложность трудно проверить значение

13

Функция подсчета простых чисел demoted определяется как число простых чисел, меньших или равных .π(Икс)Икс

Мы можем определить решение проблемы из следующим образом:π(Икс)

Учитывая два числа Икс и N , записанные в двоичном виде, решить, если π(Икс)знак равноN .

Мы с другом говорили об этой проблеме ранее сегодня. Для этой задачи есть алгоритм псевдополиномиального времени - просто посчитайте до Икс , используя пробное деление на каждом шаге, чтобы увидеть, сколько чисел простое, и проверьте, равно ли оно N . Проблема также в PSPACE, так как алгоритм, который я только что описал, может быть реализован для использования только полиномиального вспомогательного пространства.

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

Какой класс сложности наиболее подходит для этой проблемы?

Благодарность!

templatetypedef
источник
обычно эти типы проблем, как правило, зависят от гипотезы Римана ... у вас есть много "близлежащих" функций, которые имеют эту связь ...
vzn

Ответы:

11

Это очень открытая проблема. Я нарисую некоторые классы, в которые проблема может «естественно» вписаться.

Ваше определение несколько неловко, с проблемой трудно вписаться в любой существующий класс сложности. Определенный вами язык является пересечением языков и { ( x , n ) | π ( x ) n } . Так, если, например, был в классе то был бы в{(x,n)|π(x)n}{(x,n)|π(x)n}{(x,n)|π(x)n}K{(x,n)|π(x)n}coK, Это затрудняет определение характеристики языка, который вы определили, потому что нужно указать «пересечение языка в с языком в », чтобы дать самую узкую границу.KcoK

Проблема «Вычислить » - это проблема в , где - это класс задач вида «Вычислить число принимающих путей недетерминированной полиномиальной ТМ». Ясно, что мы можем построить недетерминированный TM, который угадывает число , и затем (с AKS) проверяет, является ли простым.π(X)#P#PFPSPACEqxq

Вариант решения - , это класс языков, имеющих вид: «При наличии недетерминированного полинома TM, по крайней мере, половина путей вычисления принимает?». И и , вероятно, сводятся к проблеме в (выполняя некоторые фальсификация вышеупомянутой ТМ, чтобы сбалансировать количество принимающих путей).#пPP{(x,n)|π(x)n}{(x,n)|π(x)n}PP

Том ван дер Занден
источник
3

Ваша проблема в C = P= С помощью алгоритма,

недетерминированное предположение целое число такое, что[m и немного0m<2log2(x+1)]b
если x < mзатем отклонить
если b=1тогда:
если m < nпотом прими еще, отвергни
еще:
если m простое, то примите еще отклонить

,


В частности, ваша проблема также в PP, так как PP закрыт при сокращениях истинности таблицы .


источник
2

На практике вы можете получить ответ быстрее или медленнее :-(

Существуют достаточно хорошие приближения для π (x). Таким образом, вы вычисляете такое приближение, и если оно слишком далеко, вы знаете, что π (x) ≠ n. Например, если n ≥ x, то я знаю, что π (x) ≠ n, ничего не вычисляя.

Существует быстрый алгоритм, который определяет, является ли π (x) четным или нечетным, работает в O (x ^ (1/2)). Вы можете запустить этот алгоритм, и он может обнаружить, что четность n неверна, и все готово. Он имеет пятьдесят шансов, если n - случайное целое число, близкое к π (x).

Кроме этого, я не знаю ни одного метода, который быстрее, чем вычисление π (x). Что очень неудобно - если я пишу программу, которая должна вычислять π (10 ^ 25), и я получаю результат, который явно не ошибочен, то нет способа проверить, что мой результат верен, кроме повторения расчет. И вы не можете просто повторить вычисления, используя мою программу, вам нужно написать другую программу, иначе вы не обнаружите, есть ли в моей программе ошибки, из-за которых она вычисляет слегка отличную функцию от π (x).

π (x) может быть вычислено достаточно легко примерно за O (n ^ (2/3)) и быстрее с некоторыми действительно глубокими математическими вычислениями.

gnasher729
источник
1
Это интересно, но вопрос больше в классах сложности, содержащих проблему.
usul