Это не официальный сайт wikipedia.org 01.01.2023

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

Алгоритм Харви — ван дер Хувена

Алгоритм Харви — ван дер Хувена — алгоритм умножения двух n -битных целых чисел с временной сложностью O ( n log n ) в модели многоленточной машины Тьюринга.[en] Предложен математиками Дэвидом Харви из университета Нового Южного Уэльса и Йорисом ван дер Хувеном[en] из Национального центра научных исследований Франции. По состоянию на 2020 год является самым быстрым известным алгоритмом умножения чисел в данной модели, при этом оценка в O ( n log n ) на временную сложность алгоритмов умножения, по всей видимости, является неулучшаемой.

ИсторияПравить

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

ПримечанияПравить

  1. А. Карацуба, Ю. Офман. Умножение многозначных чисел на автоматах // Докл. АН СССР. — 1962. — 9 февраля (т. 145, № 2). — С. 293—294.
  2. A. Schönhage, V. Strassen. Schnelle Multiplikation großer Zahlen (нем.) // Computing. — 1971-09-01. — Bd. 7, H. 3. — S. 281–292. — ISSN 1436-5057. — doi:10.1007/BF02242355.
  3. Martin Fürer. Faster Integer Multiplication (англ.) // SIAM Journal on Computing. — 2009-01. — Vol. 39, iss. 3. — P. 979–1005. — ISSN 1095-7111 0097-5397, 1095-7111. — doi:10.1137/070711761.
  4. David Harvey, Joris van der Hoeven. Faster integer multiplication using short lattice vectors (англ.) // The Open Book Series. — 2019-01-28. — Vol. 2, iss. 1. — P. 293–310. — ISSN 2329-9061 2329-907X, 2329-9061. — doi:10.2140/obs.2019.2.293.
  5. David Harvey, Joris Van Der Hoeven. Integer multiplication in time O(n log n) (англ.). — 2019. Архивная копия от 8 апреля 2019 на Wayback Machine
  6. Erica Klarreich. Multiplication hits the speed limit (англ.) // Communications of the ACM. — 2019. — 20 December. — doi:10.1145/3371387. Архивировано 30 июня 2020 года.