Ветвь 1. Попарная проверка вершин и нахождение диаметра 1 страница



Вход: граф G = (V, X, U), множества Vp, S,

    центральная вершина c , dl, du

Выход: диаметр графа, пара периферийных вершин

1. Сортировка пар

    Пары вершин  сортируются в порядке (2.15)

i = 1, j = 1, ppOK = 0

2. Проверка пар

    Для i от 1 до |Vp|–1

              Для j от i+1 до |Vp|                         

                       Если  удовлетворяют (2.14)

                                 ppOK = 1

                       Вычисляем diSj по (2.16)

                       Если diSj > dl

                                 Решаем SSSP( )

                                 Вычисляем dl, du по (2.7, 2.8)

                                 Если dl = du, d = dl, конец алгоритма

                                 Иначе отсекаем вершины по (2.9–2.12)

Иначе

Если ppOK = 0, d = dl, конец алгоритма

Иначе ppOK = 0, конец цикла по j.

Конец цикла по j

    Конец цикла по i

    Результат: d – диаметр графа.

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

После первоначального исключения вершин с использованием формул (2.7–2.12) граф приобретает вид, изображенный на рис. 2.43. Множества вершин, отмеченные цифрами, составляют неисключенные вершины Vp. Один из очевидных способов уменьшения числа рассматриваемых пар – не рассматривать пары, в которых обе вершины лежат близко друг к другу. На рис. 2.43 близко лежащие вершины образуют три явно выделяемых группы или кластера, обозначенные цифрами 1, 2 и 3. То есть для определения степени близости неисключенных вершин можно использовать кластеризацию вершин Vp на основании расстояний до некоторых опорных вершин.

Первые две опорные вершины pd1, pd2 определяются как элементы множества вершин с решенной задачей SSSP S, соединяемые путем максимальной длины

                                  .                     (2.17)

Каждая следующая опорная вершина pdi определяется как вершина vj, чье минимальное удаление  (2.18) от уже найденных опорных вершин  максимально (2.19). Поиск опорных вершин продолжается до тех пор, пока существует вершина vj, для минимального удаления которой справедливо неравенство .

                         ,             (2.18)

. (2.19)

После нахождения всех опорных вершин создается t множеств-кластеров C1,C2,…,Ct – по числу найденных опорных вершин. Первыми в кластеры добавляются найденные опорные вершины: C1 = {pd1},…,Ct = {pdt}. Каждая из оставшихся вершин vj множества Vp присоединяется к тому кластеру, чья опорная вершина находится к vj ближе, чем опорные вершины остальных кластеров – формула (2.20). В случае нескольких опорных вершин с минимальным до vj расстоянием, вершину можно присоединить к любому из кластеров этих опорных вершин.

                 .    (2.20)

После кластеризации всех вершин множества Vp можно рассматривать лишь пары, образованные вершинами из разных кластеров . Это позволяет значительно сократить число просматриваемых пар вершин, однако может быть не достаточным, если после кластеризации образуются два и более кластера большой мощности. Можно дополнительно уменьшить число просматриваемых пар, используя центры полученных кластеров.

Пусть у каждого кластера Ci вычислен центр ci. Тогда любую рассматриваемую пару кластеров Ci и Cj можно разбить, как схематически показано на рис. 2.45.

Рис. 2.45. Схематическое изображение разбиения кластеров вершин Ci и Cj

на 8 непересекающихся множеств. ci и cj – центральные вершины кластеров

 

Каждый кластер разбит на четыре подмножества. Например, кластер Ci разбит на:

1) ci – центральная вершина кластера;

2) Ari-окрестность центра кластера ci – вершины vi кластера Ci, для которых справедливо

                                             ;                                 (2.21)

3) C – вершины vi кластера Ci, расстояние между которыми и центром cj кластера Cj не больше расстояния между вершинами множества A и c j

                                       ;                          (2.22)

4) E – вершины кластера Ci не вошедшие ни в одно из этих множеств

                                          .                              (2.23)

Аналогичным образом определяется разбиение на подмножества кластера Cj. При таком разбиении кластеров и заданных величинах ri и rj, отвечающих равенству

                                          ,                              (2.24)

необходимо проверять на периферийность лишь пары вершин, образованные декартовыми произведениями множеств

                      , , , , , .          (2.25)

Действительно, расстояние между вершинами пар произведения  не больше нижней границы диаметра в силу (2.21) и (2.24). Расстояние между парами вершин  произведений  и  также не больше нижней границы диаметра: по (2.22) имеем для :

               .                 

Аналогично для произведения .

Для ускорения решения необходимо подобрать параметры ri, rj при известных расстояниях  для каждой пары кластеров Ci, Cj так, чтобы минимизировать общее количество пар сравнения:

              .  (2.26)

Поиск минимума (2.26) выполняется следующим образом. Интервал изменения  параметров ri, rj разбивается на k частей: . На первой итерации поиска величины параметров полагаются равными , . После этого вычисляется значение O из формулы (2.26). На каждой итерации l параметрам присваиваются значения ,  и вычисляется значение O. По окончании k+1 итерации поиска выбирается разбиение кластеров Ci, Cj с такими параметрами ri, rj, при которых было зафиксировано минимальное значение O. Ниже приводится описание данной ветви алгоритма, проверка пар вершин осуществляется схожим с приведенным для ветви 1 алгоритма образом.

 

Ветвь 2. Нахождение диаметра с сокращением числа пар

Вход: граф G = (V, X, U), множества Vp, S,

    dl, du

Выход: диаметр графа, пара периферийных вершин

1. Кластеризация вершин

    Вычисляются опорные вершины кластеров по формулам (2.17–2.19)

Все остальные вершины Vp кластеризуются по Ci с использованием (2.20)

Вычисляются центры ci всех кластеров Ci

2. Попарная проверка кластеров

    Для каждой пары Ci, Cj: j > i

Вычисляются ri, rj, удовлетворяющие (2.24), с минимумом (2.26)

Производится разбиение каждого кластера по (2.21–2.23)

Выполняется проверка пар вершин произведений (2.25)

 

Пример

v Задача 1

Рассмотрим неориентированный нагруженный граф и найдем его метрические характеристики (рис. 2.46).

 

Рис. 2.46. Пример неориентированного нагруженного графа

 

Представим данный нагруженный граф в виде матрицы длин ребер. Необходимо найти радиус, центр и диаметр графа.

 

 

  v1 v2 v3 v4 v5 v6
v1 0 7 9 21 2
v2 7 0 10 15
v3 9 10 0 11 14
v4 21 15 11 0 6
v5 6 0 9
v6 2 14 9 0

 

Сначала найдем радиус и один из центров графа, используя алгоритм Р. Зададим начальные значения нижней и верхней границ радиуса: rl = 0, ru = ∞. Далее определяем две первые вершины опорного множества P. Предположим, что в качестве d1 была выбрана вершина v1. Так как нам не известны кратчайшие расстояния от v1 до остальных вершин графа, решаем задачу SSSP(v1).

В результате получим видоизмененную матрицу длин ребер, где = = 21 заменяется на меньшее 17, =  заменяется на 11.

Определяем d2 по формуле (2.4), как самую удаленную вершину от d1 = v1. В данном случае самой удаленной оказывается вершина v4 с кратчайшим расстоянием до v1 равным , полагаем d2 = v4.

  v1 v2 v3 v4 v5 v6
v1 0 7 9 17 11 2
v2 7 0 10 15
v3 9 10 0 11 14
v4 17 15 11 0 6
v5 11 6 0 9
v6 2 14 9 0

 

Для v4 кратчайшие расстояния не вычислены, поэтому решаем SSSP(v4), получая следующие изменения в матрице длин ребер: =  заменяется на меньшее 15.

Находим вершину d3, определяемую как самую удаленную от d2. Ей является вершина v1 с кратчайшим расстоянием равным , полагаем d3 = v1. Так как справедливо равенство  – т. е. найдены две максимально удаленные друг от друга вершины – пополняем пустое до этого множество опорных вершин .

 

  v1 v2 v3 v4 v5 v6
v1 0 7 9 17 11 2
v2 7 0 10 15
v3 9 10 0 11 14
v4 17 15 11 0 6 15
v5 11 6 0 9
v6 2 14 15 9 0

 

Далее выполняется проверка претендентов на центральную вершину с использованием информации о расстояниях от вершин опорного множества P. По формуле (2.2) находим первого претендента на центральную вершину c1 – вершину, максимальное расстояние от которой до вершин множества P минимально среди всех остальных вершин. Таких вершин оказывается две:

1) v3 с ;

2) v5 с .

Выбираем любую из этих вершин, например, v3, полагая c1 = v3. Соответствующим образом изменяем нижнюю границу радиуса rl = 11.

Выполняем проверку претендента c1. Для претендента кратчайшие расстояния не найдены, потому решаем SSSP(c1 = v3), матрица длин ребер после этого принимает следующий вид.

 

  v1 v2 v3 v4 v5 v6
v1 0 7 9 17 11 2
v2 7 0 10 15
v3 9 10 0 11 17 11
v4 17 15 11 0 6 15
v5 11 17 6 0 9
v6 2 11 15 9 0

 


Дата добавления: 2021-02-10; просмотров: 88; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!