stringtranslate.com

Полиномиальная оценка

В математике и информатике полиномиальная оценка относится к вычислению значения многочлена, когда его неопределенные значения заменяются некоторыми значениями. Другими словами, оценка полинома at состоит из вычислений. См. также Кольцо полиномов § Полиномиальная оценка.

Для вычисления одномерного многочлена самый наивный метод будет использовать умножение для вычисления , использовать умножение для вычисления и так далее, чтобы получить общее количество умножений и сложений. Используя более совершенные методы, такие как правило Горнера , это можно свести к умножению и сложению. Если разрешена некоторая предварительная обработка, возможна еще большая экономия.

Фон

Данная проблема часто возникает на практике. В вычислительной геометрии полиномы используются для вычисления аппроксимации функций с использованием полиномов Тейлора . В криптографии и хеш-таблицах полиномы используются для вычисления k -независимого хеширования .

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

Общие методы

Правило Горнера

Метод Хорнера оценивает полином, используя повторяющиеся скобки: этот метод сокращает количество умножений и сложений до всего

Метод Хорнера настолько распространен, что ко многим компьютерным процессорам была добавлена ​​компьютерная инструкция « операция умножения-накопления », которая позволяет выполнять операции сложения и умножения за один комбинированный шаг.

Многомерный

Если полином многомерный, правило Горнера можно применять рекурсивно к некоторому упорядочению переменных. Например

можно записать как

Эффективную версию этого подхода описали Карнисер и Гаска. [1]

Схема Эстрина

Хотя невозможно выполнить меньше вычислений, чем по правилу Горнера (без предварительной обработки), на современных компьютерах порядок вычислений может иметь большое значение для эффективности вычислений. Метод, известный как схема Эстрина, вычисляет полином (с одной переменной) в древовидном шаблоне:

В сочетании с возведением в степень путем возведения в квадрат это позволяет распараллелить вычисления.

Оценка с предварительной обработкой

Произвольные полиномы можно оценить с меньшим количеством операций, чем требует правило Хорнера, если мы сначала «предварительно обработаем» коэффициенты .

Впервые пример был приведен Моцкиным [2], который заметил, что

можно записать как

где значения вычисляются заранее на основе . Метод Моцкина использует всего 3 умножения по сравнению с 4 умножениями Горнера.

Значения для каждого можно легко вычислить, разложив и приравняв коэффициенты:

Пример

Чтобы вычислить расширение Тейлора , мы можем увеличить масштаб в 24 раза, применить описанные выше шаги и снова уменьшить масштаб. Это дает нам вычисление трех умножения

Улучшение эквивалентной формы Хорнера (то есть ) на 1 умножение.

Некоторые общие методы включают алгоритм Кнута – Евы и алгоритм Рабина – Винограда.

Многоточечная оценка

Оценку полинома -степени в нескольких точках можно выполнить с помощью умножения, используя метод Хорнера . Используя описанный выше подход предварительной обработки, это можно уменьшить в два раза, то есть до умножения. Однако можно добиться большего.

Можно сократить требуемое время всего до . [3] Идея состоит в том, чтобы определить два полинома, которые равны нулю соответственно в первой и второй половине точек: и . Затем мы вычисляем и используем теорему о полиномиальном остатке , что можно сделать вовремя, используя быстрое преобразование Фурье . Это означает и по построению, где и – полиномы степени не выше . Из-за того, как и были определены, мы имеем

Таким образом, чтобы вычислить все точки , достаточно вычислить меньшие полиномы и каждую половину точек. Это дает нам алгоритм «разделяй и властвуй» с , который следует из основной теоремы .


В случае, когда точки, в которых мы хотим оценить полиномы, имеют некоторую структуру, существуют более простые методы. Например, в разделе 4.6.4 Кнута [4] описан метод табулирования полиномиальных значений типа

Динамическая оценка

В случае, когда заранее неизвестно, Кедлая и Уманс [5] предоставили структуру данных для оценки полиномов в конечном поле размера во времени за оценку после некоторой начальной предварительной обработки. Ларсен [6] показал, что это по существу оптимально.

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

Кедлайя и Уманс далее показывают, как объединить эту предварительную обработку с быстрой многоточечной оценкой (БПФ). Это позволяет создавать оптимальные алгоритмы для многих важных алгебраических задач, таких как полиномиальная модульная композиция.

Конкретные полиномы

Хотя общие полиномы требуют операций для оценки, некоторые полиномы можно вычислить гораздо быстрее. Например, полином можно вычислить, используя всего одно умножение и одно сложение, поскольку

Оценка полномочий

Особенно интересным типом полинома являются такие степени, как . Такие полиномы всегда можно вычислить в операциях. Предположим, например, что нам нужно вычислить ; мы могли бы просто начать с и умножить на, чтобы получить . Затем мы можем умножить это само на себя, чтобы получить и так далее , всего за четыре умножения. Другие степени, например, можно эффективно вычислить, сначала выполнив 2 умножения, а затем умножив на .

Наиболее эффективный способ вычисления заданной степени — возведение в степень по цепочке сложения . Однако это требует разработки специального алгоритма для каждого показателя степени, а вычисления, необходимые для разработки этих алгоритмов, сложны ( NP-полные [7] ), поэтому для эффективных вычислений обычно предпочтительнее возводить в степень путем возведения в степень.

Полиномиальные семейства

Часто полиномы появляются в другой форме, чем хорошо известная . Для полиномов в форме Чебышева мы можем использовать алгоритм Кленшоу . Для полиномов в форме Безье можно использовать алгоритм Де Кастельжо , а для B-сплайновалгоритм Де Бура .

Жесткие полиномы

Тот факт, что некоторые многочлены могут быть вычислены значительно быстрее, чем «полиномы общего назначения», наводит на вопрос: можем ли мы привести пример простого многочлена, который не может быть вычислен за время, намного меньшее, чем его степень? Фолькер Штрассен показал [8] , что полином

не может быть вычислено с помощью меньшего, чем умножения и сложения. По крайней мере, эта граница сохраняется, если разрешены только операции этих типов, что приводит к так называемой «полиномиальной цепочке длины ».

Полином, заданный Штрассеном, имеет очень большие коэффициенты, но с помощью вероятностных методов можно показать, что должны существовать даже полиномы с коэффициентами только 0 и 1, такие, что оценка требует как минимум умножения. [9]

Для других простых многочленов сложность неизвестна. Предполагается, что полином не вычислим во времени ни для какого . Это подтверждается тем фактом, что если его можно вычислить быстро, то факторизацию целых чисел можно вычислить за полиномиальное время, нарушая криптосистему RSA . [10]

Матричные полиномы

Иногда вычислительные затраты на скалярные умножения (например, ) меньше, чем вычислительные затраты на «нескалярные» умножения (например , ). Типичным примером этого являются матрицы. Если — матрица, скалярное умножение требует арифметических операций, а вычисления — около (или использования быстрого умножения матриц ).

Матричные полиномы важны, например, для вычисления матричной экспоненты .

Патерсон и Стокмейер [11] показали, как вычислить полином степени, используя только нескалярные и скалярные умножения. Таким образом, матричный полином степени n можно вычислить во времени. Если это так , то так же быстро, как умножение одной матрицы стандартным алгоритмом.

Этот метод работает следующим образом: для полинома

пусть k будет наименьшим целым числом, не меньшим, чем Степени вычисляются путем матричного умножения, а затем вычисляются путем повторного умножения на Now,

,

где для in . Для этого требуется просто больше нескалярных умножений.

Мы можем кратко записать это, используя произведение Кронекера :

.

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

Предложены методы, основанные на умножении и сложении матричных полиномов, позволяющие сэкономить на нескалярных матричных умножениях по отношению к методу Патерсона-Стокмейера. [12]

Смотрите также

Рекомендации

  1. ^ Карнисер, Дж.; Гаска, М. (1990). «Оценка многомерных полиномов и их производных». Математика вычислений . 54 (189): 231–243. дои : 10.2307/2008692 . JSTOR  2008692.
  2. ^ Моцкин, Т.С. (1955). «Оценка полиномов и оценка рациональных функций». Бюллетень Американского математического общества . 61 (163): 10.
  3. ^ Фон Цур Гатен, Иоахим ; Юрген, Герхард (2013). Современная компьютерная алгебра . Издательство Кембриджского университета . Глава 10. ISBN 9781139856065.
  4. ^ Кнут, Дональд (2005). Искусство компьютерного программирования . Том. 2: Получисловые алгоритмы. Аддисон-Уэсли . ISBN 9780201853926.
  5. ^ Кедлая, Киран С .; Уманс, Кристофер (2011). «Быстрая полиномиальная факторизация и модульная композиция». SIAM Journal по вычислительной технике . 40 (6): 1767–1802. дои : 10.1137/08073408x. hdl : 1721.1/71792 . S2CID  412751.
  6. ^ Ларсен, КГ (2012). «Нижние границы зонда высших ячеек для оценки полиномов». 2012 53-й ежегодный симпозиум IEEE по основам информатики . Том. 53. ИИЭР . стр. 293–301. дои : 10.1109/FOCS.2012.21. ISBN 978-0-7695-4874-6. S2CID  7906483.
  7. ^ Дауни, Питер; Леонг, Бентон; Сетхи, Рави (1981). «Вычисление последовательностей с помощью цепочек сложения». SIAM Journal по вычислительной технике . 10 (3) . Проверено 27 января 2024 г.
  8. ^ Штрассен, Волкер (1974). «Многочлены с рациональными коэффициентами, которые трудно вычислить». SIAM Journal по вычислительной технике . 3 (2): 128–149. дои : 10.1137/0203010.
  9. ^ Шнорр, CP (1979), «Об аддитивной сложности полиномов и некоторых новых нижних границах», Теоретическая информатика , Конспекты лекций по информатике, том. 67, Springer , стр. 286–297, номер документа : 10.1007/3-540-09118-1_30, ISBN. 978-3-540-09118-9
  10. ^ Чен, Си, Нирадж Каял и Ави Вигдерсон. Частные производные арифметической сложности и не только. Now Publishers Inc, 2011.
  11. ^ Патерсон, Майкл С .; Стокмейер, Ларри Дж. (1973). «О количестве нескалярных умножений, необходимых для вычисления многочленов». SIAM Journal по вычислительной технике . 2 (1): 60–66. дои : 10.1137/0202007.
  12. Фаси, Массимилиано (1 августа 2019 г.). «Оптимальность метода Патерсона – Стокмейера для оценки матричных полиномов и рациональных матричных функций» (PDF) . Линейная алгебра и ее приложения . 574 : 185. дои : 10.1016/j.laa.2019.04.001 . ISSN  0024-3795.