Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архив1 / docx31 / Лабораторная 1

.docx
Скачиваний:
34
Добавлен:
01.08.2013
Размер:
535.31 Кб
Скачать
R11 =

Так как в матрице ∆R11 все перестановочные коэффициенты отрицательны или равны нулю, то переставлять вершины первой части с вершинами других частей нецелесообразно. Для определе­ния возможности переставлять вершины вычисляем матрицу ∆R2 размерности N2*(N3+…Nn)=N2*N3. В нашем случае

т.е. ∆R(v4,v7)=3, и переставляем вершины v4 и v7 .

v2

v4

v8

v9

-4

-4

-3

v7

-3

-3

-4

v5

-4

-4

-3


R2 =

Разбиение графа в результате второй итерации приведено на рис. 1.3в, а матрица смежности имеет вид

v1

v6

v3

v7

v5

v2

v4

v8

v1

0

1

0

0

0

0

0

0

v6

1

0

0

0

0

0

1

0

v3

0

0

0

1

1

0

0

0

v4

0

0

1

0

1

0

0

1

v5

0

0

1

1

0

0

0

0

v2

0

0

0

0

0

0

1

1

v7

0

1

0

0

0

1

0

1

v8

0

0

0

1

0

1

1

0


S2 =

Значение критерия после двух перестановок (Q=2) показы­вает, что три части графа соединены лишь двумя ребрами. При этом части I и 2 не имеют связей вообще.

На третье итерации R21 имеет вид

v2

v4

v8

v9

-4

-4

-3

v7

-3

-3

-4

v5

-4

-4

-3


R21 =

Так как все элементы матрицы R2 1 отрицательны, то других матриц R строить не требуется. На этом решение задачи раз­биения графа на 3 части, заканчивается.

Отметим, что при расчете перестановочных коэффициентов rij значения одних и тех же чисел связности типа Sqp(vi) используются для вычисления нескольких значений rij . Так, в рассмо­тренном примере для вычисления r13, r14, а также r15, используется предварительно рассчитанное значение S21(v1). Это служит основой другой модификации итерационного алгоритма, в соответствии с которым вначале вычисляются числа связности всех вершин. Для рассматриваемого примера результаты вычисле­ний удобно представить о виде следующей таблицы:

v1 v2

v3 v4 v5

v6 v7 v9

S12(v3) S21(v1) S21(v5)

S13(v6) S13(v7) S13(v8)

S21(v1) S21(v1)

S23(v6) S23(v7) S23(v8)

S31(v1) S31(v2)

S32(v3) S32(v4) S32(v5)

Используя ту же самую методику подсчета Sqp(vi) получим следующее значение чисел связности:

v1 v2

v3 v4 v5

v6 v7 v9

-1 +1 -1

+1 -1 0

0 +1

+1 +1 0

+1 +1

0 +2 0

Анализ этой таблицы показывает, что положительные значе­ния перестановочных коэффициентов rij могут быть получены при перестановках вершин 1 - в часть 3, вершины 2 - в части 2 и 3, вершины 4 - в части 1 и 3, вершины 6 - в части 1 и 2, вершины 7- в часть 2, для которых значения Sqp(vi) >0 .

Так как при перестановках вершины меняются местами, то наибольшее значение rij следует ожидать при перестановке вер­шины 4 из частя 2 в часть 3, т.е. ее замену на вершину 6 или 7 принадлежащая части З. При этом

∆S32(v4)+ ∆S23(v6)=2+1=3

и

∆S12(v4)+ ∆S23(v6)=2+1=3

Однако вершины 4 и 6 смежны (S46=1), а вершины 4 и 7 несмежны (S47=0), поэтому более эффективна, что подтверждается расчётом перестановочных коэффициентов по формуле (1.9):

r46=2+1-2∙1=1; r47=2∙1-2∙0=3

Следовательно, вершину 4 переносим в часть 3, а вершину 7- в часть 2. Матрица смежности после первой итерации имеет следующий вид:

v1

v2

v3

v4

v5

v6

v7

v8

v1

0

0

0

0

0

1

0

0

v2

0

0

0

0

0

0

1

1

V3

0

0

0

1

1

0

0

0

v7

0

0

1

0

1

0

0

1

v5

0

0

1

1

0

0

0

0

v6

1

0

0

0

0

0

1

0

v4

0

1

0

0

0

1

0

1

v8

0

1

0

1

0

0

1

0

Таким обрезом, после первой итерации значение критерия оптимальности стало Q=4 , сразу уменьшившись на 3. На второй итерации в результате расчета чисел связности получим таблицу

v1 v2

v3 v7 v5

v6 v7 v8

-2 -2 -2

0 -1 0

0 0

-1 -2 0

+1 +2

-2 -1 -2

Она показывает, что наиболее эффективна перестановка вершин 1 или 2 из части 1в часть 3: S31(v1)=+1; ∆S31(v2)=+2. При этом из части 3 в часть 1 можно переставить лишь вершину 6 или 8 (S13(v4)=0 иS13(v8)=0). Подсчет перестановочных коэффициентов по формуле(1.9) дает

r16=1+0-2∙1=-1;

r18=1+0-2∙0=+1;

r26=2+0-2∙0=+2;

r28=2+0-2∙1=0;

Следовательно, надо поменять местами вершины 2 и 6. Матри­ца смежности примет вид

v1

v6

v3

v7

v5

v2

v4

v8

v1

0

1

0

0

0

1

0

0

v6

1

0

0

0

0

0

1

0

v3

0

0

0

1

1

0

0

0

v7

0

0

1

0

1

0

0

1

v5

0

0

1

1

0

0

1

0

v2

0

0

0

0

0

0

1

1

v4

0

1

0

0

1

1

0

1

v8

0

0

0

1

0

1

1

0

Суммируя ненулевые элементы недиагональных подматриц, получим значение критерия Q=0+1+1=2. Вновь рассчитав числа связности будем иметь таблицу

v1 v2

v3 v4 v5

v6 v7 v8

-2 -2 -2

-2 -1 -2

-1 -1

-2 -2 -1

-1 0

-2 -1 -2

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

Полученный результат (см. рис. 1.3в) совпадает с решением, которое было найдено ранее (тоже за две итерации), но другим методом и с другими промежуточными результатами.

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

  1. Вводится стандартная матрица F=||fij||m*m, в которой по главной части диагонали располагаются единичные подматрицы размерностями N1*N1,N2*N2,…Nn*Nn. Для нашего примера

1

1

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

F=

  1. Рассчитывается матрица A=||aij||m*m как результат умножения матриц A=F*S, т.е..

1

2

3

4

5

6

7

8

1

0

0

0

1

0

1

0

1

2

0

0

0

1

0

1

2

1

3

0

1

1

0

1

1

2

1

4

0

1

1

0

1

1

2

1

5

0

1

1

0

1

1

2

1

6

1

1

1

2

1

0

1

1

7

1

1

1

2

1

0

1

1

8

1

1

1

2

1

0

1

1

В нашем случае

A=

  1. Образуется матрица -инверсия матрицы F;

1

2

3

4

5

6

7

8

1

0

0

1

1

1

1

1

1

2

0

0

1

1

1

1

1

1

3

1

1

0

0

0

1

1

1

4

1

1

0

0

0

1

1

1

5

1

1

0

0

0

1

1

1

6

1

1

1

1

1

0

0

0

7

1

1

1

1

1

0

0

0

8

1

1

1

1

1

0

0

0

=

и рассчитывается матрица как поэлементное перемножение матриц и S , т.е. wij=fijSij. • Для рассматриваемого примера

Соседние файлы в папке docx31