Если даны два больших числа 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].
За счёт накладных расходов алгоритм Тоома-Кука для малых чисел медленнее умножения в столбик и потому обычно использовался для множителей среднего размера, пока не был обнаружен асимптотически более быстрый алгоритм Шёнхаге — Штрассена (со сложностью .
В этой секции обсуждается работа алгоритма Тоома-k для любого заданного значения k и даётся упрощённое описание умножения Тоома — Кука многочленов, которое описал Марко Бодрато[6]. Алгоритм имеет пять основных шагов:
В типичной интерпретации больших чисел каждое целое представляется как последовательность цифр в позиционной системе счисления, где основанием счисления берётся некоторое (обычно большое) значение 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. В нашем примере, значения, которые мы получаем, равны:
Для дальнейших объяснений полезно рассматривать этот процесс вычисления в точках как умножение матрицы на вектор справа, где каждая строка матрицы содержит степени одной из выбранных точек, а вектор содержит коэффициенты многочлена:
Размерности матриц равны для 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 и она для нашего примера следующая:
Если бы мы использовали другие или выбрали другие точки для вычисления значений, матрица, а тогда и стратегия интерполяции, изменилась бы, но это не зависит от входных данных, а потому алгоритм может быть зашит «в железе» для любых данных параметров.
Рекомпозиция
Наконец, мы вычисляем 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 и . Алгоритм тогда имеет матрицу интерполяции:
Ричард Крэндалл, Карл Померанс. Простые числа. Криптографические и вычислительные аспекты. — Москва: Либроком, 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).
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...
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...