Итерационные алгоритмы разрезания графа на куски


Лекция

Итерационные алгоритмы разрезания графа на куски

Суть Итерационных Алгоритмов Разрезания Графов заключается в выборе первого случайного разрезания с дальнейшими перестановками вершин с одного куска в другой с целью минимизации числа соединительных ребер.

Вспомним, Что Матрица Смежности Для Графа G (X, E), Имеющего N Вершин - это Матрица R=||rIj||N*N, Элементы Которой Соответствуют Числу Ребер, Соединяющих Вершину XI С Вершиной XJ.

Т. к. матрица смежности полностью описывает граф, то разрезание графа G на L кусков G1, G2, ..., GL эквивалентно разбиению матрицы смежности R графа G на L клеток (подматриц). Например, граф задан матрицей смежности R. Граф разрезан на 2 куска - G1={е1, е2, е3} и G2={е4, е5, е6, е7}.

R=

1

2

3

4

5

6

7

1

0

1

1

1

0

0

0

2

1

0

1

0

2

0

0

3

1

1

0

0

0

0

3

4

1

0

0

0

2

1

0

5

0

2

0

2

0

0

0

6

0

0

0

1

0

0

1

7

0

0

3

0

0

1

0

Очевидно, что клетки по главной диагонали задают подграфы GI', включающиеся в куски GI, а остальные клетки определяют наличие ребер между кусками.

За критерий оптимальности можно брать минимум числа ребер между кусками (см. формулу (3.2) лекции 3)

(7.1)

Либо максимум числа ребер внутри кусков

(7.2)

Или G > max (7.3)

(Согласно материалу лекции 3 множество UIj определяет подмножество ребер UIj ? U, попадающих в разрез между кусками GI и GJ графа G, а множество UIi определяет подмножество ребер, т. е. кол-во связей Внутри Куска GI). Разрезание графа будем сводить на каждом шаге к разрезанию графа на два куска. Число вершин первого куска равно числу вершин выделяемого куска, а число вершин второго куска - числу всех оставшихся вершин графа. Таким образом, в первом куске пусть будет множество ЕI вершин, а во втором ЕI = Е ЕI.

Тогда множество ребер разобьем на три класса:

    1) внутренние ребра, лежащие в куске; GI; 2) внешние ребра, лежащие в куске GI; 3) соединяющие ребра между кусками GI и GI.

Число внутренних ребер куска GI равно

(7.4)

Где (eI) - сумма локальных степеней вершин куска GI, KI - число соединительных ребер кусков GI и GI

Число внешних ребер, которые являются внутренними для куска GI равно

(7.5)

Для Каждой Вершины EK Введем Число Связности Вершины (разность Кол-ва Внешних И Внутренних Связей K-го Элемента)

K= RK (GI) - rK (GI), если eKEI (7.6)

RK (GI) - rK (GI), если eKEI(7.7)

Где: RK (GI) - число ребер, соединяющих вершину EK с вершинами куска GI (K-й элемент, I-й кусок); RK (GI) - число ребер, соединяющих вершину EK с вершинами куска GI.

Обозначим: K - число Связности Для Вершин EKEI; K - число Связности Для Вершин EKEI.

Поясним понятие связности на примере графа G, разбитого на 2 части G1 и G2, приведенного на рис. 7.1

Тогда числа связности для вершин G1 Определяется следующим образом:

(x1) =r1 (G2) - r1 (G1) =1-2=-1;

(x2) =r2 (G2) - r2 (G1) =2-2=0;

(x3) =r3 (G2) - r3 (G1) =3-2=1;

Числа связности для вершин G2:

(x4) =r4 (G1) - r4 (G2) =1-3=-2

(x5) =r5 (G1) - r5 (G2) =2-2=0;

(x6) =r6 (G1) - r6 (G2) =0-2=-2;

(x7) =r7 (G1) - r7 (G2) =3-1=2;

Очевидно, что число связности может быть положительным, отрицательным или равным нулю. Физический смысл числа связности следующий. Например, (x1) =-1 означает, что при перестановке вершины X1 из G1 в G2 число ребер в сечении увеличится на 1. Значение (x2) =0 говорит о том, что перестановка вершины X2 из G1 в G2 оставит без изменения число соединительных ребер.

Рассмотрим теперь итерационный алгоритм с использованием матрицы смежности. Он основан на Теореме:

Перестановка двух произвольных вершин EKEI и EQEI приводит к уменьшению числа соединительных ребер между кусками в случаях:

A) если EK и EQ не смежные, и выполняется: K+Q> 0 (7.7)

Б) если EK и EQ смежные, и выполняется: K+ Q >2 (7.8)

В общем случае K+ Q >2rKq (7.9)

Докажем утверждение А). Очевидно, что перестановка целесообразна, если KI=KI-K'I>0 (например, было 5 внешних реберных соединений, стало 2), где KI и K'I - числа внешнего реберного соединения до и после перестановки и

KI=rK (GI) + rQ (GI) (7.10) K'I=rK (GI) + rQ (GI) (7.11)

Тогда

KI=rK (GI) +rQ (GI) - K (GI) - rQ (GI) = K+Q>0 (7.12)

Аналогично доказывается утверждение Б).

Теперь опишем суть алгоритма:

    1. Разрезание начинаем выделением в матрице R двух произвольных подматриц Q и Q. Порядок подматрицы Q равен числу вершин первого выделяемого куска, а порядок Q - числу всех оставшихся вершин. 2. Перестановка элементов из одного куска в другой будет соответствовать перестановке строк и столбцов матрицы R. 3. Матрица смежности графа, приведенного на рис. 7.1, имеет вид:

R0=

1

2

3

4

5

6

7

1

0

1

1

1

0

0

0

-1

K

2

1

0

1

0

2

0

0

0

3

1

1

0

0

0

0

3

1

4

1

0

0

0

2

1

0

-2

Q

5

0

2

0

2

0

0

0

0

6

0

0

0

1

0

0

1

-2

7

0

0

3

0

0

1

0

2

Разрежем эту матрицу на 2 подматрицы по 3 и 4 элемента. Сумма всех элементов закрашенных подматриц, деленная на два, соответствует числу внутренних ребер кусков, а элементы, не принадлежащие главной диагонали, определяют соединяющие ребра между кусками. Тогда

(7.13)

(7.14)

Для каждой строки матрицы смежности подсчитываем K или Q в зависимости от того, к какой подматрице принадлежит данная строка. Запишем эти числа справа матрицы.

4. Построим матрицу В =||bkq||ni* (n-ni), в которой строки определяются вершинами ekEi, а столбцы вершинами eqEi. На пресечении k - ой строки и q - го столбца элемент

BKq= K+Q-2rKq (7.15)

Где RKq - элемент матрицы R.

Элемент BKq характеризует изменение числа соединительных ребер между кусками GI и GI при перестановке вершин EKGI и EQGI.

Выбираем Для Перестановки Пару С Наибольшим Положительным BKq.

    5. Осуществляется перестановка строк и столбцов K и Q в матрице R и процесс снова повторяется пока в матрице B все элементы не станут со знаком "-". 6. Исключается из графа G кусок G1, соответствующий подматрице Q1 и процесс повторяется для матрицы Q1 с выделением куска с N2 элементами и т. д.

Пример.

Итерационный алгоритм разрезание граф

Задана матрица смежности R0 графа G. Надо разрезать граф с рис.7.1 на 3 куска по 5, 3, 4 вершин

R0=

1

2

3

4

5

6

7

8

9

10

11

12

1

0

0

0

0

0

0

2

0

2

0

0

0

+4

K

2

0

0

0

2

1

1

1

0

0

0

0

0

-1

3

0

0

0

0

0

0

0

1

0

0

0

1

+2

4

0

2

0

0

0

0

0

0

2

1

0

0

+1

5

0

1

0

0

0

2

0

0

0

1

0

0

+2

6

0

1

0

0

2

0

0

0

0

1

0

1

+1

Q

7

2

1

0

0

0

0

0

0

1

0

0

0

+2

8

0

0

1

0

0

0

0

0

1

0

1

1

-2

9

2

0

0

0

2

0

1

1

0

0

0

0

+2

10

0

0

0

1

1

1

0

0

0

0

0

0

+1

11

0

0

0

0

0

0

0

1

0

0

0

3

-4

12

0

0

1

0

0

1

0

1

0

0

3

0

-4

Согласно п.1 алгоритма выделяем в матрице R0 две подматрицы, в одной из которых 5 строк, т. е. включаем в первый кусок элементы E1, E2, E3, E4, E5 (т. к. разбиваем на куски по 5, 3, 4 вершин), в оставшейся части 7 строк.

Согласно п.3 алгоритма для каждой строки матрицы смежности по формулам (7.13) и (7.14) подсчитываем K и K и записываем в столбец справа от матрицы смежности. Число соединительных ребер между G1 и G1 (число внешних связей) для этого разбиения K1=14 (сумма элементов одной из невыделенных частей)

Согласно п.4 алгоритма по формуле (7.15) построим матрицу В. Для примера:

B16= 1+6-2r16=4+1-2*0=5, b411= 4+11-2r411=1-4-2*0=-3

B0=

E6

E7

E8

E9

E10

E11

E12

E1

+5

+2

+2

+2

+5

0

0

E2

-2

-1

-3

+1

0

-5

-5

E3

+3

+4

-2

+4

+3

-2

-4

E4

+2

+3

-1

-1

0

-3

-3

E5

-1

+4

0

+4

+1

-2

-2

Согласно п.4 алгоритма выбираем для перестановки пару с наибольшим положительным B16=5, т. е. из B0 выбираем для перестановки элементы E1 и E6.

Согласно п.5 алгоритма, в матрице R0 Переставляем Строчки И Столбцы, Соответствующие E1 И E6, и смотрим, как изменится число внешних связей между кусками от этой перестановки.

Матрица R1

R1=

6*

2

3

4

5

1*

7

8

9

10

11

12

6*

0

1

0

0

2

0

0

0

0

1

0

1

-1

K

2

1

0

0

2

1

0

1

0

0

0

0

0

-3

3

0

0

0

0

0

0

0

1

0

0

0

1

2

4

0

2

0

0

0

0

0

0

2

1

0

0

1

5

2

1

0

0

0

0

0

0

0

1

0

0

-2

1*

0

0

0

0

0

0

2

0

2

0

0

0

-4

Q

7

0

1

0

0

0

2

0

0

1

0

0

0

-2

8

0

0

1

0

0

0

0

0

1

0

1

1

-2

9

0

0

0

0

2

2

1

1

0

0

0

0

-2

10

1

0

0

1

1

0

0

0

0

0

0

0

3

11

0

0

0

0

0

0

0

1

0

0

0

3

-4

12

1

0

1

0

0

0

0

1

0

0

3

0

-2

Число соединительных ребер между G1 и G1 (число внешних связей) для этого разбиения K2=9 (сумма элементов выделенной части).

Число соединительных ребер между G1 и G1Снизилось с 14 До 9, т. е. перестановка элементов E1 и E6 дает уменьшение числа соединительных ребер. Переход к п.4. Согласно п.4 по формуле (7.15) строим матрицу В1:

B1=

E1

E7

E8

E9

E10

E11

E12

E6

-5

-3

-3

-3

0

-5

-7

E2

-7

-7

-5

-5

0

-7

-7

E3

-2

0

-2

0

+5

-2

-4

E4

-3

-1

-1

-5

+2

-3

-3

E5

-6

-4

-4

-4

-1

-6

-6

Согласно п.4 алгоритма выбираем для перестановки пару с наибольшим положительным B310=5, т. е. из B1 выбираем для перестановки элементы E3 и E10.

В матрице R1 переставляем строчки и столбцы, соответствующие E3 и E10.

R'2=

6

2

10

4

5

1

7

8

9

3

11

12

6

0

1

1

0

2

0

0

0

0

0

0

1

-1

K

2

1

0

0

2

1

0

1

0

0

0

0

0

-3

10*

1

0

0

1

1

0

0

0

0

0

0

0

-3

4

0

2

1

0

0

0

0

0

2

0

0

0

-1

5

2

1

1

0

0

0

0

0

0

0

0

0

-2

1

0

0

0

0

0

0

2

0

2

0

0

0

-4

Q

7

0

1

0

0

0

2

0

0

1

0

0

0

-2

8

0

0

0

0

0

0

0

0

1

1

1

1

-4

9

0

0

0

0

2

2

1

1

0

0

0

0

-2

3*

0

0

0

0

0

0

0

1

0

0

0

1

-2

11

0

0

0

0

0

0

0

1

0

0

0

3

-4

12

1

0

0

0

0

0

0

1

0

1

3

0

-4

Число соединительных ребер между G1 и G1 снизилось до 4.

Согласно п.5 алгоритма т. к. в R'2 все значения БК и БQ отрицательные, то в В2 не будет положительных элементов, и процесс выделения подграфа G1 закончен, 1-й кусок построен: E1=e6,e2,e10,e4,e5

Строим кусок E2, содержащий 3 вершины Включаем в него элементы E1, E7, E8.

Согласно п.6 алгоритма, исключив из R'2 кусок, соответствующий G1, получим:

Матрица

R''0=

1

7

8

9

3

11

12

1

0

2

0

2

0

0

0

0

K

7

2

0

0

1

0

0

0

-1

8

0

0

0

1

1

1

1

4

9

2

1

1

0

0

0

0

4

Q

3

0

0

1

0

0

0

1

0

11

0

0

1

0

0

0

3

-2

12

0

0

1

0

1

3

0

-3

Строим матрицу B''0:

B''0=

E9

E3

E1

E12

E1

1

-1

-3

-3

E7

-5

0

-7

-4

E8

6

2

0

-1

Выбираем Max B89=6. Из B''0 выбираем для перестановки элементы E8 и E9. В матрице R''0 переставляем строчки и столбцы, соответствующие E8 и E9:

R''1=

1

7

9

8

3

11

12

1

0

2

2

0

0

0

0

-4

K

7

2

0

1

0

0

0

0

-3

9

2

1

0

1

0

0

0

-2

8

0

0

1

0

1

1

1

-2

Q

3

0

0

0

1

0

0

1

-2

11

0

0

0

1

0

0

3

-4

12

0

0

0

1

1

3

0

-5

Число соединительных ребер между G2И G2Снизилось с 7 До 1, т. е. перестановка элементов E8 и E9 дает уменьшение числа соединительных ребер.

Т. к. все БК и БQ отрицательные, то в В''1 все члены будут со знаком "-" и перестановки не может быть. Тогда

E2=e1,e7,e9, E3=e8,e3,e11,e12.

Число соединительных ребер между кусками =5.

Число внутренних ребер равно 9+5+7=21.

? (G) =21/5=4,2.

Результат разбиения приведен на рис.7.2.

Материал из лекции 3

Пусть граф G (E, U) разбит на L кусков G1, G2,...,GL. Тогда множество ребер U графа G можно представить в виде:

(3.3)

Где

U1=U1,1U1,2...U1,l

U2=U2,1U2,2...U2,l

...... ......................

Ui=Ui,1Ui,2... Ui, l

... .........................

U1=Ul,1 Ul,2...Ul, l (3.4)

Где:

    - UI - Подмножество всех ребер, инцидентных вершинам EI куска GI; - UI, I - подмножество ребер, соединяющих подмножество вершин EI куска GI между собой; - UI,J - подмножество ребер, соединяющих куски GI и GJ.

Назовем Коэффициентом Разбиения ? (G) Графа G отношение суммарного числа внутренних ребер (ребер подмножеств UI, I) к суммарному числу соединяющих ребер UI,J.

(3.5)

Коэффициент ? (G) Служит для оценки разбиения графа G на куски. Для графа на рис. 3.1 ? (G) =5/12.

Этот коэффициент можно также использовать как критерий для сравнения различных алгоритмов разбиения графа. Оптимальным разбиениям для одного и того же графа соответствуют Наибольшие Значения ? (G).

Похожие статьи




Итерационные алгоритмы разрезания графа на куски

Предыдущая | Следующая