Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
abramov_s_a_lekcii_o_slozhnosti_algoritmov.doc
Скачиваний:
136
Добавлен:
11.05.2015
Размер:
2.74 Mб
Скачать

§ 27. Добавление нулей

Ряд алгоритмов целочисленной арифметики и теории матриц оказы­вается достаточным (без нанесения сколь-либо существенного ущер­ба идее алгоритма и его качеству) описать для случая, когда размер

!См., например, [4].

§ 27. Добавление нулей 173

входа есть число вида 2к. При использовании стратегии «разделяй и властвуй» это облегчает и описание алгоритма, и анализ его слож­ности. С теоретической точки зрения для задачи умножения двух це­лых чисел а и Ъ мы можем предполагать, что битовая длина каждого из данных чисел равна 2к, где

fc = max{[log2 А(а)1, flog2A(b)l}, (27.1)

так как всегда возможно добавить спереди любого из данных чисел некоторое количество нулей. Если речь идет об умножении квадрат­ных матриц А и В произвольного порядка п, то мы можем добавить к матрицам несколько нулевых строк и столбцов так, чтобы сделать их порядки равными 2Г1о&п1:

А ОЛ (В ОЛ (АВ О

A0 B0 AB0 00 00 00

О 00 00 О (27.2)

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

Предложение 27.1. Пусть вещественная функция f натурального аргумента такова, что /(п) =/(2г1о&"1) для всех neN+ и

/(2fc)^

u, если k=0,

wf(2k-1) +ϕ(2k), если k >0,

при fceN, где u,w вещественные числа, причем и^О, w^l, a ip — неотрицательная функция, определенная для всех п е N+. Тогда при всех п е N+ выполняется неравенство

(и, если п = 1, /Тп-П Пое.п (27.3)

^/gij^ +^(2nog2ni)) еслип>1_

Доказательство. Легко видеть, что

|"log2|"|]]=riog2nl-l. (27.4)

В самом деле, если 2к-г < п s= 2к, к > 1, то 2к-2 < Г|1 s= 2к-х, т. е. ес­ли [log2nl=fc, то riogJ|ll =к-1. Для случая n = 2rlo&nl неравен­ство (27.3) выполнено по условию, для остальных случаев используем равенства /(n) = /(2rlo&nl), /ГГ-11 = /(г1"10^1""/2"1"1) = /(2rlog2п_|-1). □

174 Глава 6. Рекуррентные соотношения и сложность алгоритмов

Теорема 27.1. Пусть вещественная функция f натурального аргу­мента такова, что /(п) =/(2г1о&"1) для всех neN+ и

Я2Ц

и, если к = 0,

wf(2fc-1)+c(2fc)d, еслик>0,

при fc е N, где и,d ^ О, о О, w ^ 1. Тогда при рассмотрении f как функции, определенной для всех п е N+ выполняются оценки

(o(ndlogn), если d = log2w,

f(n) = \o{nd), если d>log2w,

[о(п1о&), если d<log2 мл

Доказательство следует из предложения 27.1 и теоремы 26.1. □

Подобно тому, как доказательство теоремы 26.1 было преобразо­вано в доказательство теоремы 26.2, из приведенного выше доказа­тельства мы можем получить доказательство следующей теоремы

Теорема 27.2. Пусть вещественная функция f натурального аргу­мента такова, что /(п) =/(2г1о&"1) для всех neN+ и

/<2Ц

и, если к = 0,

wf(2fc-1)+c(2fc)d, еслик>0,

где и, d ^ 0, о 0, w^ 1. Тогда для функции f{n), при рассмотрении ее как функции, определенной для всех п е N+ выполнено

fn(ndlogn), если d=log2w,

f{n) = I П(п1о& w), если d > log2 w,

[n(nd), если d<log2w.

Перейдем к примерам.

Пример 27.1 (умножение Карацубы). Пусть а и Ъ целые по­ложительные числа битовой длины т = 2к. Положив Z = 2fc-1, можем записать

a = e2l+f, b = g2l+h,

где e,f,g,h целые числа битовой длины Z. А.А.Карацубе принад­лежит замечательное наблюдение, позволяющее вычислить произве­дение ab, выполнив всего три умножения чисел половинной длины, несколько сдвигов (домножений на 2т и 21) и несколько аддитивных операций над числами битовой длины s= 2т:

аЪ = eg221 + ((е + /) (g + К) - eg - fh)2l + fh, (27.5)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]