Таблица 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), (В1,В2), т.е.
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, тогда оба отрезка находятся на
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.