Мы знаем, что экспоненциальная функция над натуральными числами не вычисляется за полиномиальное время, поскольку размер выходных данных не ограничен полиномиально по размеру входных данных.
Является ли это основной причиной сложности вычисления экспоненциальной функции, или вычисление степени по своей природе сложно вычислить независимо от этого соображения?
Какова сложность битового графа экспоненциальной функции?
Ответы:
Вот некоторые верхние границы.
При повторном возведении в квадрат проблема в PSPACE.
Есть немного лучшая верхняя граница. Эта проблема является частным случаем проблемы BitSLP: учитывая прямолинейную программу, начинающуюся с 0 и 1 с сложением, вычитанием и умножением, представляющим целое число N , и учитывая, что i ∈ℕ, решить, будет ли i-й бит (считая от младший значащий бит) двоичного представления N равен 1. Проблема BitSLP находится в иерархии подсчета ( CH ) [ABKM09]. (В [ABKM09] указано, что можно показать, что проблема BitSLP заключается в PH PP PP PP PP .)
Членство в CH часто рассматривается как свидетельство того, что проблема вряд ли будет PSPACE-трудной, потому что равенство CH = PSPACE подразумевает, что счетная иерархия разрушается. Однако я не знаю, насколько сильным считается это доказательство.
Что касается твердости, в той же статье показано, что BitSLP # P-hard [ABKM09]. Однако доказательство там, похоже, не подразумевает какой-либо жесткости языка X в этом вопросе.
Ссылки
[ABKM09] Эрик Аллендер, Питер Бюргиссер, Йохан Кьельдгаард-Педерсен и Питер Бро Мильтерсен. По сложности численного анализа. SIAM Journal of Computing , 38 (5): 1987–2006, январь 2009 г. http://dx.doi.org/10.1137/070697926
источник
Не полный ответ, но хотя бы частичный.
Я заметил, что в двух ответах, которые появились до сих пор, не упоминается тот факт, что существует алгоритм для вычисления модульной экспоненты где - это число битов в , и где - показатель степени, соответствующий самому быстрому алгоритму умножения. Таким образом, менее значимые биты экспоненты могут быть вычислены эффективно (в или меньше).x y mod z n z ω O ( n 3 )O ( n1 + ω) ИксY мод з N Z ω O ( n3)
Способ сделать это довольно прост: вы можете вычислить , , . Ясно, что , и, таким образом, , но поскольку существует только членов этого требуется только умножений.с 2 = х 2 мод г с J = C 2 J - 1 мод г с J = х 2 J по модулю г х у ≡ П J с у J J по модулю г п с J пс1= х с2= х2 мод з сJ= с2J - 1 мод з сJ= х2J мод з ИксY≡ ∏JсYJJ мод з N сJ N
Кроме того, мы можем записать как , поэтому наиболее значимые биты, которые соответствуют примерно также можно эффективно рассчитать, так как они будут только зависит от наиболее значимого бита . ( ∑ n i = 0 2 i x i ) y 2 n y xИксY ( ∑Nя = 02яИкся)Y 2п у Икс
Таким образом, единственные реальные проблемные термины вызваны битами к центру .ИксY
источник
[Этот ответ объясняет некоторые интересные аспекты ответа Пера Вогсена . Это не прямой ответ на вопрос ФП, но может помочь в решении таких вопросов.]
источник