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

Из Википедии, бесплатной энциклопедии

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

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

Предыстория [ править ]

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

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

Общие методы [ править ]

Правило Горнера [ править ]

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

Этот метод сокращает количество умножений и сложений до всего

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

Многомерный [ править ]

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

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

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

Схема Эстрина [ править ]

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

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

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

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

Пример впервые был приведен Моцкиным. [2] кто это заметил

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

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

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

Пример [ править ]

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

Улучшение по эквивалентной форме Горнера (т.е. ) на 1 умножение.

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

Многоточечная оценка [ править ]

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

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

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


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

Динамическая оценка [ править ]

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

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

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

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

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

Оценка полномочий [ править ]

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

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

Полиномиальные семейства [ править ]

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

Жесткие полиномы [ править ]

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

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

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

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

Матричные полиномы [ править ]

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

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

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

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

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

,

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

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

.

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

Предложены методы, основанные на умножении и сложении матричных полиномов, позволяющие сэкономить на нескалярных матричных умножениях по отношению к методу Патерсона-Стокмейера. [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), «Об аддитивной сложности полиномов и некоторых новых нижних границах», Theoretical Computer Science , Lecture Notes in Computer Science, vol. 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. doi : 10.1016/j.laa.2019.04.001 . ISSN   0024-3795 .