В следующих таблицах перечислены вычислительные сложность различных алгоритмов для общих математических операций.
Здесь под сложностью понимается временная сложность выполнения вычислений на многолентовой машине Тьюринга. См. нотация O для объяснения используемых нотаций.
Примечание. Из-за разнообразия алгоритмов умножения ниже обозначает сложность выбранного алгоритма умножения.
Операция | Вход | Выход | Алгоритм | Сложность |
---|---|---|---|---|
Сложение | Два -значные числа, и | Один -цифровой номер | Добавление в учебник с переносом | |
Вычитание | Два -значные числа, и | One -цифровое число | Вычитание из учебника с заимствованием | |
Умножение | Два -цифровые числа. | Один -цифровое число | Учебное длинное умножение | |
Алгоритм Карацубы | ||||
3-way Умножение Тоома – Кука | ||||
-way умножение Toom – Cook | ||||
Смешанный уровень Тоома – Кука (Knuth 4.3.3-T) | ||||
алгоритм Шёнхаге – Штрассена | ||||
алгоритм Фюрера | ||||
алгоритм Харви-Хувена | ||||
Division | T wo -цифровые числа | Одна -цифровое число | Полностное деление учебника | |
Дивизион Бурникеля-Циглера «разделяй и властвуй» | ||||
деление Ньютона – Рафсона | ||||
Квадратный корень | One -значное число | Одно -цифровое число | метод Ньютона | |
Модульное возведение в степень | Два -цифровых целых чисел и -битный показатель степени | Один -значное целое число | Повторное умножение и уменьшение | |
Возведение в степень возведением в квадрат | ||||
Возведение в степень с редукцией Монтгомери |
Операция | Вход | Выход | Алгоритм | Сложность |
---|---|---|---|---|
Полином оценка | Один полином степени с коэффициентами фиксированного размера | Одно число фиксированного размера | Прямая оценка | |
Метод Хорнера | ||||
Полиномиальный НОД (более или ) | Два полинома степени с целочисленными коэффициентами фиксированного размера | Один многочлен степени не выше | алгоритм Евклида | |
Быстрый алгоритм Евклида (Lehmer) |
Многие методы в этом разделе даны в Borwein Borwein.
элементарные функции построены путем составления арифметических операций, экспоненциальная функция (), натуральный логарифм (), тригонометрические функции () и их обратные. Сложность элементарной функции эквивалентна сложности ее обратной, поскольку все элементарные функции аналитические и, следовательно, обратимы с помощью метода Ньютона. В частности, если или в сложном домене может быть вычислено с некоторой сложностью, тогда эта сложность достижима для всех остальных элементарных функций.
Ниже размер относится к числу цифр точности, с которой функция должна оцениваться.
Алгоритм | Применимость | Сложность |
---|---|---|
Ряд Тейлора ; сокращение повторных аргументов (например, ) и прямое суммирование | ||
ряд Тейлора; Ускорение на основе БПФ | ||
ряд Тейлора; двоичное разбиение + | ||
Среднее арифметико-геометрическое итерация |
Неизвестно, - оптимальная сложность для элементарных функций. Самая известная нижняя граница - это тривиальная граница .
Функция | Вход | Алгоритм | Сложность |
---|---|---|---|
Гамма-функция | -цифровое число | Последовательная аппроксимация неполной гамма-функции | |
Фиксированное рациональное число | Гипергеометрический ряд | ||
для целое число. | Среднее арифметико-геометрическое итерация | ||
Гипергеометрическая функция | -цифровое число | (как описано в Borwein Borwein) | |
Фиксированное рациональное число | Гипергеометрический ряд |
В этой таблице указана сложность вычисления приближений к заданным константам для правильных цифр.
Константа | Алгоритм | Сложность |
---|---|---|
Золотое сечение, | Метод Ньютона | |
квадратный корень из 2, | метод Ньютона | |
число Эйлера, | двоичное расщепление ряда Тейлора для экспоненциальной функции | |
Обращение натурального логарифма Ньютона | ||
Pi, | Двоичное разбиение ряда arctan в формуле Мачина | |
алгоритм Гаусса – Лежандра | ||
постоянная Эйлера, | метод Суини (аппроксимация в терминах экспоненциального интеграла ) |
Алгоритмы для теоретико-числовых вычислений изучаются в теория вычислительных чисел.
Операция | Вход | Выход | Алгоритм | Сложность |
---|---|---|---|---|
Наибольший общий делитель | Два -цифровые целые числа | Одно целое число, состоящее не более чем из цифр | алгоритм Евклида | |
Алгоритм двоичного GCD | ||||
влево / вправо k- арный алгоритм двоичного НОД | ||||
символ Якоби | Два -цифровые целые | , или | Управляемый Шёнхаге алгоритм евклидова спуска | |
алгоритм Стеле – Циммермана | ||||
Факториал | Положительное целое число меньше | One -цифровое целое число | Умножение снизу вверх | |
Двоичное разбиение | ||||
Возведение в степень простых множителей | ,. | |||
Тест на простоту | A -цифровое целое число | Верно или нет | Тест простоты AKS | или ,. , предполагая гипотезу Агравала |
Доказательство простоты эллиптической кривой | эвристически | |||
тест простоты Baillie-PSW | ||||
Тест простоты Миллера – Рабина | ||||
Тест простоты Соловея – Штрассена | ||||
Целочисленная факторизация | A -битовое целое число | Набор множителей | Сито общего числового поля | |
алгоритм Шора | на квантовом компьютере |
Следующие цифры сложности предполагают, что арифметика с отдельными элементами имеет сложность O (1), как и в случае с фиксированной точностью арифметикой с плавающей запятой или операциями над Конечное поле.
Операция | Вход | Выход | Алгоритм | Сложность |
---|---|---|---|---|
Умножение матриц | Две матрицы | One матрица | Умножение матриц учебника | |
алгоритм Штрассена | ||||
алгоритм Копперсмита – Винограда | ||||
Оптимизированные алгоритмы, подобные CW | ||||
Умножение матрицы | One матрица одна матрица | One матрица | Умножение матриц в учебнике | |
Умножение матриц | One matrix one matrix | Один matrix | Алгоритмы, указанные в | , где верхние границы для даны в |
Инверсия матриц | Один матрица | One матрица | исключение Гаусса – Джордана | |
алгоритм Штрассена | ||||
Алгоритм Копперсмита – Винограда | ||||
Оптимизированные алгоритмы, подобные CW | ||||
Разложение по сингулярным числам | Один матрица | Одна матрица ,. одна матрица,. один матрица ix | Бидиагонализация и алгоритм QR | . () |
Одна матрица,. одна матрица. одна матрица | Бидиагонализация и QR-алгоритм | . () | ||
Определитель | One матрица | Одно число | расширение Лапласа | |
Алгоритм без деления | ||||
LU-разложение | ||||
алгоритм Барейсса | ||||
Быстрое умножение матриц | ||||
Обратная подстановка | Треугольная матрица | решения | Обратная подстановка |
В 2005 году Генри Кон, Роберт Клейнберг, Балаж Сегеди, и Крис Уманс показал, что любая из двух различных гипотез подразумевает, что показатель умножения матриц равен 2.
^*Из-за возможности поблочного обращения матрицы, где инверсия матрица требует инверсии двух матриц половинного размера и шести умножений между двумя матрицами половинного размера, а так как умножение матриц имеет нижнюю границу () операций, можно показать, что алгоритм разделяй и властвуй, который использует поблочное обращение для инвертирования матрицы, выполняется с той же временной сложностью, что и алгоритм умножения матриц, который используется внутри.
Алгоритмы для вычисления преобразовывают функций (особенно интегральные преобразования ) широко используются во всех областях математики, в частности, анализ и обработка сигналов.
Операция | Вход | Выход | Алгоритм | Сложность |
---|---|---|---|---|
Дискретное преобразование Фурье | Конечная последовательность данных размера | Набор комплексных чисел | Быстрое преобразование Фурье |