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

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

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 12.06.2016
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лекция

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

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

Вспомним, что матрица смежности для графа 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, Kii - число соединительных ребер кусков 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)

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

Kii=rk (Gi) + rq (Gi) (7.10) K'ii=rk (Gi) + rq (Gi) (7.11)

Тогда

Kii=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,2U1,l

U2=U2,1U2,2U2,l

…… ………………….

Ui=Ui,1Ui,2Ui,l

… …………………….

U1=Ul,1 Ul,2Ul,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).

Размещено на Allbest.ru


Подобные документы

  • Математические графы, области их применения. Способы раскраски вершин и ребер графов, задачи на их применение. Разработка алгоритма, работающего на основе операций с матрицей смежности. Описание логической структуры программы. Пример зарисовки графа.

    курсовая работа [145,5 K], добавлен 27.01.2013

  • Этапы нахождения хроматического числа произвольного графа. Анализ примеров раскраски графа. Характеристика трудоемкости алгоритма раскраски вершин графа Мейниеля. Особенности графов, удовлетворяющих структуру графов Мейниеля, основные классы графов.

    курсовая работа [1,1 M], добавлен 26.06.2012

  • Программа формирования матрицы смежности по заданному списку окрестностей вершин ориентированного графа. Формирование динамического списка дуг ориентированного графа по заданному списку окрестностей. Анализ временной и емкостной сложности алгоритма.

    курсовая работа [8,1 M], добавлен 07.09.2012

  • Использование понятий из теории графов при разработке сетей и алгоритмов маршрутизации. Построение матрицы смежности и взвешенного ориентировочного графа. Результаты работы алгоритмов Дейкстры и Беллмана-Форда. Протоколы обмена маршрутной информацией.

    курсовая работа [334,1 K], добавлен 20.01.2013

  • Алгоритмы, использующие решение дополнительных подзадач. Основные определения теории графов. Поиск пути между парой вершин невзвешенного графа. Пути минимальной длины во взвешенном графе. Понятие кратчайшего пути для графов с помощью алгоритма Флойда.

    реферат [39,6 K], добавлен 06.03.2010

  • Пример матрицы смежности для соответствующей сети. Функция распределения степеней узлов. Вариант матрицы смежности для взвешенной сети. Распределение степеней для случайных графов. Требования к интерфейсу. Алгоритм модели Баррат-Бартелэмью-Веспиньяни.

    контрольная работа [1,4 M], добавлен 13.06.2012

  • Применение теории графов и алгоритмов на графах среди дисциплин и методов дискретной математики. Граф как совокупность двух множеств. Основные способы численного представления графа. Элементы и изоморфизмы графов. Требования к представлению графов в ЭВМ.

    курсовая работа [162,2 K], добавлен 04.02.2011

  • Разработка проекта приложения, при помощи которого можно задать граф с любым количеством вершин и ребер, построить его графическое изображение, автоматически рассчитать ребра полного графа. Выбор состава программных средств. Руководство пользователя.

    курсовая работа [466,5 K], добавлен 21.11.2015

  • Основные понятия и определения алгоритмов на графах. Связные графы без циклов, свободное дерево или дерево без корня. Ориентированные графы (орграфы), их использование для представления отношений между объектами. Матрицы смежности и инциденций.

    презентация [93,9 K], добавлен 13.09.2013

  • Теоретическое обоснование теории графов. Методы нахождения медиан графа. Задача оптимального размещения насосной станции для полива полей. Алгоритм Флойда, поиск суммарного расстояния до вершин. Функция нахождения индекса минимального значения в массиве.

    курсовая работа [336,8 K], добавлен 28.05.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.