2.2. Разрезание графа с использованием чисел связности
Если некоторый граф G = (X, U) произвольно разрезать на два куска G1 и G2, то в общем случае в каждом куске любая вершина xi может быть связана с вершинами, лежащими внутри того же куска и с вершинами, не принадлежащими этому куску (рис. 1). Рёбра, соединяющие вершину xi с другими вершинами внутри куска, назовём внутренними, а рёбра, соединяющие эту вершину с вершинами, не вошедшими в данный кусок – внешними. Это обстоятельство позволяет для каждой вершины графа, разрезанного на куски, ввести числовую характеристику, которая называется числом связности.
Рис. 1
Число связности (xi) вершины xi – это разность количества внешних и внутренних рёбер, инцидентных вершине xi. Тогда формула для определения числа связности будет иметь вид:
-
(xi)=
ri(G1) – ri (G2), если xi X2
ri(G2) – ri(G1), если xi X1
(1)
где ri(G1) – количество рёбер, соединяющих вершину xi с вершинами куска G1 = (X1, U1);
ri(G2) – количество рёбер, соединяющих вершину xi с вершинами куска G2 = (X2, U2).
Подсчитаем числа связности (x1), (x2), ..., (x7) для всех вершин графа G = (X, U), представленного на рис. 1. Вершина x1 X1. Количество рёбер, связывающих эту вершину с вершинами, принадлежащими куску G2: r1(G2) = 2. Количество рёбер, связывающих вершину x1 с вершинами куска G1: r1(G1) = 3. Тогда в соответствии с (1) (x1) = r1(G2) – r1(G1) = 2 – 3 = –1
Аналогично для вершин x2 и x3, принадлежащих куску G1:
(x2) = r2(G2) – r2(G1) = 3 – 2 = +1; (x3) = r3(G2) – r3(G1) = 3 – 3 = 0
Вершина x4 X2. Количество рёбер, связывающих эту вершину с вершинами, принадлежащими кускам G1 и G2: r4(G1) = 1; r4(G2) = 4. Тогда в соответствии с (1): (x4) = r4(G1) – r4(G2) = 1 – 4 = –3.
Аналогично для остальных вершин, принадлежащих куску G2:
(x5) = r5(G1) – r5(G2) = 2 – 3 = –1; (x6) = r6(G1) – r6(G2) = 3 – 2 = +1;
(x7) = r7(G1) – r7(G2) = 2 – 3 = –1; (x8) = r8(G1) – r8(G2) = 0 – 2 = –2.
Как видно из полученных результатов, число связности может быть отрицательным, положительным и равным нулю.
Если число связности (xi) отрицательно, то это означает, что при перемещении вершины xi из одного куска в другой количество внешних рёбер, соединяющих куски, увеличится. Так, например, (x1) = –1. Количество внешних рёбер (связей) между кусками G1 и G2 равно 8 (рис.1). Если вершину x1 переместить из куска G1 в кусок G2, то количество внешних связей между этими кусками увеличится на 1 и будет равно 9 (рис. 2).
Положительное значение числа связности вершины xi означает, что при перемещении этой вершины в другой кусок количество внешних связей между кусками уменьшится. В рассматриваемом примере для вершины x2 число связности (x2) = +1 (рис. 1). Если эту вершину переместить из куска G1 в кусок G2, то количество связей между кусками уменьшится на 1 и будет равно 7 (рис. 3).
Рис. 2 |
Рис. 3 |
Для вершины x3 (x3) = 0. Это означает, что перемещение данной вершины из куска G1 в кусок G2 не изменит количества внешних связей между этими кусками. Два ребра U35 и ребро U37 (рис. 1) станут внутренними рёбрами куска G2, а два ребра U31 и ребро U32 станут внешними связями между кусками G1 и G2.
Так как граф G = (X, U) достаточно полно описывается матрицей смежности, то и разрезание этого графа на куски G1 и G2 также можно показать в матрице смежности. Для этого в матрице смежности R0 выделяют по главной диагонали две подматрицы R(1)0 и R(2)0. При этом порядок подматрицы R(1)0 равен количеству вершин, которые должны находиться в первом куске G1, а порядок подматрицы R(2)0 – количеству всех оставшихся вершин графа, образующих второй кусок G2 графа G.
-
x1
x2
x3
x4
x5
x6
x7
x8
k, q
x1
0
1
2
1
0
0
1
0
-1
x2
1
0
1
0
0
3
0
0
+1
x3
2
1
0
0
2
0
1
0
0
R0 =
x4
1
0
0
0
3
0
1
0
-3
(2)
x5
0
0
2
3
0
0
0
0
-1
x6
0
3
0
0
0
0
1
1
+1
x7
1
0
1
1
0
1
0
1
-1
x8
0
0
0
0
0
1
1
0
-2
Затем следует так переставить строки и столбцы матрицы смежности, чтобы количество рёбер между кусками G1 и G2 стало минимальным. С этой целью для каждой строки матрицы смежности необходимо подсчитать число связности по формуле
-
(xi)=
rkv – rkl, если xk R1
rkl – rkv, если xk R2
(3)
где l I = {1, 2, …, p}, v V = {p+1, p+2, …, n}, причём строка xv принадлежит подматрице R’’0, а строка xl – подматрице R’0;
k J = {1, 2, …, n};
p – старший индекс подматрицы R’0.
Значения чисел связности для каждой строки матрицы смежности записаны в дополнительном столбце матрицы (4). Примеры вычисления чисел связности:
(x1) = (r14 + r17) – (r12 + r13) = (1 + 1) – (1 + 2) = –1;
(x3) = (r15 + r17) – (r11 + r12) = (2 + 1) – (2 + 1) = 0;
(x5) = r53 – r54 = 2 – 3 = –1;
(x7) = (r71 + r73) – (r74 + r76 + r78) = (1 + 1) – (1 + 1 + 1) = –1.
После подсчёта чисел связности необходимо построить вспомогательную прямоугольную матрицу W0 = wij порядка ni (n – ni), в которой строки определяются вершинами из подматрицы R(1)0, а столбцы – вершинами из подматрицы R(2)0. Элемент wkq, который расположен в матрице W0 на пересечении k-й строки (k I) и q-го столбца (q V), определяется по формуле
wkq = k + q – 2rkq (4)
где rkq – элемент матрицы смежности R0.
Элемент wkq вспомогательной матрицы W0 характеризует изменение количества внешних рёбер, соединяющих куски G1 и G2, при перестановке вершин xk X1 и xq X2 из одного куска в другой. Перестановке подлежат те вершины xk и xq, для которых элемент wkq имеет максимальное положительное значение. Если таких элементов несколько, то выбирается тот, у которого соответствующие ему вершины xk и xq имеют меньшую локальную степень.
После перестановки строк и столбцов xk и xq будет получена матрица R01, изоморфная исходной матрице смежности R0 (2). В матрице смежности R01 вновь подсчитываются числа связности k и k и строится вспомогательная матрица W01, по которой определяется следующая пара вершин для очередной перестановки. Этот процесс повторяется до тех пор, пока во вспомогательной матрице W0(n–1) не останется ни одного положительного элемента.
2.3. Пример разрезания графа на куски
итерационным методом с использованием чисел связности
Рассмотрим пример разрезания графа с использованием чисел связности. Для примера с целью сравнения результатов выбран граф G (рис. 4), который использовался для иллюстрации последовательного метода разрезания графов в практической работе № 3.
Рис. 4
Задание
1) Разрезать граф G = (X, U), содержащий 12 вершин (рис. 4) на три куска по четыре вершины в каждом, используя числа связности.
2) Определить коэффициент разрезания.
Решение
Составить матрицу смежности R0 графа G.
-
r1
r2
r3
r4
r5
c1
c2
vd1
vd2
vd3
vt1
vs1
k, q
r1
0
0
0
0
0
0
0
1
0
0
0
0
+1
r2
0
0
0
0
0
0
0
0
0
0
0
1
+1
r3
0
0
0
0
0
0
0
0
0
0
1
1
+2
r4
0
0
0
0
0
0
1
0
0
1
0
0
+2
r5
0
0
0
0
0
0
1
0
0
0
0
2
–3
R0 =
c1
0
0
0
0
0
0
1
0
1
0
1
0
–3
(5)
c2
0
0
0
0
1
1
0
0
0
0
0
1
–2
vd1
1
0
0
0
0
0
0
0
1
0
1
0
–1
vd2
0
0
0
0
0
1
0
1
0
0
0
0
–2
vd3
0
0
0
1
0
0
0
0
0
0
1
0
0
vt1
0
0
1
0
0
1
0
1
0
1
0
0
–2
vs1
0
1
1
0
2
0
1
0
0
0
0
0
–1
2) Разрезать граф G на два куска G1 иG1, выделив в матрице смежности R0 подматрицу R(1)0 порядка n1, где n1 – количество элементов, входящих в первый кусок G1. Результат разрезания представлен на рис. 5. Количество внешних связей между кусками K = 6.
Рис. 5
3) Подсчитать числа связности по формуле (3). Числа связности k и q указаны в дополнительном столбце матрицы смежности R0.
4) Построить вспомогательную матрицу W0, строки которой определяются вершинами r1, r2, r3 и r4, входящими в первый кусок G1, а столбцы – всеми остальными вершинами графа G (вершинами кускаG1).
-
r5
c1
c2
vd1
vd2
vd3
vt1
vs1
r1
–2
–2
–1
–2
–1
+1
–1
0
W(1) =
r2
–2
–2
–1
0
–1
+1
–1
0
(6)
r3
–1
–1
0
+1
0
+2
–2
–3
r4
–1
–1
–2
+1
0
0
0
+1
Элементы вспомогательной матрицы определяются по формуле (4).
В качестве примера рассмотрим вычисление некоторых элементов wkq вспомогательной матрицы (6)
w(r1c2) = (r1) + (c2) – 2r(r1c2) = 1 + (–2) – 2 0 = 1 – 2 = –1
w(r2vd1) = (r2) + (vd1) – 2r(r2vd1) = 1 + (–1) – 2 0 = 1 – 1 = 0
w(r1vd1) = (r1) + (vd1) – 2r(r1vd1) = 1 + (–1) – 2 1 = 1– 1 – 2 = –2
w(r4vs1) = (r4) + (vs1) – 2(r4vs1) = 2 + (–1) – 2 0 = 2 – 1 = +1
5) Выбрать в матрице (6) наибольший положительный элемент wkq. Таким элементом является элемент w(r3vd3) = +2. Следовательно, для минимизации внешних связей необходимо переставить r3 и vd3 строки и столбцы в матрице смежности R0. В результате такой перестановки количество внешних связей между кусками G1 и G1 должно уменьшиться на два и составит K = 4. Выполненная перестановка r3 и vd3 строк и столбцов означает, что вершина r3 из куска G1 переместилась в кусок G1, а вершина vd3 – из куска G1 в кусок G1. Результат перестановки представлен на рис. 6.
Рис. 6
6) Построить матрицу смежности R01, изоморфную матрице R0
-
r1
r2
vd3
r4
r5
c1
c2
vd1
vd2
r3
vt1
vs1
k, q
r1
0
0
0
0
0
0
0
1
0
0
0
0
+1
r2
0
0
0
0
0
0
0
0
0
0
0
1
+1
vd3
0
0
0
1
0
0
0
0
0
0
1
0
0
r4
0
0
1
0
0
0
1
0
0
0
0
0
+0
r5
0
0
0
0
0
0
1
0
0
0
0
2
–3
R01 =
c1
0
0
0
0
0
0
1
0
0
1
1
0
–3
(7)
c2
0
0
0
0
1
1
0
0
0
0
0
1
–2
vd1
1
0
0
0
0
0
0
0
1
0
1
0
–1
vd2
0
0
0
0
0
1
0
1
0
0
0
0
–2
r3
0
0
0
0
0
0
0
0
0
0
1
1
–2
vt1
0
0
1
0
0
1
0
1
0
1
0
0
–2
vs1
0
1
0
0
2
0
1
0
0
1
0
0
–3
7) Подсчитать числа связности по формуле (3). Числа связности k и q указаны в дополнительном столбце матрицы смежности R01.
8) Построить вспомогательную матрицу W01, строки которой определяются вершинами, входящими в первый кусок G1 ( r1, r2, vd3, r4), а столбцы – вершинами куска G1.
-
r5
c1
c2
vd1
vd2
r3
vt1
vs1
r1
–2
–2
–1
–2
–1
–1
–2
–2
W01 =
r2
–2
–2
–1
0
–1
–1
–2
–4
(8)
vd3
–3
–3
–2
–1
–2
–2
–5
–3
r4
–3
–3
–4
–1
–2
–2
–3
–3
9) Во вспомогательной матрице W01 отсутствуют какие-либо положительные элементы. Это означает, что на данном этапе разрезания графа G отсутствует пара вершин, перестановка которых уменьшит количество внешних связей K между кусками G1 и G1. Следовательно, кусок G1 = (X1, U1) считается сформированным, где X1 = {r1, r2, vd3, r4}.
10) Удалить из графа G кусок G1. В результате будет получен граф G*, представленный на рис. 7.
Рис. 7
11) Составить матрицу смежности R1 графа G*.
-
r5
c1
c2
vd1
vd2
r3
vt1
vs1
k, q
r5
0
0
1
0
0
0
0
2
+1
c1
0
0
1
0
1
0
1
0
+1
c2
1
1
0
0
0
0
0
1
–1
R1 =
vd1
0
0
0
0
1
0
1
0
+2
(9)
vd2
0
1
0
1
0
0
0
0
+2
r3
0
0
0
0
0
0
1
1
–2
vt1
0
1
0
1
0
1
0
0
+1
vs1
2
0
1
0
0
1
0
0
+2
12) Разрезать граф G* на два куска G2 иG2, выделив в матрице смежности R1 подматрицу R(1)1 порядка n2, где n2 — количество элементов, входящих во второй формируемый кусок G2. Результат разрезания графа представлен на рис. 8. Количество внешних связей между кусками K = 7.
Рис. 8
13) По формуле (3) подсчитать числа связности. Числа связности k и q указаны в дополнительном столбце матрицы смежности R1.
14) Построить вспомогательную матрицу W1, строки которой определяются вершинами r5, c1, c2 и vd1, входящими во второй формируемый кусок G2, а столбцы – всеми остальными вершинами, входящими в кусок G2.
-
vd2
r3
vt1
vs1
r5
+3
–1
+2
–1
W1 =
c1
+1
–1
0
+3
(10)
c2
+1
–3
0
+1
vd1
+2
0
+1
+4
15) Выбрать в матрице (10) наибольший положительный элемент wkq. Таким элементом является элемент w(vd1vs1) = +4. Это означает, что переместив вершину vd1 из куска G2 в кусокG2, а вершину vs1 из кускаG2 в кусок G2, количество внешних связей K между кусками G2 иG2 уменьшится на 4 и составит K = 3 (рис. 9).
Рис. 9
16) Построить матрицу смежности R11, изоморфную матрице R1.
-
r5
c1
c2
vs1
vd2
r3
vt1
vd1
k, q
r5
0
0
1
2
0
0
0
0
–3
c1
0
0
1
0
1
0
1
0
+1
c2
1
1
0
1
0
0
0
0
–3
R11 =
vs1
2
0
1
0
0
1
0
0
–2
(11)
vd2
0
1
0
0
0
0
0
1
0
r3
0
0
0
1
0
0
1
0
0
vt1
0
1
0
0
0
1
0
1
–1
vd1
0
0
0
0
1
0
1
0
–2
17) Построить вспомогательную матрицу W11.
-
vd2
r3
vt1
vd1
r5
–3
–3
–4
–5
W11 =
c1
–1
+1
–2
–1
(12)
c2
–3
–3
–4
–5
vs1
–2
–4
–3
–4
18) Выбрать в матрице (12) наибольший положительный элемент wkq. Таким элементом является элемент w(c1r3) = +1, следовательно, вершину c1 необходимо переместить из куска G2 в кусокG2, а вершину r3 — из куска G2 в кусок G2. Данная перестановка уменьшит количество внешних связей между кусками на 1. Результат перестановки представлен на рис. 10.
Рис. 10
19) Построить матрицу смежности R12, изоморфную матрице R11.
-
r5
r3
c2
vs1
vd2
c1
vt1
vd1
k, q
r5
0
0
1
2
0
0
0
0
–3
r3
0
0
0
1
0
0
1
0
0
c2
1
0
0
1
0
1
0
0
–1
R12 =
vs1
2
1
1
0
0
0
0
0
–4
(13)
vd2
0
0
0
0
0
1
0
1
0
c1
0
0
1
0
1
0
1
0
0
vt1
0
1
0
0
0
1
0
1
–1
vd1
0
0
0
0
1
0
1
0
–2
В дополнительном столбце матрицы смежности R12 нет элементов k и q, имеющих положительное значение. Это означает, что и во вспомогательной матрице W12 также не будет ни одного положительного элемента, поэтому процесс формирования куска G2 = (X2, U2) следует считать законченным, где X2 = {r5, r3, c2, vs1}. Оставшиеся четыре вершины vd2, c1, vt1 и vd1 образуют третий кусок G3. Полученное разрезание графа G на три куска G1, G2 и G3 представлено на рис. 11. Коэффициент разрезания рассматриваемого графа (G) = 10/6 = 1,67.
Рис. 11
Результат разбиения принципиальной электрической схемы изделия на отдельные блоки представлен на рис. 12.
Рис. 12. Распределение радиоэлектронных компонентов по блокам РЭС
