Алгоритм Тоома — Кука

Алгоритм Тоома — Кука, иногда упоминаемый как Тоом-3 — это алгоритм умножения[англ.] больших чисел, названный именами Андрея Леоновича Тоома[англ.], предложившего новый алгоритм с низкой сложностью, и Стивена Кука, более ясно его описавшего.

Если даны два больших числа a и b, согласно алгоритму Тоома — Кука, нужно разбить a и b на k меньших частей каждое длиной l и осуществить операции над элементами. При росте k можно комбинировать часть операций умножения частей разбиения, сокращая тем самым общую сложность алгоритма. Произведение частей разбиения можно затем вычислить с помощью того же самого алгоритма Тоома — Кука рекурсивно. Термины «алгоритм Тоома-3» и «алгоритм Тоома — Кука» иногда ошибочно используются как синонимы, хотя Тоом-3 является лишь частным случаем алгоритма Тоома — Кука для k = 3.

Тоом-3 сокращает сложность с 9 умножений до 5 и работает за время . В общем случае Тоом-k работает за время , где , является временем, затрачиваемым на умножения подчастей, а c — время, затрачиваемое на сложения и умножение на малые константы [1]. Алгоритм Карацубы является частным случаем алгоритма Тоома — Кука, где число разбивается на две части. Он сокращает сложность с 4 умножений до 3, а потому работает за время . Обычное умножение в столбик эквивалентно Тоом-1 со сложностью .

Хотя степень e может быть установлена как можно близкой к 1 путём увеличения k, функция c растёт очень быстро[1][2]. Скорость роста для смешанных схем Тоома — Кука оставалась открытой проблемой к 2005-му году[3]. Реализация, описанная Дональдом Кнутом, добивается сложности [4].

За счёт накладных расходов алгоритм Тоома-Кука для малых чисел медленнее умножения в столбик и потому обычно использовался для множителей среднего размера, пока не был обнаружен асимптотически более быстрый алгоритм Шёнхаге — Штрассена (со сложностью .

Тоом описал свой алгоритм в 1963 году, а Кук опубликовал улучшенный (асимптотически эквивалентный) алгоритм в тезисах своей диссертации в 1966-м году[5].

Детали

В этой секции обсуждается работа алгоритма Тоома-k для любого заданного значения k и даётся упрощённое описание умножения Тоома — Кука многочленов, которое описал Марко Бодрато[6]. Алгоритм имеет пять основных шагов:

  1. Разбиение
  2. Вычисление в точках
  3. Поточечное умножение
  4. Интерполяция
  5. Рекомпозиция

В типичной интерпретации больших чисел каждое целое представляется как последовательность цифр в позиционной системе счисления, где основанием счисления берётся некоторое (обычно большое) значение b. В нашем примере мы используем , так что каждая цифра соответствует группе из четырёх десятичных цифр (в реализации в компьютере в качестве b обычно берётся степень двойки). Скажем, нужно перемножить два числа:

m = 12 3456 7890 1234 5678 9012
n = 9 8765 4321 9876 5432 1098.

Они много меньше, чем обычно обрабатываются алгоритмом Тоома — Кука, но они здесь иллюстрируют алгоритм.

Разбиение

Первым шагом является выбор основания счисления , так что число цифр как у числа m, так и у числа n по основанию B не превосходит k (например, 3 в Тоом-3). Обычно i задаётся выражением:

В нашем примере мы будем использовать Тоом-3, так что мы выбираем . Теперь мы разбиваем m и n по их основанию счисления B на цифры :

Мы будем использовать эти цифры как коэффициенты в многочленах p и q степени (k − 1), со свойствами и :

После введения этих многочленов получаем, что если мы вычислим произведение , то ответом задачи будет .

В случае, когда перемножаемые числа имеют разные размеры, полезно использовать разные значения k для m и n, которые мы будем обозначать и . Например, алгоритм «Тоом-2.5» относится к алгоритму Тоома-Кука с и . В этом случае i в обычно выбирается по выражению

Вычисление в точках

Подход Тоома — Кука вычисления произведения многочленов обычен. Заметим, что многочлен степени d единственным образом определяется точками (например, прямая — это многочлен степени 1 и определяется двумя точками). Идеей является вычисление p(•) и q(•) в различных точках. Затем осуществляется произведение значений в этих точках, чтобы получить значения произведения многочленов. Наконец, интерполируем полученные значения для получения коэффициентов многочлена.

Поскольку , нам нужно точек для получения конечного результата. Назовём его d. В случае Тоом-3 . Алгоритм будет работать независимо от того, какие точки были выбраны (с несколькими небольшими исключениями — см. требование обратимости матрицы в разделе Интерполяция), но для упрощения алгоритма лучше использовать небольшие значения типа 0, 1, −1 и −2.

Одна необычная точка, которая часто используется, это бесконечность, то есть . Чтобы «вычислить» многочлен p на бесконечности, берут предел при стремлении x к бесконечности. Следовательно, всегда равно значению старшего коэффициента (в примере выше — коэффициента ).

В нашем примере Тоом-3 мы используем точки 0, 1, −1, −2 и . Этот выбор упрощает вычисление в точках и даёт формулы:

И аналогично для q. В нашем примере, значения, которые мы получаем, равны:

= = 56789012 = 56789012
= = = 135813702
= = = −21988766
= = = −100519632
= = 123456 = 123456
= = 54321098 = 54321098
= = = 97639739
= = = 11199987
= = = −31723594
= = 98765 = 98765.

Как видно, эти значения могут быть отрицательными.

Для дальнейших объяснений полезно рассматривать этот процесс вычисления в точках как умножение матрицы на вектор справа, где каждая строка матрицы содержит степени одной из выбранных точек, а вектор содержит коэффициенты многочлена:

Размерности матриц равны для p и для q. Строка для значения бесконечность имеет нулевые значения за исключением последнего столбца, в котором стоит 1.

Более быстрое вычисление значений

Вычисление значений в точках может быть выполнено быстрее, чем указано в приведённых выше формулах. Число элементарных операций (сложение/вычитание) может быть сокращено. Последовательность операций, придуманная Бодрато[6] для Тоом-3, показана здесь для первого операнда (многочлена p):

= 56789012 + 123456 = 56912468
= = 56789012 = 56789012
= = 56912468 + 78901234 = 135813702
= = 56912468 − 78901234 = −21988766
= = = − 100519632
= = 123456 = 123456.

Эта последовательность требует пять операций сложения/вычитания, на единицу меньше, чем при прямом вычислении. Более того, нам не нужно умножать на 4 при вычислении p(−2).

Поточечное умножение

В отличие от умножения многочленов p(•) и q(•), умножение вычисленных значений p(a) и q(a) просто сводится к умножению целых — более простого варианта исходной задачи. Мы рекурсивно используем нашу процедуру умножения для вычисления каждой пары значений в точках. В практических реализациях, когда операнды становятся меньше, алгоритм сводится к умножению в столбик[англ.]. Если r — произведение многочленов, в нашем примере мы имеем:

= = = 3084841486175176
= = = 13260814415903778
= = = −246273893346042
) = = = 3188843994597408
= = = 12193131840.

Как видим, эти значения могут быть отрицательными. Для достаточно больших чисел это наиболее дорогой шаг, единственный шаг, не зависящий линейно от размеров m и n.

Интерполяция

Это наиболее сложный шаг, обратный шагу вычисления в точках — если даны наши d точек произведения многочленов r(•), мы должны вычислить его коэффициенты. Другими словами, мы должны решить матричное уравнение с вектором в правой части:

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

Теперь остаётся лишь вычислить произведение матрицы на вектор. Хотя матрица содержит дроби, результирующие коэффициенты будут целыми числами, так что вычисления можно вести в целочисленной арифметике путём сложения, вычитания и умножения/деления на маленькие константы. Здесь основной задачей является поиск эффективной последовательности операций, позволяющей вычислить произведение матрицы на вектор. Одну такую последовательность дал Бодрато[6] для Тоом-3 и она для нашего примера следующая:

= 3084841486175176
= 12193131840
= (3188843994597408 − 13260814415903778)/3
= −3357323473768790
=
= 6753544154624910
=
= −3331115379521218
=
= 13128433387466
= −3331115379521218 + 6753544154624910 − 12193131840
= 3422416581971852
= 6753544154624910 − 13128433387466
= 6740415721237444.

Мы теперь знаем произведение r наших многочленов:

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

Рекомпозиция

Наконец, мы вычисляем r(B) для получения конечного результата. Это выполняется напрямую, поскольку B является степенью b, а потому умножение на степени B является сдвигом всего числа на целое число знаков основания b. В нашем примере и .

3084 8414 8617 5176
6740 4157 2123 7444
3422 4165 8197 1852
13 1284 3338 7466
+ 121 9313 1840

121 9326 3124 6761 1632 4937 6009 5208 5858 8617 5176

Результатом является произведение 1234567890123456789012 и 987654321987654321098.

Матрицы интерполяции для различных значений k

Здесь мы приведём матрицы интерполяции для нескольких различных малых значений и .

Тоом −1

Тоом-1 () требует вычисления в одной точке, здесь выбирается 0. Алгоритм вырождается в умножение в столбик с единичной матрицей интерполяции:

Тоом-1.5

Тоом-1.5 () требует две точки, здесь выбраны 0 и . Матрица интерполяции тогда равна единичной матрице:

Алгоритм также вырождается в умножение в столбик — оба коэффициента одного множителя умножается на один коэффициент другого множителя.

Тоом-2

Тоом-2 () требует трёх точек, здесь выбраны 0, 1 и . Алгоритм получается тем же, что и алгоритм Карацубы с матрицей интерполяции:

Тоом-2.5

Тоом-2.5 ( требует 4 точки, здесь выбраны 0, 1, −1 и . Алгоритм тогда имеет матрицу интерполяции:

Примечания

  1. 1 2 Knuth, 1997, с. 296.
  2. Crandall, Pomerance, 2005, с. 474.
  3. Crandall, Pomerance, 2005, с. 536.
  4. Knuth, 1997, с. 302.
  5. Positive Results Архивная копия от 6 января 2013 на Wayback Machine, chapter III of Stephen A. Cook: On the Minimum Computation Time of Functions.
  6. 1 2 3 Bodrato, 2007, с. 116–133.

Литература

  • D. Knuth. Section 4.3.3.A: Digital methods // The Art of Computer Programming. — Third Edition. — Addison-Wesley, 1997. — Т. 2. — С. 294.
  • Кнут Д.Э. Искусство программирования. Получисленные алгоритмы. — 2019. — Т. 2. — ISBN 978-5-907144-15-6.
  • R. Crandall, C. Pomerance. Section 9.5.1: Karatsuba and Toom–Cook methods // Prime Numbers – A Computational Perspective. — Second Edition. — Springer, 2005. — С. 473.
    • Ричард Крэндалл, Карл Померанс. Простые числа. Криптографические и вычислительные аспекты. — Москва: Либроком, 2011. — ISBN 978-5-397-02060-2.
  • M. Bodrato. Toward Optimal Toom–Cook Multiplication for Univariate and Multivariate Polynomials in Characteristic 2 and 0 // Arithmetic of Finite Fields. — Springer, 2007. — Т. 4547. — (LNCS).

Ссылки


Read other articles:

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目需要补充更多来源。 (2018年3月17日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的标题(来源搜索:羅生門 (電影) — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该主题的更多可靠来源(判定指引)。 �...

 

Perssi SukabumiNama lengkapPersatuan Sepak Bola Sukabumi IndonesiaJulukanLaskar Bumi GeulisBerdiri1948; 76 tahun lalu (1948)StadionStadion SuryakencanaSukabumi,Manajer SumarnoPelatih Herlan Munandar[1]LigaLiga 3 Kostum kandang Perssi Singkatan dari Persatuan Sepak Bola Sukabumi Indonesia adalah klub Sepak bola yang berbasis di Kota Sukabumi, Jawa Barat. Mereka saat ini bermain di Liga 3 dan Bermarkas Di Stadion Suryakencana. Nama Suporter nya Sukabumi Fans, Hooligan Putra Bumi (H...

 

Universal Logic, Inc.IndustryAutomation; machine vision; software; artificial intelligence; big data; cyberneticsFounded2001, commenced operations 2008HeadquartersNashville, TennesseeKey peopleDavid A. Peters, CEOGoutham Mallapragada, CTONick Buchta, PresidentProductsNeocortex AI robot control software, Neocortex Pallet Sorter, Goods to Robot (G2R) Cells,Websiteuniversallogic.com Universal Logic, Inc., formerly Universal Robotics, Inc., is an artificial intelligence software engineering and r...

The Wedding BanquetPoster rilis teatrikalNama lainTradisional喜宴MandarinXǐyàn SutradaraAng LeeProduserAng LeeTed HopeJames SchamusDitulis olehAng LeeNeil PengJames SchamusPemeranWinston ChaoMay ChinKuei Ya-leiSihung LungMitchell LichtensteinPenata musikMaderSinematograferJong LinPenyuntingTim SquyresPerusahaanproduksiGood MachineDistributorThe Samuel Goldwyn CompanyTanggal rilis 04 Agustus 1993 (1993-08-04) (Amerika Serikat) Durasi106 menitNegaraTaiwanAmerika Serikat...

 

Public school in Los Angeles, Los Angeles, California, United StatesFelicitas and Gonzalo Mendez High SchoolAddress1200 Plaza Del SolLos Angeles, Los Angeles, California 90033United StatesCoordinates34°02′54″N 118°13′37″W / 34.048395°N 118.226994°W / 34.048395; -118.226994InformationTypePublicOpenedSeptember 2009School districtLos Angeles Unified School DistrictPrincipalMauro Bautista [1]Teaching staff52.00 (FTE)[2]Grades9-12Enrollment1,044 ...

 

American musician, author, soundscape recordist and bio-acoustician (*1938) A major contributor to this article appears to have a close connection with its subject. It may require cleanup to comply with Wikipedia's content policies, particularly neutral point of view. Please discuss further on the talk page. (September 2018) (Learn how and when to remove this template message) Krause in 2013 Bernard L. Krause (born December 8, 1938) is an American musician and soundscape ecologist. In 1968, h...

Athletics at the Olympics Athleticsat the Games of the III OlympiadAthletics pictogramVenueFrancis Olympic FieldDates29 August – 3 SeptemberNo. of events25Competitors233 from 10 nations← 19001908 → Athletics at the1904 Summer OlympicsTrack events60 mmen100 mmen200 mmen400 mmen800 mmen1500 mmen110 m hurdlesmen200 m hurdlesmen400 m hurdlesmen2590 m steeplechasemen4 mile team racemenRoad eventsMarathonmenField eventsLong jumpmenTriple jumpmenHigh jumpmenPole vau...

 

Chemical entity capable of donating electrons to another entity In chemistry, an electron donor is a chemical entity that transfers electrons to another compound. It is a reducing agent that, by virtue of its donating electrons, is itself oxidized in the process. An obsolete definition equated an electron donor and a Lewis base.[1] In contrast to traditional reducing agents, electron transfer from a donor to an electron acceptor may be only fractional. The electron is not completely t...

 

 烏克蘭總理Прем'єр-міністр України烏克蘭國徽現任杰尼斯·什米加尔自2020年3月4日任命者烏克蘭總統任期總統任命首任維托爾德·福金设立1991年11月后继职位無网站www.kmu.gov.ua/control/en/(英文) 乌克兰 乌克兰政府与政治系列条目 宪法 政府 总统 弗拉基米尔·泽连斯基 總統辦公室 国家安全与国防事务委员会 总统代表(英语:Representatives of the President of Ukraine) 总...

This article's lead section may be too long. Please read the length guidelines and help move details into the article's body. (January 2021) Operation Pickaxe-HandlePart of the War in Afghanistan (2001–2021)Airstrike in Sangin, April 10, 2007.DateMay 30 - June 14, 2007LocationHelmand province, AfghanistanResult Tactical Coalition victoryStrategic outcome unclearBelligerents  United Kingdom  Canada  United States Estonia Denmark Norway Islamic Republic of Afghan...

 

This is an index of conservation topics. It is an alphabetical index of articles relating to conservation biology and conservation of the natural environment. A Abiotic stress - Adaptive management - Adventive plant - Aerial-seeding - Agreed Measures for the Conservation of Antarctic Fauna and Flora - Agroecology - American Prairie Foundation - Anti-whaling - Assisted migration - Assisted migration of forests in North America B Biodegradation - Biodiversity - Biodiversity action plan - Biodi...

 

Toquinho, 5 Agustus, 2010. Antonio Pecci Filho (lahir 6 Juli 1946) juga dikenal sebagai Toquinho, adalah komponis, pembuat aransemen, penyanyi, gitar dari Brasil, dan salah satu legenda terbesar musik samba. Diskografi O Violão de Toquinho (1966) La vita, amico, é l'arte dell'incontro (1969) Toquinho (1970) Vinicius de Moraes en La Fusa con Maria Creuza y Toquinho (1970) Como Dizia o Poeta...Música Nova (1971) Per vivere un grande amore (1971) São Demais os Perigos desta Vida... (1971) To...

German lawyer and national-liberal politician Burchard-Motz painted by Anita Rée Wilhelm Amsinck Burchard-Motz (4 July 1878 in Hamburg, – 13 January 1963 in Hamburg) was a German lawyer and national-liberal politician. He served as Senator for Trade, Shipping and Industry of Hamburg from 1925 to 1933 and as Second Mayor from 1933 to 1934. Burchard-Motz was a member of the Nazi Party.[1] He was the son of Hamburg First Mayor Johann Heinrich Burchard and Emily Amsinck. Following stud...

 

Argentine footballer Roberto Telch Telch in 1964Personal informationFull name Roberto Marcelo TelchDate of birth (1943-11-06)6 November 1943Place of birth San Vicente, Córdoba, ArgentinaDate of death 12 October 2014(2014-10-12) (aged 70)Place of death Buenos AiresHeight 1.78 m (5 ft 10 in)Position(s) Central midfielderSenior career*Years Team Apps (Gls)1962–1975 San Lorenzo 413 (25)1976–1979 Unión SF 189 (2)1980 Colón 29 (0)Total 631 (27)International career1964–1...

 

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Christmas creep – news · newspapers · books · scholar · JSTOR (April 2013) (Learn how and when to remove t...

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Star Trek: The Experience – berita · surat kabar · buku · cendekiawan · JSTORartikel ini perlu dirapikan agar memenuhi standar Wikipedia. Tidak ada alasan yang diberikan. Silakan kembangkan artikel ini s...

 

Village in County Limerick, Ireland For other uses, see Adare (disambiguation). Village in Munster, IrelandAdare Áth DaraVillageMain StreetAdareLocation in IrelandCoordinates: 52°33′50″N 8°47′24″W / 52.564°N 8.790°W / 52.564; -8.790CountryIrelandProvinceMunsterCountyCounty LimerickDáil ÉireannLimerick CountyPopulation (2016)[1] • Total1,129Dialling code061Irish Grid ReferenceR460460 Adare (/æˈdeɪr/; Irish: Áth Dara, meaning '...

 

Louisa KusnandarLahirLouisa KusnandarNama lainLouisaPekerjaanPembawa acara, pembaca berita Louisa Kusnandar (lahir 12 September 1987) adalah pembawa acara berita Indonesia. Ia menjadi pembawa acara dalam program berita Liputan 6. Ia membawakan berita untuk program Liputan 6 Pagi, Liputan 6 Siang, Liputan 6 Akhir Pekan, Buser dan Traveling keliling Indonesia. Bulan Oktober 2016, Louisa mewakili Indonesia dalam program reality show Amazing Race Asia Season 5 yang tayang di AXN. Pendidikan...

Prevalence of different types of sexual orientation Sexual orientation Sexual orientations Asexual Bisexual Heterosexual Homosexual Related terms Allosexuality Androphilia and gynephilia Bi-curious Gray asexuality Demisexuality Non-heterosexual Pansexuality Plurisexuality Queer Queer heterosexuality Research Biological Birth order Epigenetic Neuroscientific Prenatal hormones Demographics Environment Human female sexuality Human male sexuality Kinsey scale Klein Grid Queer studies Sexology Tim...

 

Den här artikeln handlar om året 1793. För Niklas Natt och Dags roman med samma namn, se 1793 (roman). 1793 – MDCCXCIII231 år sedan År1790 | 1791 | 179217931794 | 1795 | 1796 Årtionde1770-talet  | 1780-talet 1790-talet1800-talet | 1810-talet Århundrade1600-talet 1700-talet1800-talet Årtusende1000-talet Året Födda | AvlidnaBildanden | Upplösningar Humaniora och kulturKonst, litteratur, mu...