Обратимся теперь к задаче обращения матриц. Для применимости
предлагаемого алгоритма требуется предположить не только обратимость
матрицы, но и обратимость матриц, появляющихся на промежуточных этапах
алгоритма. (Аналогичные предложения имеются и в алгоритме Гаусса).
Рекурсивный алгоритм обращения матрицы следует из приводимых ниже
легко проверяемых тождеств и трактовки (n x n)-матриц как (2x2)-матриц над
кольцом
nn
2
x
2
-матриц.
A
AA
AA
E
AA E
A
D
EAA
E
=
=
−
−
11 12
21 22 21 1 1
1
11
11
1
12
0
0
0
0
A
EAA
E
A
D
E
AA E
DA AAA
−
−−
−
−
−
=
−
−
=−
1
11
1
12 11
1
1
21 11
1
22 21 11
1
12
0
0
0
0
,
Для нахождения обратной (n x n)-матрицы используется 2 обращения, 6
умножений и 2 сложения
nn
2
x
2
-матриц. Отсюда легко получить (используя
"быстрый" алгоритм умножения матриц), что сложность I(n) обращения матриц
удовлетворяет соотношению
I() ( )
log
nOn
=
2
7
.
Далее, пусть T(n) - сложность умножения (n x n)-матриц и пусть T(2n)
≥ (2+ε)T(n) для некоторого ε>0 и всех n. Тогда из приведенного алгоритма
обращения матрицы следует, что I(n)=O(T(n)). Заметим, что произведение (n x n)-
матриц можно найти, обращая (3n x 3n)-матрицы, что следует из тождества
EA
EB
E
EAAB
EB
E
0
0
00
0
00
1
=
−
−
−
Отсюда имеем I(3n) ≥ T(n) . Поскольку выполнено
T
4
T
n
kn
≥
()
для
некоторого k>0, то имеем I(n) ≥ k T(n) .
Наконец, отправляясь от тождества
det det det( )AA AAAA
=⋅ −
−
11 22 21 1 1
1
12
можно показать, что сложность вычисления определителя матриц с точностью до
константы совпадает со сложностью обращения матрицы. Итак, сложность таких
практически важных задач как решение системы линейных уравнений, обращение
невырожденной матрицы, вычисление определителя матрицы имеет тот же
порядок, что и сложность умножения матриц.
2°. Рассмотрим теперь в общем виде вопрос о сложности алгоритмов,
использующих рекурсию. Из приведенных выше примеров, ясно, что сложность
рекурсивных алгоритмов выражается рекуррентными соотношениями. Если в
рекурсивном алгоритме используется одна процедура, то значение сложности
113