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

Глава 7. Сводимость

Непосредственно видно, что (i, j)-элемент матрицы Cnv(C12AC*2AC21) равен 1, если и только если существует ход, соединяющий вершины

V;, Vj G Уг. При этом ясно, что из V; можно добраться в Vj О;, Vj е Vx) по

ребрам графа G, если и только если существует последовательность хо­дов, приводящая из vt в у,-, т. е. если и только если (i, _/)-элемент мат­рицы

(CnV(C12AC*2AC21))*

равен 1. Обозначим эту матрицу Fn. Мы имеем

*21 ^22

для некоторых матриц F12, F21, F22, при этом матрица Fpq, р, q g {1, 2}, несет информацию о существовании путей из вершин множества Vp в вершины множества Vq. Рассуждениями, сходными с приведенными выше, можно показать, что

F12 = FnAC12AC*2, F21 = C*2AC21AFn, F22 = С*22 V (С*2 А С21 A Fn А С12 А С*2);

эти выражения удобны для вычисления матрицы С*: четыре матри­цы Fp q, р, q g {1, 2}, можно найти, выполнив два построения транзи-тивно-рефлексивных замыканий, шесть умножений и два сложения матриц порядка Z:

U = С*2, V = С12 A LT, W = U А С2Ъ Fn = (CnV(VAC21))*, F12=FnAV, F21 = W AFn, F22 = UV(F21AV).

Мы указали рекурсивный переход от матриц порядка 21 к матрицам порядка Z. Учитывая, что С* = С для матрицы первого порядка, мы получаем алгоритм вычисления С* для случаев, когда порядок п мат­рицы равен 2к, к^О. Пусть для умножения булевых матриц исполь­зуется алгоритм со сложностью В{п), которая удовлетворяет услови­ям 1—3, приведенным в начале этого примера. Для п = 2к мы име­ем следующее соотношение, которому будет удовлетворять сложность

§ 28. Линейная сводимость

189

T(n) полученного алгоритма построения транзитивно-рефлексивного замыкания:

0, еслиk=0,

2T(2k-1) +6B(2k-1)+2·22(k-1), если k > 0.

, . О, если к = и, г

ГС25^ (ЖЗ)

В силу условия 3 имеем В (2-) ^ 4B(2fc-2) при fc ^ 2. Дополнительное использование условия 1 дает нам B(22fc-1) ^22(fc-1) при fc^ 1. Заме­няя 22*-15 во второй строке соотношения (28.3) на B(2fc-1), получаем

0, еслиk=0,

2T(2k-1)+8B(2k-1), если k > 0.

тк ^' если к = и,

Г(2 )*S (28.4)

Докажем по индукции, что

r(2fcK4B(2fc), fc = 0,l,... (28.5)

Для к = 0 это неравенство очевидно, так как ГЦ) = О, ВЦ) = 1. Пусть ЬОи неравенство выполнено для к - 1. Тогда 2Т(2к-1) s= 8B(2fc-1), и, как следствие (28.4), мы получаем Т{2к) ^ 16B(2fc-1). В силу условия 3

мы имеем B(2fc-!) ^ \в{2к), откуда следует (28.5).

Если п не есть число вида 2к, то от матрицы С переходим к мат­рице

С'=» ,°

С

порядка 2к, взяв единичную матрицу Is некоторого порядка, мень­шего чем порядок матрицы С. Таким образом, порядок матрицы С' меньше, чем 2п, т. е. 2к < 2п. Из (28.5) следует, что

T(n) = r(2fc)^4B(2fc).

Так как 2к < 2п и функция В(п) —неубывающая, получаем 4B(2fc) ^ ^4В(2п). Отсюда

Т{п) s= 4B(2n) SS 4 ■ 8 • В(п) = 32В(п)

для всех п и

Т{п) = 0{В{п)), (28.6)

что и требовалось.

Из сказанного следует, что если использовать для умножения квад­ратных булевых матриц алгоритм со сложностью, растущей медлен­нее, чем п3, и удовлетворяющей условиям 1—3, то можно строить тран-зитивно-рефлексивное замыкание со сложностью, растущей медлен­нее, чем сложность алгоритма Уоршелла (пример 23.2). Напомним, что

190

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