Русская Википедия:Алгоритм Харви — ван дер Хувена

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Алгоритм Харви — ван дер Хувена — алгоритм умножения двух <math>n</math>-битных целых чисел с временной сложностью <math>O(n \log n)</math> в модели Шаблон:Не переведено 5. Предложен математиками Дэвидом Харви из университета Нового Южного Уэльса и Шаблон:Не переведено 5 из Национального центра научных исследований Франции. По состоянию на 2023 год является самым быстрым известным алгоритмом умножения чисел в данной модели, при этом оценка в <math>O(n \log n)</math> на временную сложность алгоритмов умножения, по всей видимости, является неулучшаемой.

История

Вопрос о существовании быстрых алгоритмов умножения целых чисел занимает важное место в теории сложности вычислений. Наиболее известные методы умножения, такие как умножение «в столбик» требуют <math>O(n^2)</math> арифметических операций. Впервые данная оценка была улучшена в 1960 году Анатолием Карацубой, предложившим алгоритм умножения со временем работы <math>O(n^{\log_2 3})</math>[1]. В 1971 году Шёнхаге и Штрассен предложили алгоритм на основе быстрого преобразования Фурье со временем работы <math>O(n \log n \log \log n)</math>[2]. В той же работе ими была выдвинута гипотеза о том, что оптимальный алгоритм умножения требует <math>O(n \log n)</math> элементарных операций. Однако долгое время оценка сверху, заданная алгоритмом Шёнхаге и Штрассена оставалась без улучшений. Только в 2007 году, спустя 36 лет, Мартин Фюрер предложил алгоритм со временем работы <math>O(n \log n \cdot K^{\log^* n})</math> для неуточнённой константы <math>K>1</math>, где <math>\log^* n</math> — итерированный логарифм[3]. В дальнейшем Харви и ван дер Хувен улучшили эту оценку сперва до <math>O(n \log n \cdot 4^{\log^* n})</math>[4], а затем до <math>O(n \log n)</math>, таким образом подтверждая выдвинутую в гипотезе Шёнхаге и Штрассена оценку сверху[5]. Алгоритм имеет большое теоретическое значение, так как на нём достигается предположительная нижняя оценка на время работы алгоритмов умножения чисел в модели многоленточной машины Тьюринга. Однако практическое ускорение достигается лишь на числах, длина двоичной записи которых превосходит <math>2^{1729^{12}} \approx 2^{7 \cdot 10^{38}}</math> бит, в то время как число частиц в наблюдаемой вселенной оценивается как <math>2^{270}</math>[6].

Примечания

Шаблон:ПримечанияШаблон:Теоретико-числовые алгоритмы