Метод Холецкого (нахождение симметричного треугольного разложения)
Основные авторы описания: И.Н.Коньшин
Содержание
- 1 Разложение Холецкого (метод квадратного корня), базовый точечный вещественный вариант для плотной симметричной положительно определённой матрицы
- 2 Разложение Холецкого, блочный вещественный вариант для плотной симметричной положительно определённой матрицы
- 3 Разложение Холецкого, точечный вещественный вариант для разреженной симметричной положительно определённой матрицы
- 4 Разложение Холецкого, блочный вещественный вариант для разреженной симметричной положительно определённой матрицы
- 5 Разложение Холецкого для симметричной незнакоопределенной (седловой) матрицы
- 6 Разложение Холецкого для эрмитовой матрицы
- 7 Использование разложения Холецкого в итерационных методах
- 8 Использование разложения Холецкого в параллельных итерационных алгоритмах
- 9 Решение линейных систем с треугольной матрицей
- 10 Существующие реализации алгоритма
1 Разложение Холецкого (метод квадратного корня), базовый точечный вещественный вариант для плотной симметричной положительно определённой матрицы
1.1 


-разложение



Разложение Холецкого — представление симметричной положительно определённой матрицы
Элементы матрицы
Выражение под квадратным корнем всегда положительно, если
Вычисление происходит сверху вниз, слева направо, т.е. сначала вычисляется
- Алгоритм Холецкого-Банашевича (Cholesky–Banachiewicz algorithm) или просто алгоритм Холецкого, когда вычисления начинаются с верхнего левого угла матрицы
и проводятся по строкам. Этот вариант разложения используется наиболее часто, особенно при использовании построчного формата хранения элементов матрицы .
- Краут-вариант алгоритма Холецкого (Cholesky–Crout algorithm), когда вычисления также начинаются с верхнего левого угла матрицы
, но проводятся по столбцам. Этот вариант разложения используется несколько реже, применяется он при использовании столбцевого формата хранения элементов матрицы , а также когда необходимо проводить коррекцию ведущих элементов при выполнении приближенного разложения.
Оба варианта разложения могут быть применены если требуется построить нижнетреугольный сомножитель
В разделе Разложение Холецкого (метод квадратного корня) подробно рассмотрен базовый точечный вещественный вариант для плотной симметричной положительно определённой матрицы.
1.2 



-разложение




Иногда удобнее бывает рассматривать
так и с несимметричным
2 Разложение Холецкого, блочный вещественный вариант для плотной симметричной положительно определённой матрицы
Можно также рассмотреть блочный вариант разложения Холецкого. Предположим, что
Аналогичный прием понадобится также и для эффективной реализации параллельной версии разложения Холецкого, что позволит минимизировать как общее количество межпроцессорных обменов, так и количество пересылаемой между процессорами информации.
Полезным побочным эффектом применения блочной версии разложения Холецкого может стать повышение скалярной эффективности алгоритма за счет явного использования размера блока
3 Разложение Холецкого, точечный вещественный вариант для разреженной симметричной положительно определённой матрицы
Если исходная матрица
3.1 Основные отличия от случая плотной матрицы
В этом разделе необходимо рассмотреть матрицы, характеризующиеся способом хранения ненулевых элементов, и имеющие следующие виды разреженности.
- Лента - матрица, ненулевые элементы которой сосредоточены внутри ленты шириной
, т.е. когда при . В этом случае, при проведении разложения Холецкого новые ненулевые элементы могут образовываться только внутри этой же ленты. Количество ненулевых элементов в исходной матрице , а также в нижнетреугольном множителе будет около , а арифметические затраты составят приблизительно .
- Профиль - в более общем случае, заполнение в каждой строке треугольного множителе
будет определяться позицией первого ненулевого элемента. Сумма по всем строкам расстояний от первого ненулевого элемента строки до главной диагонали и составляет "профиль" матрицы и определяет верхнюю границу количества ненулевых элементов в нижнетреугольном множителе .
- Общая структура разреженности. Верхней границей заполнения треугольного множителя
, конечно же, будет значение "профиля" матрицы, но учет особенностей структуры ненулевых элементов внутри профиля иногда может дать дополнительный эффект в повышении эффективности вычислений.
При рассмотрении общего случая разреженности необходимо выбрать формат хранения разреженных данных. Таковым может быть, например, формат построчного сжатия данных ("compressed sparse row" или CSR формат). В первом вещественном массиве, подряд (обычно в порядке возрастания номеров столбцов) хранятся ненулевые элементы матрицы, во втором, в том же порядке хранятся номера столбцов, в третьем, отдельно сохраняется начало каждой строки. Если общее количество ненулевых элементов в матрице равно nnz ("number of nonzeros"), то память для хранения разреженных данных такой матрицы в формате CSR при использовании двойной точности составит
Для реализации разложения Холецкого в этом случае понадобится несколько операций с разреженными строками:
- копирование из одной разреженной строки в другую (или во временный "плотный" вектор, операция распаковки данных);
- выполнение операции исключения для одного из элементов строки;
- вставка в строку нового ненулевого элемента ("fill-in");
- сжатие данных с копированием из временного плотного вектора в сжатый разреженный (операция упаковки данных).
3.2 Переупорядочивания для уменьшения количества новых ненулевых элементов
Структура треугольного множителя
- В первую очередь это алгоритм RCM (Reverse Cuthill–McKee), который предназначен для уменьшения профиля матрицы. Одновременно с уменьшением профиля происходит и уменьшение заполнения треугольного множителя
. Это очень широко применяемый, быстрый, но не самый эффективный алгоритм.
- Алгоритм вложенных сечений (Nested Dissection, ND) - служит именно для минимизации заполнения множителя
. В некоторых частных случаях доказана его асимптотическая оптимальность.
В общем случае, проблема поиска перестановки, минимизирующей заполнение множителя
4 Разложение Холецкого, блочный вещественный вариант для разреженной симметричной положительно определённой матрицы
Иногда разреженную симметричную матрицу бывает удобно представить в блочном виде с блоками небольшого размера
В некоторых случаях, размер блока
Алгоритмы, необходимые при выполнении разложения Холецкого для матриц, рассмотренных в этом разделе, могут быть получены комбинацией уже рассмотренных идей блочности и разреженности.
5 Разложение Холецкого для симметричной незнакоопределенной (седловой) матрицы
Если симметричная матрица
где
где матрица дополнения по Шуру
В этом случае существует симметричное треугольное разложение вида
В общем случае разложения невырожденной незнакоопределенной системы необходимо применять выбор ведущего элемента с главной диагонали матрицы, что соответствует некоторой симметричной перестановке строк и столбцов исходной матрицы
6 Разложение Холецкого для эрмитовой матрицы
Эрмитовой (или комплексно-самосопряженной) матрицей называют такую квадратную комплексную матрицу Н
6.1 Точечный вариант
Как естественное обобщение точечного разложения Холецкого для симметричной положительно определеной матрицы может быть рассмотрено разложение Холецкого для эрмитовой положительно определеной матрицы. Все формулы для вычисления разложения остаются прежними, только теперь вместо операций над вещественными числами выполняются аналогичные комплексные операции:
В отличие от вещественного варианта, для выполнении аналогичных комплексных операций потребуется считывать из памяти вдвое больше данных и производить над ними примерно вчетверо больше арифметических операций, что должно не только несколько улучшить локальность вычислений, но и повысить общую эффективность вычислений.
6.2 Блочный вариант
Реализация блочного варианта разложения Холецкого для эрмитовых матриц аналогична рассмотренному выше блочному варианту для вещественных матриц.
7 Использование разложения Холецкого в итерационных методах
При выполнении разложения Холецкого в арифметике с фиксированной машинной точностью полученные треугольный фактор
Основной причиной формирование неполного или неточного разложения в качестве предобусловливателя чаще всего бывает требование экономии памяти.
7.1 Ограничивание заполнения в разложении Холецкого
При выполнении разложения Холецкого для разреженной матрицы, может образовываться такое большое количество новых ненулевых элементов, что оперативной памяти на хранение полного разложения окажется недостаточно. В этом случае можно построить неполное или приближенное разложение для применения его в дальнейшем в качестве предобусловливателя. В англоязычной литературе для обозначения таких разложения применяют единый термин Incomplete Cholesky factorization, или сокращенно IC-разложение.
7.2 Неполное разложение Холецкого по позициям IC(
)

Неполное разложение Холецкого можно получить используя заранее выбранные ограничения по структуре заполнения.
Чаще всего получают разложение Холецкого на тех же позициях, в которых находятся ненулевые элементы исходной матрицы
Если качества разложения IC0 оказывается недостаточно, то можно выбрать более широкую структуру треугольного множителя
Можно рассмотреть и более общий случай, с заполнением внутри структуры матрицы
Обычно с ростом значения
Неполное разложение IC(
7.3 Приближенное разложение Холецкого по значениям IC(
)

Для контроля заполнения в треугольном множителе
Вполне правомерным является ожидание того, что в уменьшением
С точки зрения устойчивости разложения вариант приближенного разложения Холецкого является более предпочтительным, хотя применение предварительного диагонального сдвига, а также диагональной коррекции также допускается.
Если же описанные приемы не помогаю получить разложения достаточной точности, то можно применить прием модификации диагонали Азиза-Дженингса, который при отбрасывании малого элемента разложения
7.4 Приближенное разложение Холецкого второго порядка IC(




)





Для повышения точности приближенного разложения можно применить "двухпороговую" версию приближенного разложения Холецкого. Основная идея такого разложения, называемого разложением Тисменецкого-Капорина, состоит в том чтобы вычисление разложения проводить в более высокой точности
Такое разложение обычно используется вместе с приемом Азиза-Дженингса для модификации диагональных элементов, получая вариант "безотказного" разложения для любой симметричной положительно определенной матрицы
7.5 Комбинация разложений Холецкого IC(


) и IC(


)






Для экономии памяти при вычислении неполного или приближенного разложения Холецкого можно использовать следующие два варианта симметричных треугольных разложений.
Для контроля верхней границы заполнения треугольного множителя
Второй вариант структурно-порогового разложения можно описать следующим образом.
При проведении обычного порогового IC(
8 Использование разложения Холецкого в параллельных итерационных алгоритмах
Формулы разложения Холецкого по большей части имеют рекурсивный характер и выделение параллельных и независимых этапов вычислений является не очевидной и непростой задачей. Слишком прямолинейное ее решение может привести к значительному объему пересылаемых данных, что значительно снизит результат распараллеливания. Наибольший эффект может дать подход, основанный на предварительном переупорядочивании исходной матрицы.
8.1 Переупорядочивания для выделения блочности
Для того чтобы выделить независимые блоки вычислений, можно использовать симметричные перестановки строк и столбцов исходной матрицы, приводящие ее к блочно окаймленному виду. В этом случае основная часть работы будет сосредоточена в независимых блоках, которые могут обрабатываться параллельно и без обменов данными.
Наиболее простым, но не слишком эффективных способом упорядочивания является предварительное упорядочивание матрицы с помощью обратного алгоритма Катхилла-Макки (RCM, reverse Cuthill—McKee) для минимизации ширины профиля, а затем равномерное разбиение по блокам (процессорам) в новом упорядочивании. После присваивания номера процессора каждой вершине графа матрицы, в независимые блоки можно выделить те вершины графа, которые связаны только с вершинами, имеющими тот же номер процессора (т.е. являющимися внутренними вершинами). Остальные вершины можно объединить в последний блок окаймления, который будет обрабатываться отдельно. Все вычисления внутри блоков будут независимы и могут выполняться параллельно. Для повышения эффективности треугольной факторизации внутренние вершины каждого из блоком можно также упорядочить с помощью метода RCM.
Более эффективными с точки зрения минимизации ширины окаймления будут следущие методы:
- Метод минимальных сепараторов, который заключается в последовательном нахождении имеющих минимальный размер разделителей (сепараторов), обеспечивающих расщепление оставшихся вершин на два независимых блока.
- Метод минимальной степени (Minimum Degree, MD). Прямое применение этого метода к матрицах большого размера затруднительно, поэтому используется приближенный метод минимальной степени (Approximate Minimum Degree, AMD).
- Метод вложенных сечений (Nested Dissection, ND). Это рекурсивный алгоритм, на каждом шаге разделяющий множество вершин на два независимых блока, представленые в
блочно-окаймленном виде.
В качестве побочного положительного эффекта от такого упорядочивания, для некоторого вида матриц доказано, что полное разложение будет иметь почти минимально возможное количество ненулевых элементов. Нахождение оптимальной перестановки в общем случае является NP-полной задачей.
Существуют и другие алгоритмы упорядочивания матриц для наиболее оптимального их распределения по процессорам. Наиболее популярными являются последовательные пакеты METIS, JOSTLE, SCOTCH, CHACO, PARTY, а также параллельные коды PARMETIS, JOSTLE, PT-SCOTCH и ZOLTAN. Многие из них являются свободно распространяемыми.
8.2 Разложение в независимых блоках
Вычисления в независимых блоках полностью независимы и могут выполняться параллельно без обменов данными между процессорами. Единственным недостатком может быть лишь то, что для пороговых разложений количество арифметических операций на различных процессорах может различаться, что может привести к некоторой несбалансированности вычислений.
8.3 Разложение в сепараторах
Последний блок, в котором собраны сепараторы всех блоков при небольшом количестве используемых процессоров может обрабатываться, например, на одном головном процессоре. Если же процессоров достаточно много, но обработку сепараторов также необходимо производить совместно.
8.4 Иерархические и вложенные алгоритмы
Для обработки сепараторов могут быть применены те же алгоритмы упорядочивания и выделения независимых блоков что и для исходной задачи. Этот же прием может быть применен и на следующем шаге, с получением иерархического или вложенного алгоритма.
В случае применения порогового разложения такие построения могут быть явно применены к построенному дополнению по Шуру. Для структурных факторизаций существуют приложения сразу строящие многоуровневые упорядочивания и обеспечивающие минимальность заполнения и обменов.
8.5 Блочный метод Якоби
Описанные выше подходы относились к типу "прямого" или "явного" разложения, когда при отбрасывании элементов разложения в расчет принимались только их абсолютные значения. Структурные свойства при этом являлись подчиненными и на отбрасывание элементов никак не влияли.
Альтернативным является подход, когда из-за соображений увеличения ресурса параллелизма некоторые элементы отбрасываются исключительно из структурных соображений. Например, можно сначала распределить строки матрицы по процессорам, а затем перед проведением разложения просто отбросить все элементы связывающие один процессор с другим. В этом случае разложение будет проходить полностью независимо в каждом из блоков. Внутри каждого блока может проводиться любой из структурных или пороговых вариантов разложения Холецкого. Построение такого предобусловливателя называют блочным методом Якоби без перекрытия блоков (Block Jacobi, BJ). Такое предобусловливание является наиболее простым, применение его наиболее параллельным (полностью без обменов данными), правда сходимость может оставлять желать лучшего, почти независимо от качества разложения внутри каждого из блоков.
8.6 Аддитивный метод Шварца
Разложение гораздо более высокого качества по сравнению с методом Якоби можно получить применяя аддитивный метод Шварца (Additive Schwarz, AS). Иногда этот метод называют также методом Якоби с перекрытиями. Суть его заключается в расширении структуры каждого из блоков матрицы за счет добавления нескольких слоев близлежащих строк матрицы. Треугольное разложение строится для расширенной матрицы, таким образом на каждом из процессоров происходит решение расширенной подзадачи с привлечением данных от других процессоров. После нахождения решения подзадачи на каждом из процессоров обычно происходит отбрасывание не локальных компонент решения. Такой вариант метода называют аддитивный метод Шварца с ограничениями (Restricted Additive Schwarz, RAS).
Сходимость аддитивного метода Шварца бывает гораздо выше чем сходимость метода Якоби, и обычно монотонно улучшается с ростом размера перекрытия. Несмотря на дополнительные вычисление и обмены, общее время решения на параллельном компьютере может быть существенно меньше.
8.7 Неполное обратное треугольное разложения
Существует и другой вариант аддитивного разложения, который кроме несколько более быстрой сходимости опирается на построение перекрытий блоков только в одну сторону ("назад", т.е. в сторону меньших номеров строк). Название этого метода блочное неполного обратного разложения Холецкого, имеющее только английскую аббревиатуру BIIC (Block Incomplete Inverse Cholesky). Позднее, вместе с рассмотрением несимметричного варианта разложения (BIILU), этот метод стал называться методом неполного обратного треугольного разложения, или НОТ-разложения.
Комбинация этого метода с неполным симметричным треугольным разложением второго порядка IC2 внутри каждого из блоков имеет обозначение BIIC2.
Идея этого метода впервые была предложена И.Е.Капориным в виде последовательного алгоритма. В литературе встречается также название этого метода как метод Капорина-Коньшина, по имени авторов впервые представивших его параллельную реализацию и проанализировавших ее свойства.
9 Решение линейных систем с треугольной матрицей
Разложение Холецкого может применяться для решения системы линейных уравнений
9.1 Решение системы с плотной нижнетреугольной матрицей
Решение линейной системы с плотной нижнетреугольной матрицей
В разделе Прямая_подстановка_(вещественный_вариант) содержится подробное описание алгоритма и его анализ.
9.2 Решение системы с плотной верхнетреугольной матрицей
Решение линейной системы с плотной верхнетреугольной матрицей
В разделе Обратная_подстановка_(вещественный_вариант) содержится подробное описание алгоритма и его анализ.
9.3 Решение системы с разреженной нижнетреугольной матрицей
Решение линейных систем с разреженной нижне- или верхнетреугольной матрицей аналогично рассмотренным алгоритмам для плотных матриц, при этом подстановки ведутся исключительно для ненулевых элементов с учетом идеи работы с разреженными матрицами.
9.4 Решение системы с комплексной треугольной матрицей
Решение линейных систем с комплексной нижне- или верхнетреугольной матрицей аналогично рассмотренным алгоритмам для вещественных матриц, при этом арифметические операции выполняются в комплексной арифметике, аналогично операциям раздела факторизации эрмитовых матриц.
9.5 Решение систем с блочноокаймленными треугольными матрицами
Особенность решения линейных систем с блочноокаймленными треугольными матрицами в том что независимость вычислений в отдельных блоках дает возможность проведения параллельных вычислений.
10 Существующие реализации алгоритма
- В SAS используется функция ROOT( matrix ), входящая в пакет SAS IML.
- В Mathematica используется процедура CholeskyDecomposition[A].
- В GSL используется функция gsl_linalg_cholesky_decomp.
- В ALGLIB имеются реализации как LLT так и LDLT разложений для различных языков програмирования: C#, C++, C++ (арифметика повышенной точности), FreePascal, Delphi, VB.NET, VBA, Python.
- В Online Matrix Calculator непосредственно в web-интерфейсе можно выполнить разложение Холецкого, выбрав раздел Cholesky Decomposition.