Jump to content

Возведение в степень по цепочке сложения

В математике и информатике оптимальное возведение в степень с помощью цепочки сложения — это метод возведения в степень по положительной целой степени , требующий минимального количества умножений. Используя форму кратчайшей цепочки сложения с умножением вместо сложения, вычисляет желаемый показатель степени (вместо кратного) основания . (Это соответствует последовательности OEIS A003313 (длина кратчайшей цепочки сложения для n) .) Каждое возведение в степень в цепочке можно оценить путем умножения двух предыдущих результатов возведения в степень. В более общем смысле, возведение в степень цепочки сложения может также относиться к возведению в степень с помощью неминимальных цепочек сложения, построенных с помощью различных алгоритмов (поскольку кратчайшую цепочку сложения очень трудно найти).

кратчайшей цепочки сложения Алгоритм требует не больше умножений, чем возведение в степень двоичного кода , а обычно и меньше. Первый пример того, где это работает лучше, — это 15 , где двоичный метод требует шести умножений, а самая короткая цепочка сложения требует только пяти:

(двоичный, 6 умножений)
(кратчайшая цепочка сложения, 5 умножений).
(также кратчайшая цепочка сложения, 5 умножений).
Таблица, показывающая, как возводить в степень с помощью цепочек сложения
Количество
умножения
Действительный
возведение в степень
Конкретная реализация
цепочки сложения для возведения в степень
0 а 1 а
1 а 2 а × а
2 а 3 а × а × а
2 а 4 (а × а → б) × б
3 а 5 (а × а→б) × б × а
3 а 6 (а × а→б) × б × б
4 а 7 (а × а→б) × б × б × а
3 а 8 ((a × a→b) × b→d) × d
4 а 9 (а × а × а → с) × с × с
4 а 10 ((a × a→b) × b→d) × d × b
5 а 11 ((a × a→b) × b→d) × d × b × a
4 а 12 ((a × a→b) × b→d) × d × d
5 а 13 ((a × a→b) × b→d) × d × d × a
5 а 14 ((a × a→b) × b→d) × d × d × b
5 а 15 ((a × a→b) × b × a→e) × e × e
4 а 16 (((a × a→b) × b→d) × d→h) × h

С другой стороны, определить кратчайшую цепочку сложения сложно: в настоящее время не известны эффективные оптимальные методы для произвольных показателей, а связанная с этим проблема поиска кратчайшей цепочки сложения для заданного набора показателей оказалась NP-полной . [1] Даже при наличии самой короткой цепочки возведение в степень сложения требует больше памяти, чем двоичный метод, поскольку потенциально он должен хранить множество предыдущих показателей из цепочки. Таким образом, на практике возведение в степень кратчайшей цепочки сложения в основном используется для небольших фиксированных показателей, для которых кратчайшая цепочка может быть вычислена заранее и не слишком велика.

Существует также несколько методов аппроксимации кратчайшей цепочки сложения, которые часто требуют меньшего количества умножений, чем возведение в степень двоичного кода; Бинарное возведение в степень само по себе является неоптимальным алгоритмом цепочки сложения. Выбор оптимального алгоритма зависит от контекста (например, относительной стоимости умножения и количества повторных использований данного показателя степени). [2]

Проблема нахождения кратчайшей цепочки сложения не может быть решена с помощью динамического программирования , поскольку оно не удовлетворяет предположению об оптимальной подструктуре . То есть недостаточно разложить степень на меньшие степени, каждая из которых вычисляется минимально, поскольку цепочки сложения для меньших степеней могут быть связаны (для совместного использования вычислений). Например, в кратчайшей цепочке сложения для 15 выше, подзадача для 6 должно быть рассчитано как ( a 3 ) 2 с тех пор как 3 используется повторно (в отличие, скажем, от 6 = а 2 ( а 2 ) 2 , что также требует трёх умножений).

Сложение-вычитание-цепное возведение в степень

[ редактировать ]

Если разрешены и умножение, и деление, то можно использовать цепочку сложения-вычитания , чтобы получить еще меньшее общее количество умножений + делений (где вычитание соответствует делению). Однако медлительность деления по сравнению с умножением делает этот метод в целом малопривлекательным. С другой стороны, для возведения в степень до отрицательных целых степеней, поскольку в любом случае требуется одно деление, часто бывает полезна цепочка сложения-вычитания. Одним из таких примеров является −31 , где вычисление 1/ a 31 кратчайшей цепочкой сложения для 31 требуется 7 умножений и одно деление, тогда как самая короткая цепочка сложения-вычитания требует 5 умножений и одного деления:

(цепочка сложения-вычитания, 5 множений + 1 деление).

Для возведения в степень на эллиптических кривых обратная точка ( x , y ) доступна бесплатно, поскольку это просто ( x , − y ), и поэтому цепочки сложения-вычитания оптимальны в этом контексте даже для положительных целых показателей степени. [3]

  1. ^ Дауни, Питер; Леонг, Бентон; Сетхи, Рави (1981). «Вычисление последовательностей с цепочками сложения». SIAM Journal по вычислительной технике . 10 (3): 638–646. дои : 10.1137/0210047 .
  2. ^ Гордон, Дэниел М. (1998). «Обзор методов быстрого возведения в степень» (PDF) . Дж. Алгоритмы . 27 : 129–146. CiteSeerX   10.1.1.17.7076 . дои : 10.1006/jagm.1997.0913 .
  3. ^ Франсуа Морен и Хорхе Оливос, « Ускорение вычислений на эллиптической кривой с использованием цепочек сложения-вычитания », RAIRO Informatique théoretique et application 24 , стр. 531-543 (1990).
  • Дональд Э. Кнут , Искусство компьютерного программирования, Том 2: Получисловые алгоритмы , 3-е издание, §4.6.3 (Аддисон-Уэсли: Сан-Франциско, 1998).
  • Дэниел Дж. Бернштейн, « Алгоритм Пиппенджера », будет включен в авторскую книгу по высокоскоростной криптографии . (2002)
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dbff407a90f9dee6fda076e439248fab__1674861360
URL1:https://arc.ask3.ru/arc/aa/db/ab/dbff407a90f9dee6fda076e439248fab.html
Заголовок, (Title) документа по адресу, URL1:
Addition-chain exponentiation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)