МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» (ФГБОУ ВПО «КубГУ») Кафедра вычислительных технологий УНИВЕРСАЛЬНЫЕ РАЗРЕЖЕННЫЕ МЕТОДЫ Гурин Максим Дмитриевич Краснодар 2014 СОДЕРЖАНИЕ ВВЕДЕНИЕ………………………………………………………………………..5 ГЛАВА 1. Системы линейных алгебраических уравнений…………………….6 1.1 Задача решения системы линейных алгебраических уравнений……6 1.2 Методы решения систем линейных алгебраических уравнений…....7 1.3 Итерационные методы…………………………………………………8 1.3.1 Метод Якоби…………………………………………………...9 1.3.2 Метод Гаусса – Зейделя……………………………………...10 1.4 Прямые методы………………………………………………………..11 1.4.1 Матричный метод…………………………………………….12 1.4.2 Метод гауссова исключения………………………………...13 1.4.3 Метод Холецкого…………………………………………….15 ГЛАВА 2. Применение метода Холецкого для решения СЛАУ……………..16 2.1 Положительно-определенные и неопределенные задачи ………….16 2.2 Разложение Холецкого…………………………………………...…..17 2.3 Метод внешних произведений……………………………………….19 2.4 Применение метода Холецкого к решению разреженных систем...21 2.5 Задача перестановки…………………………………………………..23 ГЛАВА 3. Теория графов и связь с матрицами………………………………..24 3.1 Некоторые сведения из теории графов……………………………...24 3.2 Способы представления графа……………………………………….25 3.3 Ассоциирование графов и матриц…………………………………...26 ГЛАВА 4. Графовая модель разложения Холецкого………………………….28 4.1 Разложение Холецкого и соответствующие изменения в графе…..28 4.2 Универсальные методы………………………………………………30 4.3 Алгоритм минимальной степени…………………………………….31 4.4 Основной алгоритм…………………………………………………...32 4.5 Практическая реализация для исследования………………………..33 4.6 Пример исследования заполнения матрицы………………………...34 4.7 Явление заполнения в матрицах с графами – деревьями…………..36 2 4.8 Явление заполнения в матрицах с графами специального вида…...37 4.9 Экспериментальный анализ………………………………………….39 4.10 Численный эксперимент…………………………………………….41 ЗАКЛЮЧЕНИЕ………………………………………………………………….45 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………………………46 ПРИЛОЖЕНИЯ…………………………………………………………………….48 3 ВВЕДЕНИЕ Проблема численного решения больших разреженных систем линейных уравнений является одной из важнейших практических задач вычислительной математики. У этой проблемы множество граней: начиная с фундаментальных вопросов, касающихся внутренней структуры некоторых задач, заканчивая более абстрактными проблемами, такими как построение эффективных структур данных и анализ методов работы с ними. Однако данная тема является достаточно сложной и объемной, и просто физически невозможно рассмотреть существующие методики в рамках одной работы. Поэтому рассматривается случай, когда матрица системы является разреженной, симметричной и положительноопределенной. Задачи такого класса очень часто возникают при описании некоторых физических процессов, а так же при произведении определенных инженерных расчетов. Например, именно к такой задаче сводится применение метода наименьших квадратов и некоторые способы численного решения систем дифференциальных уравнений. Данная работа посвящена машинной реализации метода Холецкого для решения линейных систем с положительно-определенными матрицами. С методами исключения, например такими, как методы Гаусса, связана одна из важнейших проблем – проблема выбора главных элементов. Обычно выбор происходит на основании компромисса между сохранением численной устойчивости и сохранением разреженности матрицы. В таком случае разреженность анализируется при помощи графа матрицы, а устойчивость – на основании значений конкретных элементов. Если же матрица системы разрежена, то ставится задача как можно более полно использовать разреженность матрицы. Потому как на основании свойства разреженности можно более компактно хранить такую матрицу, а так же более эффективно производить вычисления. 4 ГЛАВА 1. Системы линейных алгебраических уравнений 1.1 Задача решения системы линейных алгебраических уравнений Системой линейных алгебраических уравнений (СЛАУ) называется система уравнений вида a11 x1 a12 x2 a1n xn b1 a x a x a x b mn n m m1 1 m 2 2 Здесь m – количество уравнений в системе, n – количество неизвестных, x1 xn – неизвестные, которые надо определить, a ij – коэффициенты системы, bk – свободные члены. Обычно, при постановке задачи решения системы линейных алгебраических уравнений коэффициенты системы и свободные члены предполагаются известными. Систему уравнения можно переписать в матричном виде. В таком случае она будет выглядеть следующим образом a11 a 21 a 1m a12 a1n x1 b1 a 22 a 2 n x b2 a 2 m a mn xn bm Или, если записать в матричных формулах, Ax b Здесь A называется матрицей системы, x – столбец неизвестных, b – столбец свободных членов. В случае, когда количество свободных членов равно количеству неизвестных, матрица системы является квадратной. Такую систему линейных алгебраических уравнений называют квадратной. 5 1.2 Методы решения систем линейных алгебраических уравнений Существует два основных подхода к решению систем линейных алгебраических уравнений. Это два больших семейства методов, которые отличаются друг от друга подходами к решению, методологией, а так же принципом работы. Это семейства прямых и итерационных методов решения системы линейных алгебраических уравнений. 6 1.3 Итерационные методы Основная идея итерационных методов – установление процедуры уточнения определённого начального приближения к решению. При выполнении условий сходимости они позволяют достичь любой точности просто повторением итераций. Преимущество этих методов в том, что часто они позволяют достичь решения с заранее заданной точностью быстрее, а также позволяют решать большие системы уравнений. Основная суть таких методов – это поиск неподвижной точки некоторого матричного уравнения x A* x b * которое было бы эквивалентно исходной системе уравнений.[функан] При итерациях решение в правой части заменяется приближением, найденный на предыдущем шаге, то есть x n 1 A * x n b * На основании применяемого подхода, принято итерационные методы можно поделить на следующие типы: 1. Методы, основанные на расщеплении. Обычно, такие методы представляют матрицу системы в виде суммы и/или произведения нескольких матриц с целью построения системы итерационного вида. 2. Вариационного типа. В таком типе методов задача решении системы линейных алгебраических уравнений сводится к решению некой задачи вариационного исчисления, для осуществления которого используются итерационные приемы. 3. Проекционного типа. В данном случае задача решения системы сводится к задаче проектирования неизвестного вектора на некоторое пространство оптимально относительно другого некоторого пространства. 7 1.3.1 Метод Якоби Данный метод является методом простой итерации для решения системы линейных алгебраических уравнений. Назван в честь Карла Густава Якоби. Пусть ставится задача решения системы линейных алгебраических уравнений Ax b Для того чтобы применить метод простой итерации Якоби, необходимо переписать систему в итеративном виде x Bx g Например, этого можно добиться, введя замену B E D 1 A D 1 ( D A) g D 1b Здесь E – единичная матрица, D – диагональная матрица, главная диагональ которой точно совпадает с главной диагональю матрицы A. Отметим необходимость неравенства нулю всех диагональных элементов матрицы A. Этого можно добиться, произведя необходимую замену переменных. Далее, итеративный процесс строится по формуле x n1 Bx n g Условием остановки алгоритма можно положить выполнение неравенства max x kj 1 x kj (1 q ) j В данном случае q можно оценить как операторную норму матрицы B, то есть Ax q sup , x 1 x 8 1.3.2 Метод Гаусса – Зейделя Данный метод можно рассматривать как некоторое усовершенствование метода Якоби. В нем новые компоненты текущего получаемого вектора-приближения сразу же используются для расчета других компонент этого же вектора. В данном методе матрица системы линейных уравнений Ax b представляется в виде суммы A L D U Здесь матрица D – диагональная, содержащая в точности главную диагональ матрицы A. Матрицы L и U являются соответственно нижнетреугольной и верхнетреугольной, причем диагональные элементы у обеих из них – нулевые. Итерационный процесс в методе Гаусса – Зейделя строится по формуле ( L D) x n1 Ux n b Условием остановки итерационного процесса служит оценка x n 1 x n 9 1.4 Прямые методы Еще одним большим семейством методов решения СЛАУ являются прямые методы. Их основное отличие от итерационных – они позволяют за конечное количество шагов найти точное решение системы линейных алгебраических уравнений. Если вычисления выполняются с абсолютной точностью, то решение тоже будет найдено точно. Конечно, реальная вычислительная система работает с некоторой погрешностью, поэтому нельзя утверждать, что прямые методы позволяют найти абсолютно точное решение на ЭВМ. 10 1.4.1 Матричный метод При использовании этого метода квадратная система a11 x1 a12 x 2 a1n x n b1 a x a x a x b n2 2 nn n n n1 1 записывается в матричном виде Ax b Основная идея метода заключается в матрице, обратной к A и умножении на нее обеих частей равенства слева. Тогда решение получится в виде x A 1b Условием применимости данного метода (как и вообще существования решения неоднородной системы линейных уравнений с числом уравнений, равным числу неизвестных) является невырожденность матрицы A. Необходимым и достаточным условием этого является неравенство нулю определителя матрицы A. Для однородной системы линейных уравнений, то есть когда вектор b = 0, действительно обратное правило: система Ax b имеет нетривиальное (то есть ненулевое) решение, только если определитель матрицы системы равен нулю. Такая связь между решениями однородных и неоднородных систем линейных уравнений носит название альтернативы Фредгольма. 11 1.4.2 Метод гауссова исключения Данный метод основывается на последовательном исключении неизвестных переменных, когда система приводится к эквивалентной системе с матрицей треугольного вида. Далее, последовательно, начиная с последнего по номеру, находятся компоненты вектора решения системы. Работу метода гауссова исключения принято разделять на два этапа. На первом этапе осуществляется так называемый прямой ход, когда путём элементарных преобразований над строками систему приводят к ступенчатой или треугольной форме, либо устанавливают, что система несовместна. Элементарными преобразованиями строк называют перестановку местами двух строк, умножение строки на число, прибавление одной строки к другой. Среди элементов первого столбца матрицы выбирают ненулевой, перемещают его на крайнее верхнее положение перестановкой строк и вычитают получившуюся после перестановки первую строку из остальных строк, домножив ее на величину, равную отношению первого элемента каждой из этих строк к первому элементу первой строки, обнуляя тем самым столбец под ним. После того, как указанные преобразования были совершены, первую строку и первый столбец мысленно вычёркивают и продолжают пока не останется матрица нулевого размера. Если на какой-то из итераций среди элементов первого столбца не нашёлся ненулевой, то переходят к следующему столбцу и проделывают аналогичную операцию. На втором этапе осуществляется так называемый обратный ход, суть которого заключается в том, чтобы выразить все получившиеся базисные переменные через небазисные и построить фундаментальную систему решений, либо, если все переменные являются базисными, то выразить в численном виде единственное решение системы линейных уравнений. Эта процедура начинается с последнего уравнения, из которого выражают соответствующую базисную переменную (а она там всего одна) и подставляют в предыдущие уравнения, и так далее, поднимаясь по 12 «ступенькам» наверх. Каждой строчке соответствует ровно одна базисная переменная, поэтому на каждом шаге, кроме последнего (самого верхнего), ситуация в точности повторяет случай последней строки. 13 1.4.3 Метод Холецкого Метод Холецкого, или так же известный как метод квадратных корней – это вариант гауссова исключения, адаптированных для симметричных положительно-определенных матриц. Пусть ставится задача решения системы линейных алгебраических уравнений: x b Здесь А – симметричная положительной определенная матрица коэффициентов размера N N , b – вектор, называемый правой частью, x – вектор, который необходимой найти. Для решения такой системы методом Холецкого необходимо найти разложение матрицы системы LLT После того, как такой разложение найдено, система может быть переписана в виде LLT x b Если обозначить y LT x , то решение системы сводится к решению двух систем уравнений: Ly b T L x y Первоначально может показаться, что сведение системы к решению двух систем – не самый оптимальный путь. Однако, стоит помнить, что множитель Холецкого – это диагональная матрица, и решение диагональной системы можно производить достаточно эффективно[Ващенко]. 14 ГЛАВА 2. Применение метода Холецкого для решения СЛАУ 2.1 Положительно-определенные и неопределенные матричные задачи Как было сказано выше, будут рассматриваться исключительно задачи решения систем линейных уравнений, в которых матрица системы является симметричной, разреженной и положительно-определенной. В противном случае, появляется проблемы выбора главного элемента, то есть необходимость перестановки строк и столбцов. То есть матрица системы претерпевает преобразование вида A QAP В этом случае Q и P являются матрицами перестановок соответствующих размеров. Умножение слева на Q переставляет строки матрицы A, справа на P – столбцы. Стоит отметить, что зачастую не представляется возможности заранее найти необходимые перестановки, так как они производятся в процессе вычисления, исходя из соображений компромисса между численной устойчивостью и разреженностью. В нашем же случае, данные перестановки можно вычислить заранее. Это поможет более качественно и эффективно производить вычисления и хранить операнды в памяти компьютера. 15 2.2 Разложение Холецкого Разложение Холецкого – это представление симметричной положительноопределённой матрицы A в виде LLT где L — нижняя треугольная матрица со строго положительными элементами на диагонали. Такую матрицу будем называть множителем Холецкого. Предложение. Разложение Холецкого всегда существует и единственно для любой симметричной положительно-определённой матрицы. Доказательство. Существование. Будем доказывать существование разложения по индукции. В качестве базиса индукции можно взять такой тривиальный случай, как положительное число, которое представим в виде матрицы. Далее, предположим, что предложение верно для матрицы размером N 1 N 1 . Докажем, что оно верно и для матрицы порядка N. Такую матрицу можно представить в следующем блочном виде. d v vT H Здесь d – скаляр, v – вектор, H – матрица порядка N 1 . Такую матрицу можно переписать в виде произведения d v d 0 1 0 d I N 1 0 H 0 vT d I N 1 vvT В данном разложении H H , I N 1 – единичная матрица размера N-1. d Ясно, что H – симметричная, так как A так же является симметричной. Так же она является положительной определенной. Действительно для любого произвольного x, T xT v T d v T x v vvT T x x T Hx , x x H d d d v H x 16 Отсюда x T Hx >0. По предположению индукции, H имеет разложение Холецкого LH LTH . Причем диагональ у треугольного множителя положительная. Поэтому матрица A может быть разложена в произведение d v d 0 1 0 1 0 d T I N 1 0 LH 0 LH 0 vT d d v I N 1 d Единственность[Гулин] 17 0 d LH 0 vT d LTH T LL 2.3 Метод внешних произведений Доказательство существования разложения Холецкого в своем составе предлагает алгоритм нахождения разложения Холецкого. Такой алгоритм называется методом внешних произведений. Его можно шаг за шагом записать в виде матричных формул: d A A0 H 0 1 v1 d v 1 v1 H 1 d1 T 1 0 1 0 v1v1T 0 H I N 1 1 d1 d 1 0 v1T 1 0 T L1 d1 L1 0 H 1 I N 1 L1 A1 LT1 Далее 1 0 1 0 0 d 2 A1 0 H1 0 v 2 0 1 v 2T 0 H 2 0 0 d2 v2 d2 1 0 1 0 0 0 0 1 0 0 v 2 v 2T I N 2 0 0 H 2 d 2 0 0 d2 0 0 v 2T d2 I N 2 L2 A2 LT2 Продолжая, можно убедиться, что AN 1 LN I N LTN . Следует отметить, что в такой цепочке для всех i от 1 до N d i – положительный скаляр (так как все угловые миноры положительной-определенной матрицы положительны), vi – вектор длины N-i, H i – положительно определенная симметричная матрицы порядка N-i. Пройдя все шаги до N, получим A L1 L2 LN LTN LT2 LT1 LLT Можно показать[Лю], что L L1 L2 LN ( N 1) I N Таким образом, в этой схеме один за одним вычисляются столбцы итогового множителя Холецкого L. На каждой итерации выполняется модификация матрицы H i . Результатом является новая матрица H i , которую остается разложить. Стоит отметить, что существуют и другие алгоритмы нахождения декомпозиции Холецкого, причем в некоторых случаях более эффективные. 18 Например, это могут быть метод окаймления или метод скалярных произведений. Но, целью данной работы является не исследование эффективных алгоритмов построения разложения Холецкого, а описание структурных преобразований матрицы системы при произведении такого разложения. Методом, который дает об этом достаточное представление, был выбран метод внешних произведений. 19 2.4 Применение метода Холецкого к решению разреженных систем При решении систем с разреженными матрицами методом Холецкого, во время нахождения разложения возникает одна проблема, так называемая проблема заполнения. Рассмотрим пример симметричной положительноопределенной матрицы 1 4 2 1/ 2 A 2 0 1 / 2 0 2 0 2 1/ 2 2 0 0 0 3 0 0 0 5/8 0 0 0 16 Ее множитель Холецкого имеет вид 0 0 0 2 0.5 0 0 0.5 L 1 1 1 0 0.25 0.25 0.5 0.5 1 1 2 3 0 0 0 0 1 Видно, что в множителе Холецкого появились ненулевые элементы на тех позициях, где в исходной матрице были нули. Это явление называется явлением заполнения. Оно игнорируется при решении плотных систем, но имеет критическое значение при решении разреженных систем. Потому как при рассмотрении разреженных систем свойство разреженности предоставляет возможность как значительно сократить объем используемой памяти, так и количество вычислений. Для того чтобы понять причину появления ненулевых элементов, можно воспользоваться представление разложения в форме внешних произведений. На i шаге подматрица Hi модифицируется матрицей (vi vtT / d i ) I i . В результате, полученная матрица может иметь ненулевые элементы там, где в исходной были нули. В исходной системе заменим переменные по правилу x i x 5 i 1 . Матрица такой перестановки имеет вид 20 0 0 P 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 ~ Новая матрица системы A PAPT приобретает вид 16 0 0 5/8 ~ A 0 0 0 0 2 1/ 2 0 0 2 0 0 1/ 2 3 0 2 0 1/ 2 1 2 1 4 Множитель Холецкого для такой матрицы равен (с точностью до трех значащих цифр) 0 0 0 0 4 0 0 0 0.791 0 ~ L 0 0 1.73 0 0 0 0 0.707 0 0 0.5 0.632 1.15 1.41 0.129 Как видно, эффект заполнения не наблюдается. Данный пример наглядно показывает, что иногда применение некоторой перестановки элементов может кардинально изменить влияние эффекта заполнения. 21 2.5 Задача перестановки Как было показано, при решении системы с разреженной матрицей методом Холецкого матрица системы может претерпевать некоторое заполнение. То есть на тех позициях, где в исходной матрице были нулевые элементы, в множителе Холецкого могут появиться ненулевые элементы. При некоторой перестановке P матрицы A иногда имеет смысл искать разложение не исходной матрицы A, а матрицы с применением перестановки: ~~ ~ L LT PAPT . В некоторых случаях манипуляции с множителем L могут быть более эффективными, чем с множителем L. В качестве основного критерия будем считать минимизацию эффекта заполнения. В достаточно большом классе решаемых задач можно заранее спрогнозировать структуру матрицы системы. Таким образом, ставится задача выбора такой перестановки P матрицы A, при которой заполнение множителя Холецкого будет минимальным. Выбор перестановки будем осуществлять исключительно на основе структуры матрицы, не обращая внимания на значения конкретных элементов. Для того, чтобы оценить структуру матрицы в отрыве от значений конкретных элементов, примем так называемое соглашение о неуничтожении. Соглашение о неуничтожении. Элемент матрицы будем считать равным нулю тогда и только тогда, когда с этим элементом не производилось никаких действий. Результат любых арифметических действий хотя бы с одним ненулевым операндом будем считать не равным нулю. Следует отметить, что для матриц определенных структур, например, для матриц ленточного вида, существует оптимальный алгоритм поиска перестановки, минимизирующей заполнение множителя Холецкого. Однако, такого алгоритма для произвольной разреженной определенной симметричной матрицы не существует[Лю]. 22 положительно- ГЛАВА 3. Теория графов и связь с матрицами 3.1 Некоторые сведения из теории графов Для текущего исследования будет можно ограничиться рассмотрением неориентированных связных графов без петель. Неориентированным графом называется упорядоченная пара G V , E , для которой выполняются следующие условия: 1. V – непустое множество. Элементы этого множества называют вершинами или узлами графа. 2. E – множество, элементами которого являются неупорядочены пары элементов множества V. Элементы множества E принято называть ребрами графа. Говоря менее строго, граф – это математический объект, который представляет собой набор вершин (узлов) и ребер, соединяющими некоторые пары вершин. Будем говорить исключительно о конечных графах, то есть о таких, у которых множества вершин и ребер – счетные и конечные. Две вершины графа называются соседними, если существует ребро, соединяющее их. Два ребра называются смежными, если у них есть общая вершина. 23 3.2 Способы представления графа Рассмотрим способы представления графа. Первый из них – естественный, изображение в виде чертежа. В случае такого изображения вершины графа представляются точками на плоскости. Если две некоторые вершины соединяет ребро, то на чертеже соответствующие точки соединяются линией. Чертеж графа позволяет наглядно показать его структуру. Остальные способы – это способы представления графа в памяти компьютера. Матрица смежности графа G c конечным числом вершин N – это квадратная матрица размера N N . В ней значение элемента a ij равно числу ребер из вершины i в вершину j. Матрица смежности является одной из наиболее распространенных структур данных для хранения графов. Данная структура наиболее эффективна, когда в графе достаточно большое количество ребер, в противном же случае значительная часть памяти будет тратиться на хранение незначащих нулей для поддержания структуры матрицы. Матрица инцидентности графа G c N вершинами и M ребрами – это матрица размером N M . В соответствие ребрам графа ставятся столбцы матрицы, вершинам – строки. В такой матрице элемент aij 0 , когда вершина i является концевой вершиной ребра j. Если в графе количество ребер больше количества вершин (а такое встречается достаточно часто), то такой способ хранения является более ресурсоемким по сравнению с хранение графа в виде его матрицы смежности. Последний способ хранения – хранение в виде списка смежности. Такая структура хорошо подходит для разреженных графов, но в некоторых случаях требует более трудозатратной обработки. Данную структуру данных можно представить в виде ассоциативного массива, то есть объекта, позволяющего хранить пары «ключ-значение». Ключом в таком массиве является имя вершины, значением – список вершин, соседних с данной. 24 3.3 Ассоциирование графов и матриц Упорядочивание, или помечивание графа – это операция отображения множества вершин графа на множество натуральных чисел. Пусть A – квадратная матрица размера N N . Упорядоченный, или помеченный граф матрицы A – граф G A (V A , E A ) , у которого N вершин пронумерованы числами от 1 до N и {vi , v j } E A тогда и только тогда, когда aij a ji 0, i j . * (1) * * ( 2 ) * * * (3) * * ( 4) * ( 5 ) * * * (6) Рис 1. Матрица и ее помеченный граф Если P I – произвольная матрица перестановки, то непомеченные графы матриц A и PAP T совпадают. Разница будет лишь в помечивании графов.[ Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. — М.: Вильямс, 2005. — 1296 с. — ISBN 5-8459-0857-4]. Таким образом, непомеченный граф матрицы представляет лишь ее структуру, без упоминания о каком-либо упорядочивании. То есть можно говорить, что задача отыскания необходимой перестановки матрицы A сводится к отысканию некоторого помечивания ее непомеченного графа. 25 (1) * * ( 2 ) * * * (3) * * ( 4) * * ( 5 ) * * * (6) Рис 2. Матрица после перестановки и ее помеченный граф 26 ГЛАВА 4. Графовая модель разложения Холецкого 4.1 Разложение Холецкого и соответствующие изменения в графе В алгоритме выполнения разложения Холецкого методом внешних произведений первый шаг в виде матричных формул можно записать следующим образом: d A A0 H 0 1 v1 d v 1 v1 H 1 d1 T 1 0 1 0 v1v1T 0 H I N 1 1 d1 d 1 0 v1T 1 0 T L1 L1 A1 LT1 d1 L1 0 H 1 I N 1 Далее, этот алгоритм рекурсивно применяется к H 1 , H 2 и так далее. Рассмотрим более детально трансформацию матрицы H1 H1 v1v1T / d1 . При рассмотрении будем учитывать соглашение о взаимном неуничтожении. Как видно, элемент на позиции ( j , k ) матрицы H 1 будет не равен нулю, либо если соответствующий элемент H 1 уже не равен нулю, либо если (v1 ) j 0 и (v1 ) k 0 . Однако, в первом случае, если уже был ненулевой элемент, не происходит явления заполнения. Таким образом, явление запонения проявляется если одновременно (v1 ) j 0 и (v1 ) k 0 . В 1961 году Партер и Роуз установили соответствие между преобразованиями A H0 матриц и H1 и преобразованиями в ассоциированных с ними графах. Будем обозначать графы для H 0 и H 1 как и G H 0 и G H1 , узлы (i ) будем обозначать как xi . Здесь – поменчивание графа, индуцированное исходной матрицей A. Граф матрицы H 1 получается из графа матрицы H 0 путем следующих манипуляций: 1. Удаление из графа G H узла x1 и всех инцидентных ему ребер 0 2. Добавление графу ребер таким образом, чтобы узлы, смежные с удаленным, оказались попарно смежными между собой Графы, полученные таким образом, будем называть графами исключения. То есть, как показал Роуз, симметричное гауссово исключение 27 можно рассматривать как итеративное построение последовательности графов исключения Gi G H i (Vi , Ei ), i 1 N 1 В данной цепочке Gi получается из Gi1 способом, описанным выше. Понятие графа исключения позволяет интерпретировать шаги процесса исключения как последовательность преобразований графа. Кроме того, множество ребер, добавленных к графам в процессе исключения, соответствует множеству элементов заполнения множителя Холецкого. Таким образом, в наших руках оказывается достаточно мощный инструмент, позволяющий определить степень и стурктуру заполнения множителя Холецкого без его непосредственного вычисления. Так как в достаточно широком классе задач структура исходной матрицы известная заранее, то можно до начала вычислений оценить множество элементов заполнения, и, соответственно, выбрать более эффективные приемы хранения и работы с таким множителем. Надо сказать, что для некоторого ленточных), уже существуют методы вида матриц (например, для повышения эффективности разложения, как в плане расходуемой памяти, так и в плане времени вычисления. Однако, гораздо более интересный вопрос, какую стратегию выполнения стоит выбрать при работе с произвольными матрицами. 28 4.2 Универсальные методы Обозначим как Nonz(A) множество ненулевых элементов матрицы A, F(A) – множество элементов заполнения матрицы L. Здесь L – соответствующий множитель Холецкого для матрицы A. Пусть A – заданная симметричная положительно-определенная матрица, а P – произвольная матрица перестановки. Очевидно, что количество ненулевых элементов в матрицах A и PAP T совпадают, то есть Nonz ( A) Nonz( PAPT ) . Тем не менее, тут возникает одно критически важное обстоятельство: различие для Nonz( F ( A)) и Nonz( F ( PAPT )) может быть очень велико. Это было показано ранее, когда было продемонстрировано явление заполнения. Можно сказать, что задача поиска перестановки сводится к решению задачи минимизации. То есть необходимо найти такую перестановку P * , для которой размер структуры ненулевых элементов в матрице заполнения был бы минимален. Это можно записать в виде Nonz( F ( P* AP*T )) min Nonz( F ( PAPT )) P Для такой задачи не существует эффективного алгоритма решения в случае произвольной симметричной матрицы. Аналогичная задача для несимметричной матрицы очень трудна и принадлежит к классу NP-полных задач[Роуз 1975]. Поэтому для решения подобных задач прибегают к эвристическим алгоритмам, которые бы давали упорядочивание с приемлемо малой, но не обязательно минимальной степенью заполнения множителя Холецкого. 29 4.3 Алгоритм минимальной степени Наверное, наиболее популярным алгоритмом уменьшения заполнения множителя Холецкого является алгоритм минимальной степени. Для уменьшения числа ненулевых элементов i столбца на его место в еще не разложенной матрице необходимо перенести столбец с наименьшим количеством нулевых элементов. Объяснение сути алгоритма будет более естественным, если вспомнить, что происходит с графами при выполнении разложения Холецкого. На каждом шаге из графа удаляется вершина, а затем добавляются ребра, чтобы вершины, смежные с удаленной, стали смежными между собой. Каждое добавленное ребро можно интерпретировать как новый элемент в множестве заполнения. Наша задача – уменьшить множество заполнения. Для этого, надо постараться сделать так, чтобы при удалении очередной вершины к графу добавлялось минимальное количество ребер. Так как ребра могут добавляться только для смежных вершин, то для минимизации количества добавленных ребер можно брать в качестве вершины для удаления вершину с минимальной степенью. 30 4.4 Основной алгоритм Опишем алгоритм минимальной степени в терминах упорядочивания графа симметричной матрицы. Пусть G (V , E ) – непомеченный граф. 1. Инициализация, i:=1. 2. Выбор минимальной степени. В графе исключения Gi 1 выбрать узел xi , имеющий в Gi 1 минимальную степень. 3. Преобразование графа. Построить новый граф исключения Gi , исключая из Gi 1 вершину xi . 4. Цикл или остановка. i : i 1. Если iV – тогда остановка. В противном случае – переход на шаг 2. В процессе своей работы алгоритм генерирует размечивание вершин графа. Если соответствующее размечивание интерпретировать как перестановку в исходной матрице, то на выходе получается перестановка, которая некоторым образом минимизирует множество заполнения множителя Холецкого для некоторой матрицы. 31 4.5 Практическая реализация для исследования С целью нахождения перестановок для матриц на основе их структуры, а так же для анализа множества заполнения была написана программа на языке программирования Java. Данная программа производит следующие действия: 1. Получение на вход матрицы. Стоит сказать, что ручной ввод больших разреженных трудоемкий, поэтому симметричных был описан матриц класс – процесс ExampleGenerator, довольно который генерирует матрицы согласно некоторому закону. 2. Построение графа. Матрица рассматривается как ассоциированная с некоторым графом. 3. Для построенного графа строиться последовательность графов исключения. Это позволяет проанализировать заполнение множителя Холецкого для исходной матрицы. 4. Далее, для той же исходной матрицы последовательность графов исключения строится c использование алгоритма минимальной степени. На основании порядка удаления вершин, строится матрица перестановки P. 5. В конце, на печать выводится стурктура исходной матрицы, структура матрицы после перестановки, количество элементов в множестве заполнения множителя Холецкого для исходного случая, количество элементов в множестве заполнения множителя Холецкого для оптимизированного алгоритмом минимальной степени случая и стуктура самого множителя Холецкого. 32 4.6 Пример исследования заполнения матрицы В качестве примера для исследования была выбрана матрица со следующей структурой * * * (1) * * * (2) A * (3) * * * * * (n) Здесь звездочками обозначены ненулевые элементы матрицы. Для такой матрицы, с помощью построения последовательности графов исключения была получена стуркутура множителя Холецкого. (1) * (2) L * (3) * * * * (n) Элементы множества заполнения были отмечены, как показано. Далее, с помощью алгоритма минимальной степени была получена матрица перестановки. После того, как была произведена замена переменных, матрица приобрела вид * * (1) (2) * * ~ A (3) * * * * * * * * (n) Для такой матрицы структура множителя Холецкого будет иметь вид (1) (2) ~ L (3) * * * * * * (n) 33 Как можно отметить, явления заполнения не произошло. Однако, такое бывает нечасто. В приложении к данной работе можно найти еще несколько примеров матриц, для которых был произведен подобный анализ. Стоит сказать, что такой графовый подход позволяет легко и просто спрогнозировать поведение явления заполнения для некоторых графов специального вида. 34 4.7 Явление заполнения в матрицах с графами - деревьями Дерево – это неориетированный связный граф без петель, не содержащий циклических ребер.[ Оре О. Теория графов. — 2-е изд. — М.: Наука, 1980. — 336 с.]. Дерево всегда имеет вершины, степень которых равна 1. Более того, граф исключения, полученных из дерева путем удаления подобной вершины вместе с инцидентным ему ребром так же является деревом. Это свойство позволяет сформулировать следующее предложение. Предложение. Если неразмеченный граф G, ассоциированный с некой симметричной положительно-определенной матрицей A является деревом, тогда существует как минимум одна разметка такого графа, при котором в множителе Холецкого для матрицы A множество элементов заполнения будет пустым. То есть явление заполнения не проявится. Доказательство. Доказательство естественным образом вытекает из алгоритма минимальной степени. Действительно, в дереве всегда есть вершина, степень которой равна 1. Такая вершина называется листом дерева. То есть, при использовании алгоритма минимальной степени получится, что всегда будет выбираться именно такая вершина. Следовательно, так как ее степень равна 1, то с ней смежна тоже только одна вершина. Значит, в графе исключения не будет происходить добавление новых ребер. 35 4.8 Явление заполнения в матрицах с графами специального вида Допустим, имеется граф, у которого выполняются следующие условия 1. У графа есть как минимум одна вершина, смежная с остальными 2. Степень остальных вершин равна 2 Пример такого графа изображен на иллюстрации. Рис 3. Пример графа, удовлетворяющий рассматриваемым условиям. Случай с двумя вершинами Размечивание такого графа удается сделать для матриц, у которых ненулевые элементы стоят, во-первых, на диагонали, во-вторых – в некоторых столбцах и строках. Структура такой матрицы изображена на рисунке 4. Рис 4. Структура матрицы, ассоциированная с графом 36 Предложение. Для матрицы, ассоциированной с графом, у которого 1. Есть вершина как минимум одна вершина, смежная с остальными 2. Степень остальных вершин равна 2 может быть найдена перестановка, которая нейтрализует явление заполнения Доказательство. Не теряя общности, будем рассматривать случай, когда есть всего одна вершина, смежная со всеми остальными. Обозначим такую вершину v. Доказательство будем производить на основании применения алгоритма минимальной степени. В самом деле, для такого графа очевидно, что степень вершины v будет максимальной. Таким образом, кандидатами для удаления в алгоритме минимальной степени будут все остальные вершины, а потом уж и v. Допустим, на определенном шаге алгоритма удаляется вершина xi , которая, по предположению, смежна с v и какой-либо x j . В таком случае, исходя из правила построения графов исключения, необходимо добавить ребро, чтобы вершины, смежные с удаляемой, стали смежными между собой. Однако такое ребро уже есть, так как v смежна со всеми остальными вершинами графа. Таким образом, получается, что в процессе работы алгоритма будут удалены все вершины, причем при удалении каждой не будет происходить добавления новых ребер. Замечание. Вполне возможен вариант, когда вершина x j уже была удалена ранее, но в таком случае степень xi равна 1. А при построении графов исключения, если степень удаляемой вершины равна 1, то добавления новых ребер не происходит. 37 4.9 Экспериментальный анализ Предложения, доказанные ранее, показывают, что в случае произвольных матриц можно избежать явление заполнения. Однако в достаточно большом количестве частных случаев для решения системы с разреженной матрицей специального вида можно подобрать другие методы решения, нежели метод декомпозиции Холецкого. В другом классе задач, структура матрицы если и будет известна, то может не иметь очевидного закона распределения нулевых и ненулевых элементов. Для таких случаев естественно возникает вопрос: насколько оправдано применение алгоритма минимальной степени? В самом деле, если экономия памяти будет незначительная, то тогда нет смысла искать перестановку P, которая должна уменьшить эффект заполнения. Чтобы ответить на это вопрос, был поставлен численный эксперимент. Коэффициентом заполнения матрицы будем называть отношение количества ненулевых элементов матрицы к общему количеству элементов. Обозначать коэффициент заполнения будем буквой . В эксперименте генерировались матрицы разного размера с разным коэффициентом заполнения. Далее, для таких матриц вычислялись следующие величины: 1. Отношение количества элементов множества заполнения к количеству изначально нулевых элементов множителя Холецкого. 2. Отношение количества элементов множества заполнения к количеству изначально нулевых элементов множителя Холецкого, но после того, как матрица была модифицирована перестановкой, полученной с помощью алгоритма минимальной степени. Обозначим их как и O соответственно. Эти величины можно трактовать как процентное выражение «экономии» нулевых элементов во время явления заполнения в множителе Холецкого. Если оно равно 1, то можно говорить, что произошло полное заполнение нулевых элементов множителя Холецкого ненулевыми. Если оно равно нулю, то явление заполнения не наблюдается. Эксперимент 38 проводился при помощи программы, которая упоминалась ранее и которая была предназначена для анализа эффекта заполнения в случае матрицы, заданной собственной структурой. 39 4.10 Численный эксперимент Результатом численного эксперимента будет график зависимости ( ) и O ( ) , а так же в виде отдельного графика – разница между этими двумя функциями, которая позволит наглядно увидеть степень «экономии» нулевых элементов. Здесь (0,1) . Параметры для численного эксперимента, которые применялись при моделировании: 1. N – размер матрицы 2. – размер интервала разбиения 3. k – количество повторений эксперимента для каждого значения коэффициента заполнения матрицы 40 1,2 1 lambdaO 0,6 lambda l-lO 0,4 0,2 0, 98 0, 9 0, 68 0, 75 0, 83 0, 6 0, 53 0, 38 0, 45 0, 3 0, 08 0, 15 0, 23 0 0 lambda 0,8 gamma Рис 5. Результаты для N=50, = 0.025, k=10 41 1,2 1 0,8 lambdaO 0,6 lambda l-lO 0,4 0,2 0 0, 07 5 0, 15 0, 22 5 0, 3 0, 37 5 0, 45 0, 52 5 0, 6 0, 67 5 0, 75 0, 82 5 0, 9 0, 97 5 0 Рис 6. Результаты для N=200, = 0.025, k=10 42 1,2 1 0,8 lambdaO 0,6 lambda l-lO 0,4 0,2 0, 98 0, 9 0, 83 0, 75 0, 68 0, 6 0, 53 0, 45 0, 38 0, 3 0, 23 0, 15 0, 08 0 0 Рис 6. Результаты для N=500, = 0.025, k=10 43 ЗАКЛЮЧЕНИЕ В данной работе были рассмотрены нюансы решения разреженных систем методом Холецкого. В частности, с помощью аппарата теории графов было исследовано явление заполнения, которое возникает в множителе Холецкого при разложении разреженных матриц. Был рассмотрен алгоритм поиска такой замены переменных, которая позволила бы сократить влияние явления заполнения. В качестве такого алгоритма был рассмотрен алгоритм минимальной степени. Так же было произведены численные эксперименты, направленные на исследование эффективности алгоритма минимальной степени. Были получены некоторые результаты, показывающие, что при определенном коэффициенте заполнения матриц данный алгоритм показывает наибольшую эффективность. Применение алгоритма минимальной степени является оправданным для решения разреженных систем, особенно, когда известная структура ненулевых элементов матрицы. В таком случае можно продумать и организовать более экономичные структуры для хранения такой системы, а так же приемы для эффективного вычисления решения. 44