Научная статья на тему 'Реализация алгоритма Карацубы и оценки сложности'

Реализация алгоритма Карацубы и оценки сложности Текст научной статьи по специальности «Математика»

CC BY
967
717
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Реализация алгоритма Карацубы и оценки сложности»

3. Персславцева О.Н. Вычислительные эксперименты с алгоритмами вычисления характеристических полиномов матриц // Вестник Тамбовского Университета. Серия: Естественные и технические науки. Тамбов. 2007. Т. 12. Вып.1. С.126-128.

Реализация алгоритма Карацубы и оценки сложности

© А.О.Лапаев

Проведем оценку сложности алгоритма Карацубы [1]. Пусть машинное слово содержит г бит, p = 2r, числа u = (ui,u2, ...,un) и v = (v\,v2,..., vn) состоят из n = 2k машинных слов, и производится их умножение по следующей схеме:

(apn + b)(cpn + d) =

= acpn + ((a + b)(c + d) — ac — bd)p n + bd, где a = (ui,...,un), b = (un+i,...,un^ c = (vi,...,vn), d = (vn+i,...,Vn) .

Обозначим q(n) умножения машинных слов в такой схеме. Тогда q(n) = 3q( n)

и q(2) = 3 находим q(n) = nl°923.

Обозначим через s(n) чисто операдий сложения. Тогда s(n) = 3s(n) + 5n и s(2) = 10. Отсюда s(n) = 10nl°923 — 10n

Общее количество операций сложения и умножения в алгоритме Карацубы составляет 11nl°923 — 10n

В работе [1] приведена схема реализации алгоритма Карацубы. Программа была написана на языке Java. Проводилось сравнение двух методов умножения: стандартного умножения чисел типа Biglnteger и алгоритма Карацубы. Эксперимент ставился на ЭВМ Intel Хеоп 3000, ОС RedHat Linux Enterprise 9.0. В таблице приведены результаты эксперимента.

Размер чисел Стандартное умножение, ms Алгоритм Карацубы, ms

64 0.074286 0.071259

128 0.293707 0.203316

256 1.168254 0.592347

512 4.665816 1.929762

100 200 300 400 500 п

Рис. 1. Зависимость времепи вычисления произведения от размеров входных чисел: 1 стандартное умножение. 2 алгоритм Карацубы. 3 алгоритм Карацубы (теоретическая кривая)

£ = (11 и1°923 — 10п) ■ с где с = 4 ■ 10-6

Как видно из графика, теоретические и экспериментальные оценки алгоритма Карацубы в точках п = 2к очень близки друг к другу. Реализация алгоритма Карацубы выигрывает при п > 64.

Литература

1. Малашонок Г.11.. Лапаев А.О., Пирютин И.А. Быстрое умножение в кольце целых чисел // Вестник Тамбовского универститета. Серия: Естественные и технические науки. Тамбов, 2007. Т. 12. Вып.1. С. 130.

2. Кнут Д. Искусство программирования, М., СПб.; Киев, 2004. Т. 2.

Поступила в редакцию 15 декабря 2007г.

Вычисление комплексных корней полиномов

© Г.И.Малашонок , © А.А.Бетин

Предлагается метод вычисления комплексных корней полиномов. Особенностью метода является то, что задача сводится к вычислению действительных корней полиномов, все остальные вычисления являюся точными символьно-численными.

Дан полином над полем комплексных чисел степени п

/ (г) = аог” + аіг” 1 + ... + + яп+1. (1)

Задача состоит в нахождении всех корней уравнения

/ (*) = 0

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

Вычисление корней полинома проведем в два этапа. Сначала разложим многочлен на множители, не содержащие кратных корней, а затем найдем все корни каждого из сомножителей.

Лемма 1.

Существует алгоритм разложения полинома на множители свободные от квадратов с использованием только точных символьно-численных операций.

Доказательство.

Рассмотрим полином над полем комплексных чисел

/ (2) = ао2и + 1 + ... + а„£ + а„+1.

Этот полином имеет п комплексных корней, с учетом их кратности, поэтому может быть записан в виде

г г

/(г) = ао П(г - 23 , ^ т3 = Щ

3 = 1 3=1

где ш3- - кратность корня 23.

Введм некоторые обозначения. Пусть I = {1, • • • , - множество номеров несовпадающих корней.

Пусть среди чисел ш3- (^’ = 1 • • • £) встречается в различных натуральных чисел п1,п2, • • • , п8,п1 <

П2 < п3 < ••• < пя. Выделим подмножества корней, имеющих одинаковую кратность: N С /,

в

N = ^ : 23 - корень кратности щ}. Получим разбиение множества I та подмножества I = У

i=1

Введем функцию определенную для 1 < г < п^, которая указывает та наименьшее из чисел п^, которое не меньше чем натуральное г:

^ = шш Л.. (*)

ик>г

i Надоели баннеры? Вы всегда можете отключить рекламу.