
- •Лекция 7 Итерационные алгоритмы разрезания графа на куски
- •Для каждой вершины ek введем число связности вершины (разность кол-ва внешних и внутренних связей k-го элемента)
- •Если ek и eq не смежные, и выполняется:
- •Теперь опишем суть алгоритма
- •Выбираем для перестановки пару с наибольшим положительным bkq.
- •Оглавление
Лекция 7 Итерационные алгоритмы разрезания графа на куски
Суть итерационных алгоритмов разрезания графов заключается в выборе первого случайного разрезания с дальнейшими перестановками вершин с одного куска в другой с целью минимизации числа соединительных ребер.
Вспомним, что матрица смежности для графа G(X,E), имеющего n вершин – это матрица R=||rij||n*n, элементы которой соответствуют числу ребер, соединяющих вершину xi с вершиной xj.
Т.к. матрица смежности полностью описывает граф, то разрезание графа G на l кусков G1, G2, … , Gl эквивалентно разбиению матрицы смежности R графа G на l клеток (подматриц).
Клетки по главной диагонали задают подграфы 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, Kii - число соединительных ребер кусков Gi и Gi
Число внешних ребер, которые являются внутренними для куска Gi равно
|
(7.5) |
Для каждой вершины ek введем число связности вершины (разность кол-ва внешних и внутренних связей k-го элемента)
k= |
rk(Gi)- rk(Gi), если ekEi rk(Gi)- rk(Gi), если ekEi |
(7.6) (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 приводит к уменьшению числа соединительных ребер между кусками в случаях: