Сложность в среднем
Задачи
1.Для любого neZ выполнено n = I n 2 I + Гn 21, для любого aеЖ выполнено \a]=-[-a\.
2.Для любых k, n GN+, k > 1, выполнено Llogk n\ + 1 = [logk(n + 1)1.
Указание. Пусть mеN+ таково, что km-1 Цn<km, тогда km-1 <n + 1Цkm. Прологарифмировать по основанию k обе системы неравенств.
3.Предположим, что в нашем распоряжении нет операции обмена
a <—>b и мы заменяем ее тремя присваиваниями:
c:=a; a:=b; b:=c;
чему в этом случае равны сложности первого и второго варианта сортировки простыми вставками по суммарному числу сравнений и присваиваний?
4.Пусть полином f(n) = amnm + ... + a1n + a0 имеет ненулевой
старший коэффициент am. Тогда
а) f(n) = O(nk)<=>k:?m,
б) f(n) = n(nk)<=>k^m,
в) f(n) = 6(nk)<=>k = m, при k = m также выполнено f(n)~amnm.
Подробнее об аддитивных цепочках см. в [19, разд. 4.6.3].
Задачи
5.Пусть Р(п)—количество простых множителей целого числа п > 1 с учетом кратности. Имеет место точная оценка Р{п) = О (log п).
6.(Продолжение предыдущей задачи.) Пусть
Р*(т)= шах Р(п),
т = 2,3, ... Верно ли, что P*(m) = 6(m)?
7.Указать все вещественные значения 5, при которых справедлива
оценка
а) TTD(n) = 0(.n5),
б) Гтп(п) = П(п5),
в) rTD(n) = 6(n5),
где TTD(n)—сложность алгоритма пробных делений (пример 1.2).
8.Железнодорожный сортировочный узел устроен так, как пока
зано на рис. 6. На правой стороне собрано некоторое число вагонов
МИМО
вСЗСТИ»
тупик
Рис. 6. Сортировочный узел.
двух типов (на рис. 6—черные и белые), по п штук каждого типа. Тупик может вместить все 2п вагонов. Требуется, пользуясь тремя сортировочными операциями В, ИЗ, МИМО, собрать вагоны на левой стороне так, чтобы типы вагонов чередовались. Указать такой алгоритм решения этой задачи, сложность которого по числу сортировочных операций при рассмотрении п в качестве размера входа равнялась бы Зп-1.
9.Хорошо известно, что мультипликативная сложность метода Гаусса решения системы п линейных уравнений с п неизвестными допускает оценки
1) 0(п3), 2)|п3+0(п2), 3) в(п3).
38Глава 1. Сложности алгоритмов как функции числовых аргументов
а) Из какой оценки (указать номер) следуют две остальные?
б) Можно ли из приведенных оценок выбрать такую, которая яв
ляется следствием любой из остальных?
в) Является ли оценка П(п3) следствием какой-либо из оценок 1,
2, 3?
10.Для сложности TqS (п) быстрой сортировки выполняется оценка
TQS(n) = в(п2). (Обозначение QS происходит от английского названия
быстрой сортировки —quick sort.)
Указание. Оценка TQS(n) = fi(n2) устанавливается предъявлением примера. Неравенство TQS(n)<n2 можно доказать индукцией по п, используя то, что при фиксированном neN+ квадратичная функция (т- I)2 + (п- т)2 от т принимает на отрезке [1, п] свое максимальное значение в одном из концов этого отрезка.
11.Алгоритм, использующий только аддитивные операции и срав
нения целых чисел для проверки того, является ли данное целое по
ложительное пточным квадратом, может быть основан на вычисле
нии последовательности значений 1,1 + 3,1 + 3 + 5, ... до появления
в ней первого большего или равного пэлемента. Сложность по числу
аддитивных операций и операций сравнения этого алгоритма (назо
вем его sqx) допускает оценку 6(л/п). Сохранится ли эта оценка, если
дополнительно использовать операцию нахождения целой части по
ловины числа (считается, что затратность этой операции такая же,
как у аддитивных операций) для того, чтобы предварительно выяс
нять, на какую максимальную степень двойки — четную или нечет
ную—делится п (алгоритм sq2)?
12.(Продолжение предыдущей задачи.) Пусть Tsqi(n), Tsq2(n) —
сложности, соответственно, первого и второго вариантов рассмотрен
ного алгоритма и
Т*(т)= max Tsa(n), Г*(m) = max Tsa (n),
m = 2,3, ...
а) Как связаны значения функций Ts*qi(m) и Ts*2(m)?
б) Имеются ли среди оценок 6(m), O(logm), в(2т/2), 0(2т) такие,
которые верны для Ts*2(m), и если да, то какие именно?
13.Изменим в алгоритме Грэхема (пример 3.1) этап удаления
вдавленных вершин: будем обходить — возможно, многократно —
против часовой стрелки вершины построенной несамопересекающей-
ся ломаной и удалять вдавленные вершины до тех пор, пока при
очередном обходе не окажется безуспешной попытка найти хотя бы
Задачи
одну вдавленную вершину. Сложность этого варианта рассматриваемого этапа алгоритма Грэхема есть Г2(п2), где п— начальное число вершин ломаной (в то время как сложность этого этапа в алгоритме Грэхема есть 0(п)).
14.Рассмотрим в главных чертах алгоритм Шеймоса—Хоя1 построения пересечения Р nQ двух выпуклых многоугольников Р и Q содержащих соответственно Zи т вершин. Считаем, что многоугольники задаются массивами P1,P2,...,Pi и Qi,Q2, •••jQm координат своих последовательных вершин.
Упорядочим множество всех абсцисс обоих многоугольников по возрастанию (для простоты считаем, что абсциссы попарно различны, хотя это и несущественно), в результате получим абсциссы аг < а2 < ... < а1+т (рис. 7). Теперь для каждого i = 1, 2,..., Z+ т - 1
a1 a2 a3 ... ai ai+1 ... am+l
Рис. 7. Алгоритм Шеймоса—Хоя (1= 5, т = 4).
строим пересечение трапеций, вырезаемых прямыми x = at,x = ai+1 в заданных многоугольниках. (В вырожденном случае такая трапеция превращается в треугольник.) Из получившихся пересечений трапеций можно собрать Р nQ, удаляя лишние вершины.
Привлекая дополнительно те или иные структуры данных (массивы, списки, ...) и уточняя по мере надобности какие-то этапы алгоритма, добиться того, чтобы в итоге алгоритм (обозначим его буквами SH) имел следующие сложностные характеристики. Если размер входа — это г = 1+ т, то TSH(r) = 6(г); если размер входа — это s = max{Z, т}, то rs'H(s) = 6(s); если размер входа имеет два параметра
См. [30, гл. 7].
40 Глава 1. Сложности алгоритмов как функции числовых аргументов
I и т, то Tg'ti(l,m) = Q(l + m)—мы рассматриваем операции сравнения и перемещения элементов, арифметические операции, как мультипликативные, так и аддитивные, все вместе. Для пространственной сложности—SSH(г), S'SH(s) или S'^a, т) в зависимости от выбора размера входа — получаем те же оценки в(г), 6(s) или 6(Z + m).
Указание. Если исходные многоугольники представить, например, двунаправленными списками координат последовательных вершин, то список абсцисс (а1,а2, ...,а!+т), аг < а2 < ... < а1+т, можно получить с временными затратами, не превосходящими с0(1 + т).
При определении пространственной сложности можно заметить, что общее число вершин искомого пересечения не превосходит 3(1 + т)—это следует непосредственно из самого алгоритма Шеймоса—Хоя: при построении пересечения двух трапеций может возникнуть не более двух дополнительных вершин.
15. Расширить алгоритм построения вояжа в ориентированном графе G = (V, Е) с выделенной начальной вершиной v (пример 3.2) так, чтобы помимо вояжа алгоритм выдавал также информацию о том, охватил ли вояж все ребра графа. Размер входа имеет два параметра m=|V|, п = \Е\. Для графов, не содержащих изолированных вершин, т. е. вершин, подобных вершине 7 на рис. 3, сложность расширенного алгоритма должна быть 0(,п).
16. Задача распознавания существования и фактического построения эйлерова цикла в данном графе для ориентированного случая выглядит так: выяснить, имеется ли в данном ориентированном графе цикл, проходящий по всем ребрам графа по одному разу, и если существует, то построить этот цикл. Воспользовавшись рассмотренным алгоритмом построения вояжа (пример 3.2), дать алгоритм решения этой задачи. Размер входа имеет два параметра m= \V\, п = \Е\. Для графов, не содержащих изолированных вершин, сложность предлагаемого алгоритма должна быть 0(,п).
17. Путник столкнулся со стеной, простирающейся бесконечно в обе стороны. Имеется дверь в этой стене, но путник не знает ни расстояния до двери, ни направления к ней. Предложить позволяющий добраться до двери алгоритм, сложность которого допускает оценку 0{п), где п — число шагов (неизвестное путнику), изначально отделяющее путника от двери.
Указание. Сумма sk = 1 + q + ... + qk, q > 1, есть величина порядка qk, т.е.sk = e(qk).
18.Будем считать затратностью любого построения на плоскости
с помощью циркуля и линейки количество линий (окружностей или
Задачи
прямых), проводимых в ходе построения. Рассмотрим задачу построения отрезка, длина которого равна 1/п от длины исходного отрезка, считая п размером входа. Предложить для этой задачи такой алгоритм решения, сложность которого допускает оценку O(logn).1
19. При п = 15 возможно вычисление ап с меньшим числом умножений, чем требуется бинарному алгоритму возведения в степень.
20.Пусть двоичная запись числа neN есть ft...ft/Зо. Алгоритм
и:=1;
for i = k downto 0 do
и:=и-и;
if Pi = l then u:=u-afi od
вычисляет an. Сравнить сложность этого алгоритма по числу умножений с аналогичной сложностью бинарного алгоритма возведения в степень, рассмотренного в примере 4.2, при использовании п или соответственно т = А(п) в качестве размера входа. (Описанный в этой задаче алгоритм является еще одним вариантом бинарного алгоритма возведения в степень.)
21.Для функции Z(n), определенной в конце § 4, выполнено 1{аЪ) s= sSZ(a)+Z(b)-l для всехa,beN+.
22.(Продолжение предыдущей задачи.) Можно ли утверждать, что Z(ab) = Z(a)+Z(b)-l для всехa,beN+?
1 Разбор задач на построение с точки зрения их сложности содержится, например, в [11, §15].
Глава 2