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

§ 20. Наивная арифметика: умножение

137

в § 20 и 21, мы займемся битовой сложностью наивного умножения и деления.

Еще одно замечание в заключение этого параграфа. Битовый ана­лиз может учесть мельчайшие затраты, связанные с выполнением ал­горитма. Вопрос в том, нужен ли настолько детализированный под­ход, коль скоро компьютеры выполняют операции над основными структурами данных на уровне слов, длина же слова—это, как пра­вило, 64 бита. В связи с этим иногда вместо битовой рассматривается так называемая словесная сложность1. Но принципиальной разницы между битовой и словесной сложностью нет. Можно сказать так, что битовая сложность предполагает использование системы счисления с основанием 2, а словесная — с основанием 64. Анализ словесной сложности не является, в сравнении с анализом битовой сложности, ни более легким, ни более информативным.

§ 20. Наивная арифметика: умножение

Предложение 20.1. Пусть T*м(m) временная битовая слож­ность наивного умножения при использовании m в качестве размера входа, а T^mmJ временная битовая сложность этого же алго­ритма при использовании mъ m2 в качестве двух параметров размера входа. Тогда

T*M(m) = Q(m2), T*ll(m1,m2)=Q(m1m2). (20.1)

Доказательство. Затраты наивного умножения a на b связаны с суммированием m, чисел n-i,n?,...,nm , где каждое ni равно 0 или a ■ 2i-1 в зависимости от соответствующей цифры в двоичной запи­си b. Несложной индукцией доказывается, что для si = nг + n2 + ... ...+ni, i = l,2,...,m2, выполнено X{si)^m1 + i. Если ni+1ф0, то по­следние i цифр числа ni+1 суть нули, и при вычислении si+1 = si + ni+1 мы не притрагиваемся к этим цифрам, а преобразуем si в si+1 сло­жением двух чисел, первое из которых образовано всеми разрядами числа si, кроме i последних (согласно сказанному, битовая длина это­го числа не превосходит mг), второе же слагаемое есть a, и его би­товая длина равна mг. Число битовых операций, требующихся для преобразования si в si+1, не превосходит c{mг +1) для некоторой по­ложительной константы c. В том случае, когда все цифры числа b равны 1, это число при любом i не меньше, чем mъ по лемме 19.1.

1 См., например, книгу [50]. В литературе на английском языке, в частности в кни­ге [50], используется термин «word complexity».

138

Глава 5. Битовая сложность

Поэтому битовые затраты, связанные с наивным умножением а на Ъ, не превосходят с{тг + 1)т2, а при Ъ = 2т? - 1 (двоичная запись это­го Ъ состоит только из единиц) затраты не меньше, чем тгт2. Это дает оценку Щ1[{тът2) = 6(m1m2).

Рассмотрим теперь т как размер входа. Так как тг ^ т и т2 ^ т, то затраты не превосходят c(m + l)m, это дает оценку Т*м(т) = 0(,т2). С другой стороны, если тг = т2 = т и а = Ъ = 2т - 1, то затраты не могут быть меньше, чем т2, и, следовательно, Г*(т) = Г2(т2). Таким образом, Гм*м(т) = в (т2). □

Для пространственной битовой сложности наивного умножения мы имеем, очевидно, оценки

S*NM(m) = 2т + 0(1), S^Qnlt т2) = тг + т2 + 0(1).

Обсудим переход от параметров тъ т2 размера входа к парамет­рам а, Ъ (можно считать, что и к параметрам logo, logЪ—между а, Ъ и log a, log Ъ в этом смысле нет принципиальной разницы, так как одни параметры однозначно определяют другие; в то же время мы не можем восстановить а,Ъ по riog2(a + l)l, [log2(b +1)1).

Для перехода в верхних оценках сложности от A(fc) к log2 к, fee gN*, часто оказывается удобным простое неравенство |"log2(fc + 1)] ^ ^ 2 log2 к, справедливое для всех к ^ 2:

[log2(fc + 1)1 = Llog2 fcj + 1 ^ log2 к+ 1^2 log2 к.

Поэтому, например,

т1 ^ 2 log2 a, m2 ^ 2 log2 b

и

тгт2^ 4 log2 a log2b (20.2)

для всех a, b ^ 2. Имеем для достаточно больших тъ т2 и некоторой положительной константы с

Clu{a, Ъ) s= Т^Л{тъ т2) s= стгт2 s= Ac log2 a log2 Ъ.

Мы можем написать C^M(a, b) = 0(loga logb), считая, что выражение под знаком О рассматривается как функция двух переменных а, Ъ, при этом а, Ь—>оо; считаем также, что логарифмы имеют общее ос­нование (подобные предположения будут подразумеваться и в даль­нейшем). Остается заметить, что битовая временная сложность при использовании самих а, Ъ в качестве параметров размера входа сов­падает с битовыми временными затратами. Это позволяет получить из оценки Т**м(.тът2) = 0(.т1т2) оценку TNM(a, Ь) = О (log a logb) для

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