6CAD-CAE-23 Упорядочение (1014142), страница 9
Текст из файла (страница 9)
Алгоритм минимальной степени.
Алгоритм минимальной степени – эвристический алгоритм, который позволяет найти такое упорядочение матрицы, при котором она в процессе разложения претерпевает лишь небольшое заполнение.
Логика алгоритма.
Пусть в графе помечены узлы {x1,…,xi-1}. Число ненулевых элементов в этих столбцах графа заполнения в дальнейшем не меняется. Для уменьшения числа ненулевых элементов i-го столбца в еще не факторизованной подматрице на место i-го столбца нужно перевести столбец с наименьшим числом ненулевых элементов. Другими словами алгоритм минимальной степени можно рассматривать, как метод уменьшения заполненности путем локальной минимизации.
Описание алгоритма.
Пусть есть непомеченный граф G0 = (X,E).
Шаг 1 (инициализация). i←1.
Шаг 2(выбор минимальной степени). В графе исключения Gi-1 = (Xi-1 ,Ei-1) выбрать узел xi имеющий в Gi-1 наименьшую степень.
Шаг 3 (преобразование графа). Построить новый граф исключения Gi= (Xi,Ei), исключая из Gi-1 узел xi.
Шаг 4 (цикл или остановка). i←i+1. Если I> |X| - остановка. В противном случае перейти к шагу 2.
В качестве иллюстрации приведем таблицу.
i | Граф исключения Gi-1 | Выбранный узел | Минимальная степень |
1 |
| a | 1 |
2 |
| c | 1 |
3 |
| d | 2 |
4 |
| e | 2 |
5 |
| b | 2 |
6 |
| f | 1 |
7 |
g | g | 0 |
Примечание. На отдельных шагах может быть несколько узлов с минимальной степенью. В таком случае мы выбираем произвольный из таких узлов. Однако различные стратегии выбора в подобной стратегии неоднозначности дают различные варианты алгоритма минимальной степени.
11.4.4. Определение начального узла
Цель состоит в том, чтобы найти пару узлов, удаленных друг от друга на максимальное или почти максимальное расстояние. Значительный практический опыт свидетельствует, что такие узлы хороши в качестве начальных для нескольких алгоритмов упорядочения, в том числе для алгоритма RCM (Reverse Cuthill-McKee)
Расстояние d(x,y) между двумя узлами x и y связного графа G=(X,E) есть просто длина кратчайшего пути, соединяющего эти узлы.
Эксцентриситет узла Х: e(x)=max{d(x,y), где yX}
Диаметр графа G: (G)=max{e(x), xX}
или эквивалентно: (G)=max{d(x,y), x,yX}
Узел xX называется периферийным, если эксцентриситет равен диаметру графа, т.е. если e(x)= (G).
Пример графа:
При этом периферийные узлы X2, X5, X7.
Таким образом, наша цель состоит в описании эвристического эффективного алгоритма для определения узлов с большим эксцентриситетом.
Подчеркнем, что алгоритм не дает гарантии, что будет найден периферийный узел или хотя бы узел, близкий к периферийному. Тем не менее получаемые узлы , как правило, имеют большой эксцентриситет и являются хорошими начальными значениями для использующих их алгоритмов.
Основной конструкцией алгоритма является корневая структура уровней
Алгоритм принадлежит Гиббсу и соавторам (1976г.)
Шаг 1. инициализация: выбрать в Х произвольный узел r.
Шаг 2. построение структуры уровней:
а) построить структуру уровней с корнем в r .
б) определить e(r).
Шаг 3. стягивание последнего уровня: выбрать в последнем уровне узел Х с минимальной степенью.
Шаг 4. построение структуры уровней:
а) построить структуру уровней с корнем в Х.
б) если e(x) > e(r), положить r x и перейти к шагу 3.
Шаг 5 (финиш). Узел Х является псевдопериферийным.
Для построения структуры уровней возьмем в качестве начального узел 10.
Выбираем в последнем уровне узел 5 с минимальной степенью (могли бы взять узел 3) и снова строим структуру уровней..
Строим структуру уровней от узла 3.
Таким образом, судя по эксцентриситету в качестве периферийных могут выступать узлы 3,5 и 8.
Мы уже убедились ранее, что перенумерация, производимая от узла 3 привела к профилю, равному 18. Применим алгоритм RCM, начиная от узла 8.
Новая нумерация | Старая нумерация | Ненумерованные соседи в порядке возрастания степеней | Обратное упорядочение |
1 | 8 | 6, 9 | 10 |
2 | 6 | 5, 1 | 9 |
3 | 9 | 10, 7 | 8 |
4 | 5 | - | 7 |
5 | 1 | 4, 2 | 6 |
6 | 10 | - | 5 |
7 | 7 | - | 4 |
8 | 4 | - | 3 |
9 | 2 | 3 | 2 |
10 | 3 | - | 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 | * | |||||||||
Профиль стал также 18 | 8 | * | * | x | * | * | |||||
9 | * | * | * | x | * | ||||||
10 | * | * | x |
11.5. Сравнение методов упорядочения матриц.
Сравнение методов является трудной проблемой, так как эффективность метода зависит от конкретной задачи или от класса задач, для решения которых он используется.
Перечислим классы наиболее эффективных методов.
1. Ленточные методы (LR, CM).
2. Профильные методы (RСМ).
3. Универсальные разреженные методы (QMD).
4. Методы фактор-деревьев для конечно-элементных и конечно-разностных задач (RQT).
5. Методы параллельных сечений для конечно-элементных задач (IWD).
6. Методы вложенных сечений (ND).
LR – алгоритм Розена
CM - алгоритм Катхилла-Макки.
RCM - обратный алгоритм Катхилла-Макки.
RQT - алгоритм древовидного разбиения.
IWD - алгоритм параллельных сечений.
QMD - алгоритм минимальной степени.
ND - алгоритм вложенных сечений.
Нельзя заранее сказать - какой метод лучше, т.к. типы разреженности весьма разнообразны.
Главными критериями являются: