Министерство образования Российской Федерации ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ ПММ Кафедра вычислительн...
85 downloads
166 Views
1MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ ПММ Кафедра вычислительной математики
МЕТОДЫ РЕШЕНИЯ СИСТЕМ С РАЗРЕЖЕННЫМИ МАТРИЦАМИ ТЕОРИЯ ГРАФОВ
Методические указания к спецкурсу для студентов 3-го курса дневного и вечернего отделений ПММ
СОСТАВИТЕЛИ:
Глушакова Т.Н. Блатов И.А.
Воронеж – 2000
2
СОДЕРЖАНИЕ §1. §2. §3. §4. §5. §6. §7.
Основные понятия…………………………………………………...3 Симметричная перестановка………………………………………..6 Разбиение на уровни смежности…...…………………………….....6 Алгоритм Катхилл – Макки уменьшения ширины ленты………...7 Алгоритм уменьшения профиля разреженной матрицы…….……9 Алгоритм отыскания псевдопериферийной вершины графа……10 Алгоритм отыскания вершины с большим значением эксцентриситета……………………………………………………………..11 §8. Некоторые понятия из теории графов……………………..……...12 §9. Алгоритм минимальной степени………………………..………...14 §10. Древовидное разбиение симметричной матрицы (метод фактор-деревьев)……………………………………………………… 17 §11. Метод вложенных сечений………………..………………………21 §12. Метод параллельных сечений.…………….……………………...25 Список задач.…...…………………….……………………………31 Лабораторный практикум.………………………………………. .35 Список сокращений………………………….…………………….35 Литература…………………………………….……………………36
3
Часть II.. Теория графов (Способы уменьшения заполнения в методах Гаусса и Холецкого. Прогнозирование заполнения для симметричных положительно определённых матриц) §1.. Основные понятия Все рассматриваемые ниже алгоритмы относятся к символическому этапу обработки симметричных положительно определённых матриц. Основным инструментом при разработке таких алгоритмов является теория графов. Между разреженными матрицами и графами существует естественное взаимнооднозначное соответствие. Граф G задаётся совокупностью вершин V и совокупностью рёбер E: G(V,E). Каждое ребро r ∈ E определяется парой вершин u, v из V: r = (u,v), где u,v ∈V. Опр. Если мы не различаем рёбра (u,v) и (v,u), т.е. считаем, что (u,v) = (v,u), то граф называется неориентированным, а если различаем, то ориентированным (орграф). Опр. Граф называется помеченным (пронумерованным), если каждой его вершине присвоен порядковый номер. Между графами и матрицами существует взаимно однозначное соответствие. Пусть А = {aij} – симметричная матрица (n×n). Каждой i-той строке матрицы (i=1,..,n) поставим в соответствие вершину vi и каждому ненулевому элементу aij поставим в соответствие ребро (vi,vj). Таким образом, получим граф G(V,E). Так как матрица симметрична, т.е. aij = aji, то граф является неориентированным. Пара (vi,vj) будет являться ребром в том и только том случае, когда aij ≠ 0. Если матрица А симметрична и положительно определена, то все её диагональные элементы aii ≠ 0, поэтому диагональному элементу aii ≠ 0 соответствует в этом случае петля (vi,vi) и предположение о том, что aii ≠ 0 для ∀i, отвечает тому, что граф содержит все петли. Поэтому обычно нет необходимости явно учитывать наличие петель в графе для этого случая и, таким образом, по любому неориентированному помеченному графу можно однозначно построить портрет симметричной положительно определённой матрицы (СПОМ). В дальнейшем будут рассматриваться только такие матрицы. Опр. Две вершины vi и vj графа G(V,E) называются смежными, если они соединены ребром. Говорят, что ребро (vi,vj) инцидентно вершинам vi, vj. Опр. Степенью вершины vi называется число инцидентных ей ребер.
4
Опр. Если W-подмножество вершин графа G, то его смежным множеством Adj(W) называют множество всех вершин, не принадлежащих W и смежных с какой-либо вершиной из W. Adj(W) ∩ W=∅. Опр. Путем называется последовательность вершин u1, u2,..., um+1 такая, что каждые две вершины ui, ui+1 являются смежными. Число m (число ребер, соединяющих вершины u1, um+1) называется длиной пути. Опр. Говорят, что вершины u, v соединены путем, если существует путь, для которого вершины u, v являются концевыми. Опр. Расстоянием d(u,v) между вершинами u, v называется длина кратчайшего пути, соединяющего эти вершины. Опр. Наибольшее расстояние между любыми двумя вершинами графа называется диаметром. Опр. Наибольшее расстояние от вершины u до любой другой вершины графа называется эксцентриситетом вершины u: e(u). Таким образом, D ia m G = ma x{e (u i )} (u i ∈ V) i
Опр. Если эксцентриситет вершины совпадает с диаметром графа, то такая вершина называется периферийной. Опр. Вершина u называется псевдопериферийной (ППВ), если для любой вершины v∈V такой, что d(u,v)=e(u), будет выполнено e(v)=e(u). Замечание. ППВ легче находить, чем периферийные, так как эффективных алгоритмов отыскания периферийных вершин нет. Опр. Замкнутый путь называется циклом. Опр. Граф называется связным, если для любых двух вершин этого графа существует соединяющий их путь. Опр. Связный граф, не имеющий циклов, называется деревом. Опр. Граф G(V′,E′) называется подграфом графа G(V,E), если V′⊆V, E′⊂E. Опр. Подграф G(V′,E′) называется частичным графом, если V′ состоит из некоторых вершин графа G, а E′ включает в себя все ребра графа G, соединяющие эти вершины: V′⊂ V, E′={(u,v) ∈ E: u∈ V′, v∈ V′}. Если граф не является связным (т. е. несвязный граф), то у него есть две (или более) компоненты связности, каждая из которых является связным частичным графом. Опр. Разделителем называется множество вершин, удаление которых вместе с инцидентными им ребрами приводит к появлению несвязного графа (или к увеличению числа связных компонент, если граф уже был несвязным). Опр. Если разделитель состоит из одной вершины, то он называется разрезающей вершиной. Если ее удалить, то граф распадется на несколько связных компонент. Опр. Кликой называется такой подграф, у которого любые две вершины смежные.
5
Задача 31. По портрету СПОМ А построить помеченный неориентированный граф G. x x x x x x А= x x x x x x x x
1
2 6
5 3
4
Задача 32. По заданному графу G восстановить портрет матрицы A. Замечание. Символ * означает, что вершина i нами уже пройдена (т. е. все инцидентные ей ребра мы прошли). *
*
2 *
3
5 1
4 6
*
*
x x x x x x x x x А= x x x x x x x x x x x
Задача 33. Для графа G из задачи 32: 1) перечислить все смежные вершины и указать их степень (например, вершины 3 и 5: deg 3=1, deg 5=4); 2) найти смежное множество для вершин 1, 6 (W={1, 6}, Adj(W)={2, 4, 5}); 3) указать несколько путей, соединяющих вершины 1,4 и их длину (например, путь (1,6,4) длины 2 или путь (1,2,5,4) длины 3); 4) найти расстояние между вершинами 1,4 и 1,2 (d(1,4)=2, d(1,2)=1); 5) найти эксцентриситет вершины 2 (е(2)=2); 6) найти диаметр графа (diam G = 3, т. к. е(6)=е(3)=3); 7) указать периферийные вершины ({3,6}); 8) указать ППВ (например, {3,6}); 9) указать циклы (например, (1,6,4,5,1), (2,5,4,6,1,2)); 10) найти клику (например, (2,1,5,2)); 11) указать один частичный граф и один подграф (например, G*(V*,E*), где V*={1,5,4}, Е*={(1,5)}- подграф, G**(V**,E**), где V**={1,5,4}, E**={(1,5), (5,4)}- частичный граф); 12) указать разделитель (например, вершина 5 разбивает граф G на две связные компоненты с вершинами {2,1,6,4} и {3}).
6
§2. Симметричная перестановка (СП) Одна из важных задач гауссова исключения – задача об уменьшении ширины ленты СПОМ. Так как при гауссовом исключении ведущий элемент может стоять на главной диагонали, то ширина ленты не увеличится, а попытаться уменьшить её можно, что позволит сэкономить память и время. Основным инструментом уменьшения ширины ленты будет СП. Опр. Перестановка называется симметричной, если вместе с перестановкой i-той и j-той строки переставляются также i-тый и j-тый столбцы. При СП сохраняются симметрия и положительная определённость матрицы, элементы главной диагонали остаются там же. Осуществляя для матрицы А СП с помощью матрицы Р (РTP=I, где I – единичная матрица), мы от системы Аx = f переходим к системе РАРТ Рx = Рf. Если В = РАРТ , где Р – матрица перестановки, а GA и GB – графы, связанные с матрицами А и В соответственно, то GA и GB идентичны с точностью до нумерации вершин, т. е. при СП граф симметричной матрицы не меняется, а меняется лишь нумерация его вершин. Матрица Pij, осуществляющая перестановку i-той и j-той строк при умножении на неё слева, и i-го и j-го столбца при умножении на неё справа, имеет следующий вид: 1 0 . i 0 Pij = . j 0 . 0
0 . . . 0 . . . 0 . . . 0 1 . . . 0 . . . 0 . . . 0 . . . . . . . . . . . . . 0 . . . 0 . . . 1 . . . 0 . . . . . . . . . . . . . 0 . . . 1 . . . 0 . . . 0 . . . . . . . . . . . . . 0 . . . 0 . . . 0 . . . 1
§3. Разбиение на уровни смежности (УС) Опр. Говорят, что граф G(V,E) разбит на УС, если для множества вершин V справедливо следующее представление:
m
V = Υ Li i =0
причём
(где
Li
– УС),
Adj (L0) ⊆ L1, Adj (Lm) ⊆ Lm-1, Adj (Li) ⊆ Li-1 ∪ Li+1 (i=1,..,m–1).
Опр. Число m называется длиной структуры УС (СУС) L0, L1,..., Lm , а ширина СУС определяется как максимальное количество вершин, образующих
7
каждый уровень. В СУС каждый уровень Li является разделителем графа. Разбиение на УС называется корневым, если для Опр. i 1 − ∀i : Li = Adj Υ L j i= (1,..,m), а множество L0 ⊂ V - корнем разбиения. j =0 Опр. Если L0 состоит из одной вершины, то эта вершина называется корневой. В дальнейшем будем считать разбиение на УС корневым. Алгоритм построения СУС 1) Выбирается некоторая вершина v ∈ V, которая берётся в качестве корневой. Полагаем i=0, L0={v}. 2) Присваиваем этой вершине первый номер. 3) Перебираем все вершины множества Li и для каждой его вершины определяем ещё не помеченную, смежную ей вершину. Эти смежные вершины образуют уровень Li+1. Они помечаются (нумеруются по порядку) и помещаются в Li+1. 4) Если множество непомеченных вершин пусто, то алгоритм закончен, иначе i=i+1 и идём на 3). Задача 34. Построить СУС для графа G. Найти её длину и ширину. L1
1
L0
1
L3
3
10 L2
L1 L2
6 9
2
4
5
10
11 2 L5
7
8 L4
9
5
L3 7
6
4 L4
8
3 L5
11
L0: 1 L1: 6, 10 L2: 9, 11 L3: 7, 8 L4: 4, 5 L5: 2, 3 Длина структуры уровней m1 равна 5, ширина − 2.
§ 4. Алгоритм Катхилл-Макки уменьшения ширины ленты 1) Корневая вершина v∈V в графе G(V,E) выбирается из множества вершин, имеющих минимальную степень, и ей присваивается первый номер (т. е. ставим соответствующую строчку на первое место): v→v1, L0={v1}. 2) Строится СУС с корнем v1. Для каждого номера i после построения УС Li перебираются все вершины, входящие в Li (при этом все вершины множеств L0, L1,…, Li-1 уже перенумерованы), и им присваиваются очередные порядковые номера в порядке возрастания их степеней.
8
3) Если СУС построена, то алгоритм закончен, и мы получили новую нумерацию вершин (новый номер вершины – это номер строки, а номера смежных с ней вершин – это номера столбцов). Задача 35. Реализовать алгоритм Катхилл-Макки для графа G. 6
L3
L4
1
3
11
9
10
L2 6
8
8
v1=2; L0: 2; L1: 4; L2: 6, 9, 7; L3: 1, 3, 11; L4: 5, 8, 10.
10
L3 3 L2 7
1
L1
5
7
9
L0 2
L4
L3 11
4
L2
L4
5
4 2
Задача 36. Для матрицы А уменьшить ширину ленты, пользуясь алгоритмом Катхилл-Макки (при перенумерации вершин мы задаём перестановку строк и столбцов), и нарисовать переупорядоченную матрицу. 1 1 * 2 3 4 5 A = 6 * 7 8 9 10 * 11
L0 1
L1
2 3 4 5 6 * * * * * * * * * * * * * * * *
L1 1
7 8 9 10 * * * * * * * * * * * * * *
10
L2 11
3
11 * * * * * *
L3 8
5
L4 5 11
7
L3
L2
6
9
2
4
3
L3 2 6
L3 L4 4
10
7
8
9
9
1 2 3 4 5 6 7 8 9 10 11 1 6 10 9 11 2 8 7 3 4 5 1 * 6 * 10 * 9 11 2 8 7 3 4 5
* *
* * *
* * *
* *
* * *
* * *
* *
*
*
*
*
* * *
* * * *
*
* *
* *
*
новые номера строк старые номера строк
*
§5. Алгоритм уменьшения профиля разреженной матрицы Это так называемый обратный алгоритм Катхилл-Макки.Он состоит в следующем. 1) Реализуем обычный алгоритм Катхилл-Макки. 2) Вершины полученного графа нумеруются в обратном порядке, то есть i-ой вершине присваивается новый номер k = n + 1 – i (i = 1,..,n). Теорема. Обратный алгоритм Катхилл-Макки не увеличивает ширину ленты, но может уменьшить ее профиль. Задача 37. Реализовать алгоритм уменьшения профиля разреженной матрицы для графа G. L1 L2 L4 L5 11 2
1
1
10
3
L3 11
6
2
L0
L2
4
9
L3
6
8
7
5
3 5
4
L5
7
10
L4
В результате при v1 = 6 получили следующий граф: 10
11
9
8
6 7
5
1 3
2
L4
4
9 8
10
§6. Алгоритм отыскания ППВ графа Алгоритм Катхилл-Макки будет работать эффективнее, если в качестве стартовой брать не вершину с минимальной степенью, а периферийную вершину. Но известные алгоритмы отыскания периферийных вершин весьма трудоемки, а для отыскания ППВ существуют более эффективные алгоритмы, которые в большинстве случаев позволяют находить и периферийные вершины. Алгоритм 1) Выбираем в исходном графе G некоторую вершину v минимальной степени из V. 2) Строим СУС с корнем в выбранной вершине v: L0, L1, …,Lk. 3) Выделяем множество Lk (последний уровень) и для каждой вершины из Lk = {v1(k), v2(k), …, vp(k)} строим свою корневую СУС с корнем в этой вершине: v1(k): L01,k, L11,k, …LS 1 1,k v2(k): L02,k, L12,k, …LS 2 2,k …………………………………….
vp(k): L0p,k, L1p,k, …LS p p,k 4) Из всех построенных на 3) структур выбираем структуру максимальной длины, и если длина Si этой структуры больше k, то полагаем k = Si и v = vi (то есть корень этой структуры рассматриваем в качестве кандидата на ППВ). P
5) Полагаем Lk = Υ LiS, ik (то есть объединяем последние уровни всех структур, i =1
построенных на шаге 3). 6) Переходим к 3). Если в течение двух таких переходов длина максимальной СУС не увеличилась, то вершина является ППВ, и алгоритм заканчивает свою работу. Задача 38. Реализовать алгоритм отыскания ППВ для графа G. L0
L1 1
1-2)
2
L1
6
5
L2 3
4
L2
7 8
m2=3
L4
L2
L2
L3
L3 1
3-4)
2
L2
6
L1
5
L4 3
4
v= 2: L0={2}, L1={1,5}, L2={3,4,6,8}, L3={7}; v= 7: L0={7}, L1={6,8}, L2={5}, L3={2,4}, L4={1,3};
L3
7 8
m7=4
L1
L0
11
L0
L1 1
5)
2
L2
6
5
L1 3
4
L2
L1
L3
1 7
8
m1=4
L2
L4
2
L3
5
L0 3
L3
6
L2
4
L1
7 8
m3=4
L4
L3
v= 1: L0={1}, L1={2,3}, L2={4,5}, L3={6,8}, L4={7}; v= 3: L0={3}, L1={1,4}, L2={2,5}, L3={6,8}, L4={7}. Таким образом, вершины {1,3,7} – ППВ. Более того, они являются периферийными, т.к. diam G = 4. §7. Алгоритм отыскания вершины с большим значением эксцентриситета Этот алгоритм хуже предыдущего, но лучше любого другого. 1) Выбираем некоторую вершину минимальной степени. 2) Строим СУС с корнем в этой вершине: L0, L1,…, Lk. 3) Определяем компоненты связности последнего уровня Lk построенной структуры: Lk, Lk1, Lk2, …, Lkp. Если такая компонента одна и состоит из одной вершины, то алгоритм закончен, если нет, то идем на 4). 4) Для каждой компоненты связности находим вершину минимальной степени и строим корневую структуру с корнем в этой вершине. 5) Из всех построенных структур выбираем структуру максимальной длины. Корень этой структуры и будет искомой вершиной. Задача 39. Реализовать алгоритм отыскания вершины с большим значением эксцентриситета для заданного графа G. L1
1
L0
10
L1
11
L2
8
L3
5
L2 3
L2
6
L2
9
L3
2
L3
4
L2
7
L4
5
v = 10, m10 = 3, L3 = {2,4,5}. L3
1
L3
10
L2
11
L3
8
L3 3
L2
6
L1
9
L0
v = 2 или v = 5: m2 = m5 = 4.
2
L1
4
L2
7
12
Таким образом, v = 2 или v = 5 искомые вершины (даже периферийные). §8. Некоторые понятия из теории графов Рассмотрим столбцовую схему метода Гаусса. На k-ом шаге получили k-ую промежуточную матрицу Ak. Опр. Граф Gk, соответствующий матрице Ak, называется графом исключения матрицы Ak,G1≡G (или k-ым графом Ak исключения матрицы Ak ). 0 Опр. Графом заполнения GF матрицы А называется граф, который содержит все вершины и ребра матрицы А, а также все ребра всех графов исключения. Заметим, что после гауссова исключения получается матрица, которая не является симметричной, поэтому графу заполнения GFотвечает матрица U+UT, а не матрица U. Опр. Если для данного графа G и подмножества его вершин Q выбраны две не совпадающие вершины u, v, не принадлежащие Q, то будем говорить, что вершина v достижима из вершины u через Q в случае, когда либо вершины u,v – смежные, либо u,v соединены путем, все вершины которого, кроме начальной и конечной, принадлежат Q. Опр. Для заданного множества Q и вершины u, не принадлежащей Q, достижимое множество Reach(u,Q) из u через Q определяется как множество всех вершин, достижимых из u через Q. Таким образом, Re ach( u, Q )Ι Q = ∅ . Заметим, что если Q пусто или если вершина u не принадлежит Adj(Q), то в этом случае Re ach( u, Q ) = Adj ( u) . Задача 40. Для графа G найти Reach(1,Q), Reach(9,Q), Reach(7,Q), где Q={2,8}. 1
2
6
3
9
4
8
7
5
Reach (1,Q)={3}. Reach (9,Q)={5,7}. Reach (7,Q)={4,5,9}.
13
8.1. Алгоритм построения графа исключения Gk+1 (граф Gk известен) 1) Из графа Gk удаляется k-ая вершина вместе со всеми инцидентными ей ребрами. 2) Все вершины графа Gk, которые были смежны с удаленной вершиной, соединяются ребрами. В результате получается граф Gk+1, соответствующий Ak+1. Задача 41. Построить граф исключения Gk для графа G. 11
22 6
G1≡G
G3
6
33
44
77
55
99
88
3
4
7
5
9
8
6
5
9 7
7
G
9
6
3
4
7
5
9
8
6
G4
5
7
G5
2
G2
4
7
9
8 7
G6
6
8
9
G8
9
8
G9
8
9
8
8.2. Алгоритм определения множества достижимости Reach(v,Q) для графа G 1) Присваиваем вершине v первый номер и полагаем L1=v. 2) Для k=2 определяем множество смежности Adj(L1) и помечаем все вершины этого множества, а для Adj(L1) делаем следующее: если вершина u из Adj(L1) принадлежит Q, то относим ее к множеству L2, а если не принадлежит, то относим ее к множеству Reach(v,Q) и полагаем k=3. 3) На k-ом шаге определяем множество Adj(Lk-1) из непомеченных вершин, помечаем их и для каждого u∈Adj(Lk-1) выполняем следующее: если u из Adj(Lk-1) принадлежит Q, то u∈Lk, если нет - u∈Reach(v,Q). Если все u∉Q, то Lk=∅ и алгоритм закончен. Иначе идем на 4). 4) Полагаем k = k + 1 и, если остались непомеченные вершины, принадлежащие Adj(Lk)∩Q, идём на 3). Задача 42. Реализовать алгоритм определения множества достижимости для графа G и Q={2, 6, 8}.
14
G
1
2
2
1
3 4
3
5
6
4
6
8
9
5
7
k = 1: v = 5, L1 = {5}. k = 2: Adj(L1) = Adj(5) = {3, 6}, L2 = {6}, Reach(5, Q) = {3}. k = 3: Adj(L2) = Adj(6) = {7, 8}, L3 = {8}, Reach(5, Q) = {3, 7}. k = 4: Adj(L3) = Adj(8) = {9}, Reach(5, Q) = {3, 7, 9}.
8.3. Теорема Джорджа – Лю Теорема. Пусть i < j и Qi – множество вершин с номерами меньше, чем i: Qi = {v1, v2,…, vi-1}. Ребро (vi, vj) принадлежит графу заполнения GF (т. е. элемент uij матрицы заполнения отличен от нуля) тогда и только тогда, когда vj ∈ Reach (vi,Qi) для графа GA исходной матрицы. Задача 43. Пользуясь теоремой Джорджа – Лю, определить, принадлежит ли ребро (8, 9) графу заполнения GF. 1
10
G
6
8
9 2
5
11 4
7
I = 8, j = 9. Q8 = {1, 2, 3, 4, 5, 6,7}; Reach(8, Q8) = {9, 11}; {9} ∈ Reach(8, Q8) ⇒ (8, 9) является ребром GF.
3
§ 9. Алгоритм минимальной степени 9.1. Алгоритм минимальной степени Это самый простой и в общем случае самый универсальный и эффективный алгоритм заполнения. Он состоит в следующем. Если нужно минимизировать число ненулевых элементов матрицы U (или T U ), вычисляемых на k-м шаге, то достаточно просмотреть активную подматрицу (образуемую строками матрицы A(k) с k-той по n-ю), выбрать строку (или столбец) с наименьшим числом ненулевых элементов, скажем, j-ю строку (или столбец) и переставить j-ю строку с k-той, j-тый столбец с k-тым в матрице A(k) перед тем, как приступить к выполнению k-го шага исключения (т. е. строить следующий граф исключения Gk+1). Так как мы оперируем не с матрицей, а с графом, то поиск строки с наименьшим числом ненулевых элементов – это нахождение вершины
15
минимальной степени в графе исключения Gk, а перестановка строк и столбцов – это перенумерация вершин (т. е. k-я вершина становится j-той, а j-я – kтой). Здесь мы не заботимся о том, что можем не получить устойчивость, т. к. считается, что все активные матрицы хорошо обусловлены. Недостатки: 1) полученное заполнение может оказаться хуже оптимального, 2) заранее мы не можем оценить требуемый объём памяти. Задача 44. Для графа G реализовать алгоритм минимальной степени и нарисовать портрет полученной переупорядоченной матрицы. 1
№ вершин 1→1 2→2 3→6→8→9 4→5→10 5→4 6→3 7→9→8 8→6 9→7 10→5
1
10
3
8
G1≡G
6 9
5
2
4
7
10
3
8
G2
6
5
2
9 6
10
3
6
8 3
G
3
9
2
4
7
10
6
8
G4
5
4
4
9
7
5
4
7
5 8
10
6
6
8
8
5 5
G
G6
10
9
5
9
7
10
7
9
8
8
9
G9
G
G 10
9 8
7
7
10
7
9
10
9
8
9
10
6
16
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 1 * 2 6 * 5 10 * 8 9 7 3 4
2 6 5 10 8 9 7 3 4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Новые номера строк Старые номера строк 1
5
1
9
10
6
3
8
3
4
6
5 9
2 7
4 2
7 10
8
Граф G с перенумерованными вершинами
9.2. Алгоритм оценки объёма заполнения в методе минимальной степени Этот алгоритм даёт оценку объёма оперативной памяти. Заметим, что объём заполнения в матрице U, которая получится после гауссова исключения, равен полусумме степеней всех вершин графа заполнения GF. Таким образом, всё сводится к определению суммы всех степеней вершин GF, причём сам граф GF определять необязательно − достаточно воспользоваться теоремой Джорджа-Лю. Алгоритм 1) Полагаем k=1. В качестве 1-ой вершины возьмём вершину минимальной степени (лучше ППВ). Полагаем deg U= deg v1. 2) Полагаем k=2. Выбираем в графе исключения GK вершину минимальной степени и нумеруем её как k-ую. 3) Перебираем вершины из множества Reach(vk,Qk) (Qk = {V1,..., Vk-1}) и для каждой вершины u∈Reach(vk,Qk) а) определяем множество Reach(u,Qk+1), где ... означает б) полагаем deg U = deg U + Reach(u,Qk+1), количество элементов соответствующего множества. 4) Полагаем k=k+1 и переходим к 3). Таким образом, сумма степеней всех вершин deg U накапливается в процессе реализации алгоритма, причём все множества достижимости рассматриваются только для исходной матрицы A. Заметим, что объём заполнения равен числу рёбер графа заполнения GF.
17
Задача 45. Для графа G реализовать алгоритм оценки объёма заполнения в методе минимальной степени. 1 6
3
8 5 2
k=1: v1=1, deg U= deg1 =1. k=2: 3) Reach(2,Q 2)={3,5,7}; Reach(3,Q3)= {5,7}, deg U= 3; Reach(5,Q3)={3,7,9},deg U= 6; Reach(7,Q3)={3,5,4},deg U= 9.
9 4 7
k=3: Reach (3,Q3) = {5,7}; Reach (5,Q4) = {7,9}, deg U=11 ; Reach (7,Q4) = {4,5}, deg U=13. k=4: Reach(4,Q4) = {7,9}; Reach (7,Q5) = {5,9}, deg U=15; Reach (9,Q5) = {5,6,7,8}, deg U=19. k=5: Reach (5,Q5) = {7,9}; Reach (7,Q6) = {9}, deg U=20 ; Reach (9,Q6) = {6,7,8}, deg U=23. k=6: Reach (6,Q6) = {9}; Reach (9,Q7) = {7,8}, deg U=25. k=7: Reach (7,Q7) = {9}; Reach (9,Q8) ={8}, deg U=26 . k=8: Reach(8,Q8) ={9}; Reach (9,Q9) =∅, deg U=26. Таким образом, V=26/2=13. §10. Древовидное разбиение симметричной матрицы (метод фактор-деревьев) Если граф симметричной матрицы является деревом, то заполнения в процессе гауссова исключения не происходит. 10.1. Определение фактор-дерева Если вершины графа G объединить некоторым образом в группы Г1, Г2,…,ГS и ввести отношения эквивалентности, полагая vi ~ vj тогда и только тогда, когда vi, vj ∈ГК (одной группе), то множество вершин графа разбивается на классы эквивалентности. Опр. Фактор-графом Φ графа G называется граф, вершинами которого являются вершины Г1, Г2,…, ГS, причем ребро (ГК , ГР) принадлежит фактор-
18
графу Ф в том и только том случае, когда какие-либо две вершины из ГК , ГР оказываются смежными. Опр. Если фактор-граф представляет собой дерево, то его называют фактордеревом, а соответствующее разбиение – древовидным разбиением. В этом случае заполнения на блочном уровне не будет. Переход к фактор-дереву иногда называют построением древовидной структуры графа. На матричном языке построение фактор-графа означает, что матрица А разбивается на блоки. Например, пусть ГК = {vк1,vк2,…,vкg}, тогда ГК отвечает блок на главной диагонали, получающейся в пересечении строк и столбцов с номерами к1, к2,…,кg. Таким образом, происходит разбиение на блоки: каждой группе ГК отвечает блок, стоящий на главной диагонали, порядок которого равен числу вершин. 10.2. Простейшая древовидная структура Простейшая древовидная структура – СУС L0, L1,…, Lm. Действительно, отождествим все вершины исходного графа G, относящиеся к одному уровню Li. Легко убедиться, что полученный фактор-граф будет деревом, которому соответствует блочно – 3-диагональное разбиение матрицы: каждой вершине Li фактор-дерева отвечает блок (mi x mi) на главной диагонали (где mi - количество вершин уровня Li), а вершина Li смежна с Li-1 и Li+1 (i=1,…,m-1). Поэтому фактор-графу будут принадлежать ребра (Li-1, Li), (Li, Li+1), инцидентные с вершиной Li, а в матрице, соответствующей фактордереву, будут отличны от нуля элементы li,i-1, li,i+1 (а также li,i).
Осуществив такое разбиение, можно найти объем заполнения N, который оценивается суммированием всех порядков блоков полученных матриц: m
N≤∑ i =0
mi2
m
+ ∑ mi −1 mi i =1
m
( ∑ mi = n ) .
(1)
i =0
Из (1) видно, что чем мельче древовидное разбиение (чем больше вершин в фактор-графе), тем меньше объем возникающего заполнения, поэтому после построения грубого древовидного разбиения целесообразно измельчить его.
19
10.3. Алгоритм измельченного фактор-дерева Возможность измельчения древовидного разбиения связана с тем, что каждый из УС Li может оказаться несвязным множеством, т. е. распадаться на несколько несвязных компонент связности: L i = L i ∪ L i ∪ ... ∪ L i 1
2
k
(если же Li связно, то измельчения не сделаешь). В этом случае древовидное разбиение измельчают, отождествляя не все вершины, а лишь вершины каждой компоненты связности, т.е. будем иметь вершины Li1 , Li2 ,..., Lik . Таким образом, увеличиваем число вершин фактор-графа и уменьшаем блоки. В матричной интерпретации построение фактор-графа означает следующее: каждый элемент на главной диагонали отвечает своему УС, каждый из которых (если есть несколько компонент связности) разбивается на блоки, внутри которых можем выделить блоки, состоящие из нулей. Таким образом, необходимо найти компоненты связности Li1 , Li2 ,..., Lik . Алгоритм 1) Полагаем i=0. В качестве корневой желательно взять периферийную вершину. При построении СУС все рёбра графа разделим на древесные и поперечные. К древесным относятся рёбра, соединяющие вершины различных УС, к поперечным - одного. 2) Полагаем i=1. 3) Возьмём некоторую вершину из Li и построим корневую структуру с корнем в этой вершине, используя при построении только поперечные рёбра. При этом мы останемся на прежнем уровне, и если у Li есть несколько компонент связности, то в какой-то момент мы исчерпаем все компоненты связности Li и, следовательно, сможем выделить компоненту связности Li . 1
Затем возьмём другую вершину, не принадлежащую Li , 1
–
получим
Li2 и т.д. 4) Если i<m, то i=i+1 и идём на 3). Иначе алгоритм закончен. 10.4. Примеры Задача 46. Построить для графа G его фактор-дерево, используя СУС, и указать монотонное упорядочение (обратную перенумерацию) фактор-дерева. Показать частичный граф, отвечающий уровням L4, L5, L6.
20
L4 12 L 4 L5 13 4
15 L5
L3 17 L3 18 L4 14
16 L4
L2 L1 L0
2
L2
10
L3
L1 9 8
L4
19 L1
L5
3
11
10
7
5
20
6
8
L0:
Древесные ребра
L1:
9
19
L5
L2:
2
10
L6
L3: 17
18
11
L4: 12
4
14
L5:
13
15
L4
3
16
1
7
5
20
Фактор-дерево 8
9 8
9, 19, 3
7
2, 10
L6:
6
| 6 17, 18, 11
5 12, 4 3 13, 15
14, 16, 1, 7 4 5, 20
2
1 6 Задача 47. Найти компоненты связности для графа G из задачи 46. i=0: v=8 — одна компонента связности ; i=1: v=19, L0={19}, L1={9,3} – одна компонента связности; i=2: v=2, L0={10}, L1={2} – одна компонента связности; i=3: v=17, L0={17}, L1={18}, L32={11} – одна компонента связности;
i=4: v=4, L0={4}, L1={12} v=16, L0={16}, L1={14,1}, L2={7}
⇒ L41={4,12}, L42={14,16,17} – две компоненты связности
Задача 48. Нарисовать портрет переупорядоченной матрицы с блочной структурой, отвечающей фактор-дереву из задачи 46.
21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
6 6 * 20 * 5 * 15 13 7 1 16 14 4 12 11 18 17 10 2 3 19 9 8
20 * * *
5 15 13 7 1 16 14 4 12 11 18 17 10 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 3 19 9 8
* * *
* *
*
*
* * *
* * * * * * * * * *
* * * *
§ 11. Метод вложенных сечений 11.1. Основные идеи Это один из наиболее эффективных и широко используемых методов уменьшения объёма заполнения симметричных матриц. Его идея вытекает из теоремы Джорджа-Лю. Пусть есть некоторый разделитель S={vk}, где vk∈V={v1,v2,…,vk-1, vk, vk+1,…, vn}. Считаем, что вершины vi (i=1,...,n) перенумерованы таким образом, что после удаления вершины vk мы получим две связные компоненты R1={v1,…,vk-1} и R2={vk+1,…, vn}. Если вершину vk поместим в конец (т.е. k→n) и перенумеруем
22
(k+1→k, k+2→k+1,…,n→n-1), то любая вершина из R2 не будет достижима из вершин R1: vj∉Reach(vi,Qi) (j=k,…,n; i≤k–1), что в соответствии с теоремой Джорджа-Лю означает, что все такие элементы uij в матрице заполнения U равны нулю (рис.1). R 11 R1
R21 S1 R21 R22 S2 S
R2 S
0
R11
0 0
R21 S1 R21 R22 S2 S
0
Рис. 2
Рис. 1
Рис. 3
Опр. Выделение разделителя S называется сечением (так как он рассекает граф на большее количество компонент). С каждой из выделенных компонент R1 и R2 повторяем предыдущие рассуждения: находим разделители S1 ={vq} в R1 и S2 ={vp} в R2, обозначаем через R11={v1,...,vq-1}, R12={vq+1,...,vk-1}, R21={vk,...,vp-1}, R22={vp+1,...vn-1} и перенумеровываем вершины в R12 и R22 указанным выше способом: R1 R1 1
R2 R1 2
v1, …, vq-1, vq, vq+1, …, vk-1, ↓ ↓ ↓ vk-1, vq, …, vk-2
R2 1
R2 2
vk, …, vp-1, vp, vp+1, …, vn-1 ↓ ↓ ↓ vn-1 , vp, …, vn-2
Соответствующая матрица изображена на рис.2. В процессе выполнения процедуры измельчения разбиения возникают множества R, в которых нельзя найти разделитель. В случае появления такого R в качестве соответствующего множества S берется само множество R и нумеруются его вершины. Выполнение процедуры прекращается, если все множества типа R исчерпаны. На практике матрицу упорядочивают так, как показано на рис. 3. Вершины каждого множества типа S нумеруются в обратном порядке (то есть в направлении от n к 1), как только такое множество будет построено, в то время как множества типа R остаются непронумерованными. Таким образом, окончательная нумерация получается непосредственно после выполнения алгоритма. Заметим, что разделитель можно выбирать по-разному. Но для того, чтобы процедура вложенных сечений была наиболее эффективной, нужно придерживаться следующих правил:
23
1) по возможности следует выбирать минимальный из всех разделителей (идеально – разделитель, состоящий из одной вершины); 2) разделитель следует выбирать таким образом, чтобы возникающие компоненты связности имели примерно одинаковый размер (для того чтобы нулевые блоки были больше). Опр. Разделитель называется минимальным, если никакое его собственное подмножество не является разделителем. 11.2. Алгоритм метода вложенных сечений Пусть есть граф G(V,E). Пусть С – множество вершин всех разделителей, которые будут возникать в процессе реализации алгоритма, который закончится, когда в С попадут все вершины. 1) C = ∅, n = V (число вершин графа G). 2) Если n = 0 - алгоритм закончен, иначе рассматривается граф G(V\C) (из исходного графа G удаляются все вершины из С вместе с инцидентными им ребрами). Находим связную компоненту G(R) этого графа с множеством вершин R и ищем в G(R) ППВ u. 3) Строим в G(R) СУС L0,L1,..., Lm с корнем u. Если m<2 , то полагаем S = R и переходим к 5). Иначе (m≥2) в СУС выбираем средний уровень Lj, где j = [(m+1)/2]. 4) В множестве Lj выбираем подмножество S, которое является минимальным разделителем графа G(R) среди всех разделителей, которые содержатся в множестве Lj. 5) Множество S принимаем в качестве нового члена разбиения. Полагаем С = С∪S и нумеруем вершины разделителя S числами от n – S+1 до n. 6) Полагаем n = n – S и идем на 2), пока не пройдем все вершины. Трудность этого алгоритма связана с нахождением минимального разделителя. Поэтому вместо минимального часто ищут ,,не слишком большой’’. Замечание. Для шага 4) в качестве разделителя S можем взять совокупность всех вершин уровня Lj , которые смежны с вершинами уровня Lj+1 . Для нахождения объема заполнения нужно посчитать площадь заштрихованных фигур. Задача 49. Для графа G из задачи 46 реализовать алгоритм вложенных сечений и нарисовать переупорядоченную матрицу.
24
L4 12 L3
L4
L5 4
17
18
2
10
9
19
8
11
10 L4
L4
L5
7
5
20
6 L6
L5
L1 L0
16
L4
L1 L4
14 L3
L2 L2
15
L4
L3
1 шаг: u=8 -периферийная вершина, m=6 -длина структуры уровней ⇒ j=3; L3={11,17,18}⇒S={11}⇒ 11→20; C={11}, n=19.
L5
13
3
R21={19,8,3};
2 шаг: R1={12,4,17,18,2,10,9,19,8,3}, R2={13,15,14,16,1,7,5,20,6}. R1: u=12, m=5 ⇒ j=3; S1=L3={9,10} ⇒ 9→19,10→18. R2: u=13, m=6 ⇒ j=3; S2=L3={1}, 1→17. R11={12,4,17,18,2}, R12={13,15,14,16}, R22={7,5,20,6}.
…………. Дерево вложенных сечений: S0 11
S21 17,4 S3
S11 9,10
S12 1 19,8,3
S2
2
S2
S24
3
14
5,20
1
12
2,18 S32
13,15 S33
16 S34
7 S35
6
S36
Получим следующую переупорядоченную матрицу (т.к. матрица симметрична, то изображен только верхний треугольник с диагональными блоками):
25
6 7 16 15 13 18 2 12 20 5 14 3 8 19 4 17 1 10 9 11 * * 6 * * * * * 7 * * * * * 16 * * * 15 * * * 13 * * * * * * 18 * * * * * 2 * * * 12 * * 20 * * 5 * * 14 * * * * 3 * * * * 8 * * * * 19 * * 4 * * 17 * * 1 * * * 10 * * 9 * 11 §12. Метод параллельных сечений (МПС) Применение этого метода связано с тем, что основная сфера приложения теории разреженных матриц - это метод конечных разностей и метод конечных элементов. 12.1. Идея метода Проиллюстрируем идею метода на рис.1, где прямоугольниками представлены множества узлов 2-мерной конечно-элементной сетки.
26
R1
S1
R2
S2
R3
S3
R4
→
↑
→
↑
→
↑
→
Рис.1
S1+S2+S3
R1
R2
R3
R4
Рис.2 Выбирая k разделителей Si (i=1,..,k) небольшого размера (на рис.1 k=3), образованных линиями узлов сетки, мы получим разбиение сетки на (k+1) блок R1,R2,…,Rk+1 сравнимого размера. Если собрать все разделители в один блок, то возникает древовидное разбиение (рис.2). Пронумеруем узлы каждого множества типа R последовательно, слева направо вдоль горизонтальных линий, начиная с нижнего левого узла (см. рис.1, по стрелкам). После того, как пронумерованы все множества типа R, последовательно нумеруются разделители в порядке, указанном стрелками (см. рис.1). Полученная нумерация отвечает монотонному упорядочению дерева. Матрица, связанная с конечно-элементной сеткой, разбивается на блоки, как показано на рис.3, где заштрихованы области, которые могут содержать ненулевые элементы. При выполнении гауссова исключения заполнение будет возникать только внутри заштрихованных областей, а также внутри областей матрицы, помеченных точками. Кроме того, заштрихованные области заполнены ненулевыми элементами лишь частично. R1
R2
R3
R4
R1 R2 R3 R4 S1 S2 S3
S1 S2
S3
::: :::
::: :::
Рис. 3
27
Таким образом, суть МПС состоит в следующем. 1. В графе G, соответствующем матрице А, выбираем в качестве разделителей вершины, отвечающие узлам сетки, лежащим на одном горизонтальном или вертикальном уровне. 2. Обозначим выбранные разделители через S1, S2,…,Sk, тогда граф разбивается на (k+1) компоненту связности R1, R2,…,Rk+1. 3. Вершины графа, принадлежащие множеству разделителей, нумеруем от n до (n–s+1) (где n – число вершин графа, s – совокупное число вершин разделителей), а вершины, принадлежащие R1, R2,…,Rk+1 , – от 1 до (n – s). Осталось определить количество разделителей k. Для минимизации заполнения и объёма вычислительных работ в случае регулярной сетки m × n (m < n ) (т.е. прямоугольной структуры) n 2 целесообразно брать k = . m 3 При этом разделители S1,..., Sk следует брать так, чтобы получающиеся множества Ri (i = 1,...,k+1) содержали приблизительно одинаковое число элементов. Если в качестве разделителей выбраны линии сетки, члены разбиения содержат примерно равное количество узлов и используется неявная схема mn2 3km 2 V≈ + хранения, то общий объём памяти . 2 k Достоинства этого метода: 1) уменьшение заполнения; 2) возможность эффективного распараллеливания вычислений (т.к. ЭВМ последних моделей имеют несколько параллельно работающих процессоров). 12.2. Общий алгоритм МПС 12.2.1. Упрощенный алгоритм (1-ый вариант) 1) В графе G матрицы A ищется ППВ u. 2) Строим СУС L0, L1,..., Ln с корнем в вершине u. 3) Определяем m = [q / n], где q – порядок матрицы, n – длина построенной на 2) СУС. n 2 4) Определяем k = . 3 m 5) В качестве разделителей выбираем множества L1, L1+p,..., L1+kp, где p = [(n – 2) / k] (1 + kp ≈ n – 1).
28
6) Перенумеровываем вершины графа в соответствии со стратегией предыдущего пункта (роль параллельных сечений здесь играют УС). Задача 50. Реализовать МПС (1-й вариант) для графа G из задачи 46 и нарисовать переупорядоченную матрицу (верхний треугольник с диагональными блоками). 1) v = 8 - периферийная вершина; 2) СУС для v = 8 построена в задаче 46: n = 6; 3) m = [20 / 6] = 3; 4) k = [√2⋅6/√9]=[2√2]=2; 5) p = 4 / 2 = 2; L1, L3, L5 - разделители, т.е. S1 = L1 = {9, 19, 3}, S2 = L2 = {17, 18, 11}, S3 = L3 = {13, 15, 5, 20}; R1 = L0 = {8}, R2 = L2 = {2, 10}, R3 = L4 = {12, 4, 14, 16, 1, 7}, R4 = L6 ={6}. R1
R2
1 2 3 R1 R2
1
S3
S2
7 8 9 10 11 12 13 14 15 16 17 18 19 20
2
8 * 2 * * 10
4
12
5
4
6
14
7
16
8
1
9
7
R4 10 11
6
S1 12 13
* * * * * *
* * ** * * * * * * * * * * * * *
3 * 17
15
18
16
11
17
13
S3 18 19
15
20
20
5
* * * * * *
*
* * * *
9 * * * 19 * *
14
S2
4 5 6
S1
8 2 10 12 4 14 16 1 7 6 9 19 3 17 18 11 13 15 5 20
3
R3
R4
R3
** * * * * * * * * *
* * * *
* * * ** ** * ∗ * * * * * ∗ * **
* * * *
* * * *
29
12.2.2. Стандартный алгоритм (2-ой вариант) 1) В графе G матрицы А ищем ППВ u. 2) Строим СУС L0, L1,..., Ln с корнем в вершине u. 3) Определяем m = [q/(n+1)], где q – порядок матрицы, n – длина построенной в 2) СУС. n 2 4) Определяем k = . 3 m 5) Если расстояние δ = [(n+1)/(k+1)] между разделителями меньше [n/2] и q>50, то перейдем к шагу 8) (т.е. применение МПС нецелесообразно). 6) Положим i = 1 и S = ∅. 6.1) Положим j = iδ. Если j ≥ n, то перейдем к шагу 7), иначе продолжим вычисления. 6.2) Пусть Si – множество всех вершин уровня Lj, смежных с вершинами из Lj+1. 6.3) S = S ∪ Si. 6.4) i = i+1 и перейдем к 6.1). 7) Найдем p связных компонент R1, R2, ... , Rp, образовавшихся после удаления из графа вершин множества S (значение p может отличаться от (k+1), т.к. получившееся разбиение графа может иметь большее число блоков). 8) Пронумеруем вершины каждого множества Rk (k = 1,...,p), используя обратный алгоритм Катхилл-Макки для каждого из частичных графов. 9) Пронумеровать вершины множества S произвольным образом. Задача 51. Реализовать МПС (2-ой вариант) для графа G из задачи 46. 1) v = 8 – периферийная вершина. 2) СУС для вершины v = 8 построена в задаче 46: n = 6. 20 = 2. 3) m = 6 + 1 6 2 4) k = = 3. 3 ⋅ 2 6 + 1 = 1 , q < 50 . 5) δ = 3 + 1 6) i = 1: S = ∅; 6.1) j = 1: 6.2) S1 = {9; 19}; 6.3) S = {9; 19}; 6.4) i = 2: 6.1) j = 2:
30
6.2) S2 = {2; 10}; 6.3) S={9; 19; 2; 10}; 6.4) i=3: 6.1) j=3: 6.2) S3={17; 18; 11}; 6.3) S={9; 19; 2; 10; 17; 18; 11}; 6.4) i=4: 6.1) j=4 6.2) S4={14; 7}; 6.3) S={9; 19; 2; 10; 17; 18; 11; 14; 7}; 6.4) i=5: 6.1) j=5: 6.2) S5={5; 20}; 6.3) S={9; 19; 2; 10; 17; 18; 11; 14; 7; 5; 20}; 6.4) i=6. 7) R1 = {3; 8}, R2 = {4; 12}, R3 = {1, 16}, R4 = {13, 15}, R5={6}; p = 5. 8) 2
1
R1 :
8
R3 :
9)
3
; R2 :
5
16
3
6
1
4
12
; R4 :
4
7
; R5 :
8
13
S={9; 19; 2; 10; 17; 18; 11; 14; 7; 5; 20}. ↓ S′={10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20}
15
9
6
31 R1 R2
S4 S5 S3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8 3 12 4 16 1 13 15 6 9 19 2 10 17 18 11 14 7 5 20
1 8
* *
2 3
* *
3 12 4 4
R3
R4
R5
S1
*
S2
* *
* *
*
* *
* *
5 16 6 1 7 13
* *
*
* *
*
8 15 9 6
*
* *
* * *
* *
12 2 13 10 14 17
*
* * * *
* *
* *
17 14 18 7 19 5 20 20
*
* *
10 9 * 11 19 * *
15 18 16 11
*
* *
*
*
* *
*
*
* * * *
* *
*
*
* *
* * *
* * *
*
* *
*
*
*
*
* *
*
*
* *
*
*
* *
*
*
Список задач 52. Написать для матрицы А 1) упорядоченное представление, 2) неупорядочное представление в разреженном строчном формате.
32
а)
б)
0 A = 0 0
0 1. 3. 0 0 0 0 0 0 0 0 0
0 1. A = 3. 0 0 0
2. 0 0
0 0 0
0 0 5. 0 0 0 0 0 7. 0 1. 0 0 7. 6.
5. 0 0
0 0 8.
0 0 9.
0 0 0 0 0 0
53. По массивам AN, JA, IA восстановить матрицу А: AN: 1. 7. 3. 5. 8. 9. 6. 2. 3. 4. JA: 1 3 5 4 2 3 6 7 9 8 IA: 1 4 5 7 9 10 11 54. Записать матрицу А из задачи 53 1) в неупорядоченном, 2) в упорядоченном разреженном столбцовом формате. 55. Написать для симметричной матрицы А строчный разреженный формат 1) без выделения диагональных элементов в отдельный массив; 2) с выделением диагональных элементов. 56. Для матрицы из задачи 55 найти полуширину ленты, построить диагональную и профильную схемы хранения.
1. 0 0 A= 0 1. 0
0
0
0
1.
2.
4.
0
0
4.
3.
5.
0
0
5.
4.
8.
0
0
8.
5.
5.
0
0
7.
0 5. 0 0 7 . 6 .
57. В каких позициях массива AN (для профильной схемы) хранятся элементы 2-ой строки матрицы А? AN: 5 4 3 2 1 DA: 1 3 5 58. В каком порядке должны храниться числа a, b, c, d, e, f, g, если схема хранения выглядит следующим образом: N позиции: 1 2 3 4 5 6 7 A: b c e a f g d NEXT: 3 5 1 6 7 4 IP: 2 59. Слить два списка А, В в М1 и С, D в М2, используя переменный переключатель p. А: 5 6 7 10 9 8 3 С: 2 4 6 9 12 1 В: 1 3 5 7 11 ; D: 1 5 9 13 2 7 .
33
60. Сложить три вектора А, В, С 1) методом расширенного вещественного накопителя, 2) методом расширенного целого указателя. AN: 1. 2. 3. 4. 5. BN: 6. 7. 8. 9. 10. 11. JA: 3 7 8 1 2 JB: 1 2 3 4 5 6
CN: 1. 3. 5. 7. JC: 2 4 6 8
61. Найти скалярное произведение векторов 1) А и С, 2) А и В из задачи 60. 62. Найти сумму матриц А и В, где АN: 1. 4. 6. 7. 8. 2. A: JA: 5 2 3 4 6 8; IA: 1 2 5 6 7
B:
BN: 5. 2. 3. 6. 8. 10. JB: 1 2 3 7 IB: 1 3 4 5 7
63. Транспонировать матрицу А из задачи 62. 64. В матрице А из задачи 53 заменить 1-й столбец на 5-й, 5-й − на 3-й, а 3-й – на первый и записать полученную матрицу в явном виде. 65. Сделать то же самое, но для строк. 66. Умножить матрицу А из задачи 53 на вектор В из задачи 60. 67. Умножить матрицу А из задачи 53 на вектор D= (1, 5, 7, 10, 0, 3, 2, 1)т. 68. Найти произведение матриц А и Bт из задачи 62. 69. Написать треугольное разложение для матрицы А 10 . 0 A = 2. 0 4.
0 9. 0 2.
2. 0 8. 0
0 2. 0 7.
1.
0
1.
4 . 1. 0 1. 5 .
.
70. Решить систему Ax = b методом Гаусса (используя треугольное разложение и обратный ход метода Гаусса), где 1. 10. 1. 2. 0 0 3. 1. 1. 9. 0 1. 1. 0 2. 2. 0 3. 0 0 0 b= , A= 3. 0 1. 0 5. 0 2. 4. 0 1. 0 0 7. 0 0. 3. 0 0 2. 0 3.
.
71. Для симметричной матрицы А из задачи 70 построить граф G. 72. По заданному графу G восстановить портрет матрицы А:
34 6
1
10
11
8
G
5 9
2
4
7
3
73. Для графа G из задачи 72 1) перечислить все смежные вершины и указать их степень; 2) найти смежное множество для вершин 4, 5; расстояние между вершинами 10, 3 и 9, 5; эксцентриситет вершины 11; диаметр графа G; клику; 3) указать несколько путей, соединяющих вершины 6,7; периферийные и псевдопериферийные вершины, циклы, частичный граф и подграф, разделители. 74. Построить структуру уровней смежности для графа G из задачи 72. 75. Реализовать следующие алгоритмы для графа G из задачи 72: 1) алгоритм Катхилл-Макки; 2) алгоритм уменьшения профиля разреженной матрицы; 3) алгоритм отыскания ППВ; 4) алгоритм отыскания вершины с большим значением эксцентриситета; 5) алгоритм определения множества достижимости для Q={3,5,1}; 6) алгоритм минимальной степени; 7) алгоритм оценки объема заполнения в методе минимальной степени; 8) алгоритм метода вложенных сечений; 9) алгоритм метода параллельных сечений: а) упрощенный вариант, б) стандартный вариант. Для 1), 2), 6), 8), 9) нарисовать портреты получившихся переупорядоченных матриц. 76. Для графа G из задачи 72 найти Reach(1,Q), Reach(7,Q), Reach(8,Q), где Q={2,6,9}. 77. Построить графы исключения Gk для графа G из задачи 72. 78. Пользуясь теоремой Джорджа-Лю, определить, принадлежит ли ребро (5,7) графу заполнения GF графа G из задачи 72. 79. Построить для графа G из задачи 72 его фактор-дерево, указать монотонное упорядочение фактор-дерева и компоненты связности. 80. Нарисовать портрет переупорядоченной матрицы с блочной структурой, отвечающей фактор-дереву из задачи 79.
35
Лабораторный практикум Общие требования: 1) теоретические основы; 2) текст программы; 3) вывод на печать исходных данных и результата (в неупакованном виде). 1. Способы представления и хранения РМ: 1) РСФ (№ 1, 6, 8(а,б), 10, 52(а,б), 55, 69, 70); 2) РСтФ (№ 1, 6, 8(а,б), 10, 52(а,б), 55, 69, 70); 3) РСФД (№ 7, 8(б), 10, 55); 4) РСФБД (№ 7, 8(б), 10, 55); 5) ПСХ (№ 7, 8(б), 10, 55); 6) ДСХ (№ 7, 8(а,б), 10, 55). 2. Операции над РМ: 1) сложение РМ (№ 20, 62); 2) умножение РМ на РВ (№ 22, 66); 3) умножение РМ на заполненный вектор (№ 23, 67); 4) умножение РМ (№ 24, 68); 5) транспонирование РМ (№ 1, 6, 8(а,б), 10, 52(а,б), 55, 69, 70). 3. Метод Гаусса для РМ (№ 29, 69, 70). 4. Способы уменьшения заполнения в методах Гаусса и Холецкого: 1) алгоритм Катхилл-Макки (№ 29, 69, 70); 2) алгоритм уменьшения профиля РМ (№ 29, 69, 70); 3) алгоритм минимальной степени (№ 29, 69, 70); 4) алгоритм метода вложенных сечений (№ 29, 69, 70); 5) алгоритм метода параллельных сечений (№ 29, 69, 70): а) упрощенный вариант, б) стандартный вариант. Список сокращений: 1. 2. 3. 4. 5. 6. 7. 8.
РМ – разреженная матрица РСФ – разреженный строчный формат РСтФ – разреженный столбцовый формат РСФБД – строчное представление диагонали и верхнего (нижнего) треугольника РСФД – выделение диагональных элементов матрицы A в отдельный массив АD ДСХ – диагональная схема хранения ленточных матриц ПСХ – профильная схема хранения ленточных матриц РЦС – разреженный целый список
36
9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
ПП – переменный переключатель ЦМП – целочисленный массив переключатель РВ – разреженный вектор РВН – расширенный вещественный накопитель РЦУ – расширенный целый указатель РЦМУ – расширенный целый массив указателей СЛАУ – система линейных алгебраических уравнений АС – ассоциированный список СПОМ – симметричная положительно определенная матрица ППВ – псевдопериферийная вершина ПВ – периферийная вершина СП – симметричная перестановка УС – уровни смежности СУС – структура уровней смежности МПС – метод параллельных сечений Литература
1. Писсанецки С. Технология разреженных матриц. М.: Мир, 1988. 2. Джордж А., Лю Д. Численные методы решения больших разреженных систем уравнений. М.: Мир, 1984. 3. Эстербю О., Златев З. Прямые методы для разреженных матриц. М.: Мир, 1987. 4. Тьюарсон Р. Разреженные матрицы. М.: Мир, 1977.
Заказ №
Составители:
Глушакова Татьяна Николаевна Блатов Игорь Анатольевич
Рецензент
Стрыгина Софья Олеговна
Редактор
Тихомирова О.А.
от
2000 г. Тир.
экз. Лаборатория оперативной полиграфии ВГУ