6CAD-CAE-23 Упорядочение (1014142), страница 7
Текст из файла (страница 7)
Доказывается, что число операций, необходимых при разложении А в произведение LLT выражается формулой:
, а число операций, необходимых для решения системы Ах=b при известном разложении А= LLT, равно
.
Хотя переход от ленточных схем к профильным связан лишь с очень небольшим усложнением, он может подчас дать весьма впечатляющий выигрыш по числу операций, необходимых при разложении матриц.
Рассмотрим пример. Пусть дан звездный граф с N узлами. Если N=9, то упорядочение с минимальным профилем и упорядочение с минимальной шириной ленты приведет к матрицам:
х | х | х | х | ||||||||||||||||
х | х | х | х | ||||||||||||||||
х | х | х | х | ||||||||||||||||
х | х | х | х | ||||||||||||||||
х | х | х | х | х | х | х | х | х | х | х | |||||||||
х | х | х | х | ||||||||||||||||
х | х | х | х | ||||||||||||||||
х | х | х | х | ||||||||||||||||
х | х | х | х | х | х | х | х | х | х | х |
В этом примере число операций, необходимых при разложении матрицы, упорядоченной так, чтобы профиль был минимален, есть величина порядка N. В то же время это же число для матрицы, упорядоченной так, чтобы ширина ленты была минимальна, будет порядка N3, а L имеет порядка N2 ненулевых элементов.
Интерпретация на языке графов.
Пусть симметричной матрице A размером N x N сопоставлен неориентированный граф GA= (XA, EA), узлы которого помечены в соответствии с нумерацией строк А: ХА = {х1, …..,хN}.
Если i<j, то включения {i,j } и
равносильны.
Для i=1,………,N справедливо равенство: .
Рассмотрим прежнюю матрицу и соответствующий ей помеченный граф.
1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
1 | a11 | |||||||
2 | a21 | a22 | ||||||
3 | a33 | |||||||
4 | a41 | a44 | ||||||
5 | a53 | a54 | a55 | |||||
6 | a63 | a66 | ||||||
7 | a75 | a76 | a77 |
Смежными множествами здесь будут:
;
;
ø
Можно их сравнить со строчными индексами элементов оболочки в каждом столбце. Множество будет именоваться i-м фронтом помеченного графа, а число элементов этого множества (как и раньше) – i-й шириной фронта.
Ярким представителем профильных методов является обратный алгоритм Катхилла-Макки, основой которого служит обратное упорядочение.
Упорядочение, получаемое обращением упорядочения Катхилла – Макки, часто гораздо сильнее уменьшает профиль, чем первоначальное переупорядочивание, хотя ширина ленты остается неизменной. Это упорядочивание было названо обратным упорядочением Катхилла – Макки.
Обратный алгоритм Катхилла-Макки (вариант Джорджа 1971)
Описываемый ниже вариант метода Катхилла-Макки, вероятно, является наиболее широко используемым алгоритмом упорядочения, имеющим целью уменьшение профиля,
Так как схему Катхилла-Макки можно рассматривать как метод уменьшения ширины ленты матрицы посредством локальной минимизации чисел i, то это приводит к предположению, что эту схему можно использовать и для уменьшения профиля матрицы.
Исследуя профильные методы, Джордж обнаружил, что упорядочение, получаемое обращением упорядочения Катхилла-Макки, часто гораздо сильнее уменьшает профиль, чем первоначальное упорядочение, хотя ширина ленты остается неизменной.
Это упорядочение было названо обратным упорядочением Катхилла-Макки (RCM) (Reverse Cuthill-McKee). Позднее было доказано, что обратная схема всегда не хуже прямой в отношении хранения и обработки оболочки. (Liu 1975).
Для связного графа алгоритм RCM можно описать следующим образом.
Шаг 1. Определить начальный узел r и выполнить присвоение Х1 r (вопрос о выборе начального узла разбирается в дальнейшем).
Шаг 2. (Основной цикл). Для i=1,...,N найти всех ненумерованных соседей узла Xi и занумеровать их в порядке возрастания степеней.
Шаг 3. (Обратное упорядочение). Обратное упорядочение Катхилла-Макки есть y1, y2, ... , yN, где yi=XN-i+1 для i=1,...,N .
В случае, если граф GA несвязен, описанный выше алгоритм можно применять к каждой связной компоненте графа по очереди. Если начальный узел задан, алгоритм относительно прост.
Рассмотрение этого алгоритма будем проводить применительно к матрице, структура которой задана следующим графом:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
1 | x | * | * | * | |||||||
2 | * | x | * | * | * | ||||||
3 | * | x | |||||||||
4 | * | * | x | * | |||||||
5 | x | * | |||||||||
6 | * | * | x | * | * | ||||||
7 | * | * | x | * | * | ||||||
Размер профиля 23 Ширина ленты 5 | 8 | * | x | * | |||||||
9 | * | * | * | x | * | ||||||
10 | * | * | x |
Предположим, что в качестве начального узла взят узел 7 , т.е. Х1=7.
Новая нумерация | Старая нумерация | Ненумерованные соседи в порядке возрастания степеней (шаг 2) | Обратное упорядочение (шаг 3, N- i+1) |
1 | 7 | 10, 4, 2, 9 | 10 |
2 | 10 | - | 9 |
3 | 4 | 1 | 8 |
4 | 2 | 3 | 7 |
5 | 9 | 8, 6 | 6 |
6 | 1 | - | 5 |
7 | 3 | - | 4 |
8 | 8 | - | 3 |
9 | 6 | 5 | 2 |
10 | 5 | - | 1 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |||||
1 | x | * | * | * | * |
| ||||||||
2 | * | x | * | |||||||||||
3 | * | x | * | * | ||||||||||
4 | * | * | x | * | * | |||||||||
5 | * | * | x | * | * | |||||||||
6 | * | * | x | * | ||||||||||
7 | * | x | ||||||||||||
8 | * | x | * | |||||||||||
9 | * | * | * | x | * | |||||||||
10 | * | x |