Алгоритм парных перестановок для решения задач оптимизации компоновки и размещения элементов РЭС: Учебное пособие, страница 29

Таблица 4.1

Матрица смежности

1

2

3

4

1

0

0

1

1

2

0

0

1

1

3

1

1

0

1

4

1

1

1

0

 


Минимизацию числа пересечений графа можно провести методом парных перестановок его вершин. Этот метод можно проиллюстрировать следующим образом: пусть граф, представленный на рис. 4.1, имеет пересечение ребер. Осуществим парную перестановку первой и четвертой вершин графа, в результате чего получим граф без пересечений (рис. 4.2).

Общее количество пересечений для графа с n вершинами можно определить по формуле

            (4.1)

где n – число вершин графа;

 


1, если между ребром (i,j) и ребром (k,l) есть

p[(i,j),(k,l)]=         пересечение

0, в противном случае;

mij, mkl - элементы матрицы смежности.

В другой форме можно записать

             (4.2)

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

Пусть в некотором графе ребра, инцидентные вершине A, имеют следующее число пересечений с остальными ребрами графа:

.

Аналогично, для вершины B

.

После перестановки местами вершин A и B число пересечений изменится и станет равным:

.

.

Тогда изменение числа пересечений в результате перестановки вершин A и B выразится формулой :

.

Если  > 0, то перестановка вершин A и B целесообразна, так как ведет к уменьшению числа пересечений.

Определить наличие пересечений p[(i,j);(k,l)] между ребрами (i,j) и (k,l) можно следующим образом в соответствии с рис. 4.3, 4.4.

Ребра А1А2 и В1В2 являются отрезками прямых линий. Прямая линия описывается уравнением [8]:

y = kx + b.

Прямая, на которой лежит отрезок А1А2, описывается уравнением :

y = a1x+b1,  где .

Аналогично для В1В2:

y = a2x+b2,  где  .

Точка Z пересечения этих прямых имеет координаты :

 .

Необходимо далее определить, принадлежит ли точка Z(x*,y*) обоим отрезкам А1А2, В1В2 в соответствии с рис. 4.3.

 


Если точка Z принадлежит заштрихованной области, значит она принадлежит обоим отрезкам :

Z Î [A1,A2],   Z Î [B1,B2], следовательно является точкой пересечения отрезков (A1,A2), (В12), т.е.

Z = (A1,A2) Ç (B1,B2).

Это значит, что xmin < x* < xmax, ymin < y* < ymax, для каждого отрезка, где хmin – большее значение из двух минимальных значений координаты х отрезков А1А2 и В1В2;

ymin – большее значение из двух минимальных значений координаты y отрезков А1А2 и В1В2;

хmax – меньшее значение из двух максимальных значений координат х отрезков А1А2 и В1В2;

ymax – меньшее значение из двух максимальных значений координат y отрезков А1А2 и В1В2.

Выполнение этого условия равноценно тому, что расстояние от обоих концов каждого отрезка до точки пересечения прямых меньше длины отрезка. Этот способ определения принадлежности точки пересечения отрезкам А1А2 и В1В2 был реализован в программе.

Кроме такого общего случая расположения прямых на плоскости относительно координатных осей, возможны частные случаи :

1. xA1 = xA2, xB1 ¹ xB2; (рис. 5.5)

Тогда x* =  xA1; y* = a2x*+b2, где  .

2. xB1 = xB2, xA1 ¹ xA2;

Тогда x* =  xB1; y* = a1x*+b1, где

3. yA1 = yA2, yB1 ¹ yB2

Тогда y* =  yA1;

где .

4. yВ1 = yВ2, yA1 ¹ yA2

Тогда y* =  yB1;

где .

5.     xA1 = xA2,

,     тогда   x* = xA1, y* = yB1

yB1 = yB2

6.     xB1 = xB2,

, тогда   x* = xB1, y* = yA1

yA1 = yA2

7.     xA1 = xA2,

xB1 = xB2 ,    тогда  пересечение отсутствует

xA1 ¹ xB1

8.     yA1 = yA2,

yB1 = yB2 ,    тогда  пересечение отсутствует

yA1 ¹ yB1

9.     к1 = к2,

,        тогда  пересечение отсутствует (рис. 4.6)

b1 ¹ b2

10.   xA1 = xA2,     тогда  оба отрезка находятся на