Теорема. Справедлива рівність
Доведення.
Маємо
Теорема доведена.
Методи множення.
Для зручності ми будемо вважати, що оперуємо цілими числами, що виражені в двійковій системі обчислення. Ми маємо два -розрядних числа и ,
то можна записати
де - „найбільш значуща половина” числа, , а - „найменш значуща”; подібним чином , .
Наприклад: Запишемо у подібній формі число
Тепер ми маємо
.
Ця формула зводить задачу множення -розрядних чисел до трьох операцій множення -розрядних чисел: . Плюс деякі прості операції зсуву і додавання. Цю формулу можна використовувати для множення з подвоєною точністю, коли результат треба отримати з четвірною точністю. За допомогою цієї формули можна визначити деякий рекурсивной процес для множення, набагато швидший, ніж вже знайомий нам метод, коли - велике і що має час виконання .кщо - час, що потребує множення -розрядних чисел, то ми маємо для деякої константи , оскільки у правій частині співвідношення треба виконати тільки три операції множення плюс деякі операції додавання і зсуву. З останнього співвідношення по індукції витікає, що ,
Якщо вибрати достатньо великим, з тим, щоб ця нерівність виконувалась при , отримаємо
Тобто час, що витрачається на множення, можна скоротити з величини порядку до величини порядку , і, звичайно при більшому цей алгоритм набагато швидше.
Схожий, але складніший метод виконання множення з часом біля був вперше запропонований А.Карацубою.
Час виконання можна скоротити ще більше, якщо помітити, що тільки що розглянутий метод є окремим випадком (при ) більш загального методу, який дає
для будь-якого фіксованого . Цей загальний метод можна отримати наступним чином. Розіб’ємо
и
на часток:
де кожне і кожне є розрядними числами.
Розглянемо многочлени
,
і припустимо
.
Так як і , то ми маємо , і тому, якщо знати коефіцієнти , можна легко обчислити . Задача полягає у тому, щоб знайти добрий спосіб обчислення коефіцієнтів , виконуючи лише операцій множення -розрядних чисел плюс деякі додаткові операції, для яких час виконання пропорційний .
Цього можна досягти обчисенням .
Коефіцієнти усякого многочлена ступіня можна записати у вигляді лінейної комбінації значень цього многочлена у різних точок. Найбільший час, необхідний для взяття такої комбінації пропорційний . Насправді добутки являють собою, за сутністю, не добутки -розрядних чисел, а добутки чисел, розряд яких не перевищує , де - фіксована величина, що залежить від . Легко скласти програму множення для -розрядних чисел, яка потребує тільки операцій, так як при фіксованому два добутки -розрядних чисел на -розрядні можна отримати за операцій. Можна показати, що для цього метода .
Теорема.
Для будь-якого існує така постійна і такий алгоритм множення, що число елементарних операцій , що потрібне для множення двох -розрядних чисел, задовольняє оцінку .
Ця теорема ще не найкращій результат. Для практичних цілей великий недолік, що метод різко ускладнюється за тобто . Ця теорема незадовільна і з практичної точки зору, так як у ній не повністю використовується метод многочленів, що лежить у її основі.
Перш ніж розглянути алгоритм Тоома-Кука, розберемо один приклад. На цьому прикладі нема можливості побачити фективність метода, оскільки ми маємо справу з невеликими числами. Але можна побачити деякі корисні спрощення, прийнятні і у загальному випадку.
Припустимо, що треба перемножити та . У двійковій системі обчислення та . Нехай . Многочлени , .
Звідси знаходимо :
(4.1)
Тепер, використовуючи п’ять останніх величин, знайдемо п’ять коефіцієнтів многочлена .
Для знаходження коефіцієнтів многочлена при заданих значеннях можна скористатися одним цікавим невеликим алгоритмом. Спочатку запишемо , де
і де невіомі, як і . Тепер
, і за індукцією знаходимо, що для всіх
Позначаючи ліву частину выразу через мы бачимо, що
и .
Таким чином, коефіцієнти можна обчислити за допомогою дуже простого методу, який можна продемонструвати для многочлена , що визначений співвідношенням (4.1):
Крайня колонка складається з заданих значень ; щоб отримати -ю колонку, треба обчислити різниці між сусідніми величинами попередньої колонки і розділити їх на . Коефіцієнти розташовані у колонках зверху; , тому ми маємо
В загальному вгляді можна записати
ця формула показує, яким чином з коефіцієнтів можна отримати коефіцієнти :
Послідовно виходять коефіцієнти многочленів і т.і.
Згідно останньої таблиці ми маємо
Тож, відповідь де отримується у результаті операцій дадавання і зсуву. Крім того, якщо коефіцієнти многочлена - невід’ємні, то такими будуть і числа , а тоді всі проміжні результати, що отримуються в процессі проведення обчислення, будуть невід’ємними.
Теорема.
Існує константа , така, що час виконання алгоритма С менший циклів.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.