Алгоритм Чанки: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Содержимое удалено Содержимое добавлено
Новая страница: «{{В инкубаторе}} '''Алгоритм Чанского'''<ref>Csanky, L.: Almost parallel matrix inversion algorithms. SIAM 618–623...»
(нет различий)

Версия от 17:09, 19 апреля 2020

Алгоритм Чанского[1] — это алгоритм, позволяющий решать задачу вычисления определителя матрицы в классе . Идея алгоритма состоит в том, чтобы свести исходную задачу к решению системы относительно вектора , где - нижнетреугольная матрица, которую можно обратить за время с использованием процессоров.

Умножение матриц и их возведение в степень

Пусть , - матрицы размеров и соответственно. Тогда для вычисления матрицы достаточно параллельно вычислить для всех , . Каждую из сумм при помощи процессоров и процедуры параллельного префикса можно вычислить за время . Таким образом, используя процессоров, можно вычислить всю матрицу за время . В частности, если и - квадратные, понадобится процессоров и время .

Используя процедуру параллельного префикса для цепочки можно одновременно вычислить все степени матрицы, не превосходящие её размера . В таком случае потребуется время и процессоров.

Обращение нижнетреугольной матрицы

Нижнетреугольную матрицу размера можно разбить на равные по размеру блоки

и тогда обратная к ней матрица примет вид

Это означает, что задачу обращения матрицы можно решить путём двух параллельно выполняемых обращений нижнетреугольных матриц , размеров и двух последовательно выполняемых умножений. Обозначив через время, требуемое для обращения матрицы , получим рекурренту

Так как ,

Описание метода

Пусть - квадратная матрица со стороной . Её характеристический многочлен ,

где - элементарный симметрический многочлен степени , а - собственные значения матрицы . Заметим, что

, . Определим .

Введём вспомогательную величину . Учитывая , имеем

Используя соотношение , получим тождество

Таким образом, для произвольного справедливо

или в матричном виде

Для решения этой системы нам нужно обратить нижнетреугольную матрицу в левой части и умножить её на столбец из правой - все эти операции вместе с одновременным вычислением значений вида для всех мы можем выполнить за время с использованием процессоров. Получив решение , остаётся лишь взять последний элемент , который равен искомому .

Примечания

  1. Csanky, L.: Almost parallel matrix inversion algorithms. SIAM 618–623 (1976)

Литература

  • Kozen, Dexter (1991), The Design and Analysis of Algorithms, New York: Springer-Verlag, pp. 166–170, ISBN 0-387-97687-6