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



Наконец, рассматриваем вершину v6. Значение нижней границы диаметра не изменяется: dl = max(dl, ε(v6)) = (18, 15) = 18, верхняя граница уменьшается: du = min(du, 2∙ε(v5)) = (34, 30) = 30. Уточняем нижнюю и верхнюю границы эксцентриситета вершины v6:

εl(v6) = max(εl(v6), ε(v6) – ,

) = max(15, 15 – 15, 15) = 15;

εu(v6) = min(εu(v6), ε(v6) + ) = min(19, 15 + 0) = 15.

Вершина v6 исключается из рассмотрения, так как εl(v6) = εu(v6).

 

  v1 v2 v3 v4 v5 v6
εl 17 18 17 17 17 15
εu 17 24 17 34 28 15

 

Таким образом, из рассмотрения исключены все вершины и найден диаметр графа d = dl = 18 и две периферийные вершины – v2 и v5 (запомненные при нахождении эксцентриситета наибольшей величины ε(v5)). В данном примере дальнейших ход алгоритма с попарной проверкой вершин оказался не нужным.

 

2.7.4 Уменьшение размерности графа транспортной сети

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

Рассматривается простой связный неориентированный нагруженный граф G = (V, X, U), где мощность множества вершин |V| = n.

Рассматриваемые задачи аппроксимации состоят в сопоставлении исходному графу G аппроксимирующего графа Ga = (Va, Xa, Ua) меньшей размерности: |Va| = na, где .

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

Метавершины могут быть подмножеством исходного множества вершин  или не содержаться в V (как частично, так и полностью). Вес ребра между метавершинами  и  графа Ga будем обозначать , расстояние между этими же метавершинами . Будем обозначать  метавершину графа Ga, аппроксимирующую вершину vi графа G.

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

                             .               (2.27)

Рассмотрим две задачи аппроксимации:

1) уменьшение размерности Ga так, чтобы погрешность Ae не превосходила заданной величины;

2) уменьшение погрешности Ae при заданной размерности Ga.

 

Задача 1. Дан простой связный неориентированный нагруженный граф G = (V, X, U) с неотрицательной вещественной весовой функцией на ребрах  и вещественное число emax > 0. Найти граф Ga = (Va, Xa, Ua) и функцию  такие, что подграфы Gj(Vj):  связны,  и .

Задача 2. Дан простой связный неориентированный нагруженный граф G = (V, X, U): |V| = n с неотрицательной вещественной весовой функцией на ребрах U: X → [0, ∞) и целое число k: n > k > 0.

Найти граф Ga = (Va, Xa, Ua): |Va| = k и функцию соответствия

такие, что подграфы  связны и Ae → min.

Обе рассматриваемые задачи являются NP -трудными (см. Прил. 1). Эти задачи при некоторых допущениях могут быть сформулированы в терминах задачи разбиения графа. Введем обозначения, аналогичные рассмотренным выше: диаметр множества вершин , радиус множества вершин . Вершину, на которой достигается r(Vi), будем называть центром множества вершин Vi и обозначать c(Vi).

Будем аппроксимировать вершины подмножеств разбиения Vi центрами этих подмножеств . Веса ребер в графе Ga между этими центрами будем полагать равными расстояниям между центрами в исходном графе G: . Дополнительно будем требовать связность всех подграфов разбиения Gi(Vi).

При выполнении всех этих условий для погрешности аппроксимации справедливо . Здесь ,  – максимальный, а  – второй по величине радиусы множеств разбиения Vi. Действительно, в этом случае погрешность аппроксимации внутри подграфов не превосходит
dmax/2 ≤ , а погрешность аппроксимации между вершинами vi и vj из разных подграфов не превосходит суммы расстояний от этих вершин до центров соответствующих подграфов, т. е. .

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

Задача 1*. Дан простой связный неориентированный нагруженный граф G = (V, X, U) с неотрицательной вещественной весовой функцией на ребрах  и вещественное число emax > 0. Найти разбиение множества вершин графа на попарно непересекающиеся подмножества {V1,V2,...,Vk}: , такое, что все подграфы Gi(Vi), порожденные этими множествами, связны,  и k→ min.

Задача 2*. Дан простой связный неориентированный нагруженный граф G = (V, X, U):|V| = n с неотрицательной вещественной весовой функцией на ребрах  и целое число k: n > k > 0. Найти разбиение множества вершин графа на k попарно непересекающихся подмножеств {V1,V2,...,Vk}: , такое, что все подграфы Gi(Vi), порожденные этими множествами, связны и .

Алгоритм для задачи 1 (A1)

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

Пусть на возможность удаления первой рассматривается вершина vi степени m смежная с вершинами . Удаление vi влечет необходимость изменения весов ребер только между смежными с ней вершинами . Пересчет весов данных ребер будем производить по формуле

  

После такого пересчета погрешность аппроксимации между всеми неудаленными вершинами останется равной нулю. Поэтому для минимизации общей погрешности аппроксимации необходимо поставить в соответствие удаленной вершине vi такую метавершину vc(i), которая сделает как можно меньшим максимум абсолютной разности расстояний между vi, vc(i) и вершинами исходного графа: . В исходном графе расстояния от vi до любой вершины графа vj определялись формулой . После удаления vi расстояния между неудаленными вершинами  не изменились.
В качестве vc(i) будем выбирать ближайшую смежную с vi вершину , при этом погрешность аппроксимации увеличится не более чем на вес ребра .

В задаче 1 требуется, чтобы погрешность аппроксимации не превосходила некоторого заданного числа . Для достижения этого необходимо хранить информацию о погрешности , вносимой каждой из оставшихся вершин vl.  – максимально возможная погрешность аппроксимации между вершинами, аппроксимируемыми вершиной vl (вначале все ). Удаление вершины vi изменяет погрешность аппроксимирующей ее вершины vc(i) по правилу . В силу сохранения расстояний между оставшимися вершинами, для выполнения  необходимо, чтобы для всех пар оставшихся вершин (vl,vj) выполнялось , а это справедливо, если . Согласно этому, вершину vi можно удалять, когда для аппроксимирующей ее вершины vc(i) выполняется

                                                   (2.28)

Рассмотрение и удаление вершин может производиться различными способами. Одной из очевидных стратегий является удаление вершин в порядке роста добавляемой этими вершинами погрешности. Результаты тестирования алгоритма в [9] приводятся для случая, когда рассмотрение вершин происходит по мере роста их степеней. Такая стратегия показала наилучшие результаты на тестовых графах.

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

Пусть для всех множеств Vj найдены радиусы r(Vj) и центры c(Vj) (данные величины можно найти, используя алгоритмы быстрого поиска метрических характеристик из параграфа 2.7.3). Если для вершины  отсутствует путь до центра c(Vk) в графе Gk(Vk), то в пути от vi до c(Vk) в исходном графе G существует вершина .
В случае, если принадлежность вершины vi множеству Vl не увеличивает r(Vl) и у вершины vi принадлежность множеству не изменялась, полагаем c(i) = l. В противном случае все вершины vs пути от vi до vj в исходном графе G делаем принадлежащими множеству Vk, полагая c(s) = k. После каждого изменения принадлежности множеству какой-либо из вершин центры и радиусы изменившихся множеств Vk, Vl пересчитывается и процесс повторяется снова, до тех пор, пока не останется несвязных подграфов. После полагаем w(c(Vj), c(Vj)) = r(Vj), c(i) = c(Vj), .

В худшем случае, когда для полного графа выполняется «удаление» n − 2 вершин, сложность алгоритма составляет O(n3).

 

Алгоритм для задачи 2 (A2)

Для решения задачи 2 предлагается итерационный алгоритм, в основе которого лежит алгоритм из предыдущего параграфа (A 1). Итеративно ищется такое значение величины emax (и аппроксимация при этом значении), при котором решение задачи 1 алгоритмом A 1 позволит получить аппроксимирующий граф с числом вершин , где k – ограничение из задачи 2.

Для поиска такого emax используется предположение о зависимости  и метод последовательных приближений, состоящий в следующем. Задаются нижняя el и верхняя eu границы допуска emax для задачи 1. Примем нижнюю границу el = 0, исходя из того, что граф с погрешностью аппроксимации Ae = 0 обладает тем же числом вершин, что и исходный граф. Верхняя граница eu задается формулой , где q(vi) – ребро максимального веса вершины vi, так как при таком выборе допуска emax аппроксимирующий граф будет состоять из одной вершины. Далее на каждой итерации ищется решение задачи 1 при допуске emax = (el + eu)/2. Если число вершин аппроксимирующего графа при данном допуске больше искомого |Va| > k, изменяем верхнюю границу eu = (el + eu)/2, если же |Va| < k, изменяем нижнюю границу el = (el + eu)/2. На практике нахождение решения задачи с |Va| = k, не всегда является возможным, поэтому поиск решения останавливается при |Va| = k – D. В [9] использовалось значение D = 0,02×k.

 

Пример решения задачи аппроксимации

v Рассмотрим задачу 1 аппроксимации неориентированного нагруженного графа G (рис. 2.47). Требуется найти аппроксимирующий G граф Ga, минимизировав его порядок |Va| → min, так чтобы погрешность аппроксимации Ae (2.27) не превосходила заданной величины Ae £ emax. Зададим для данного примера emax = 30.

Вершины будем рассматривать в порядке роста степеней. Если существует более одной вершин одинаковой степени, рассматриваем их по росту вносимой погрешности . Если среди них есть несколько с одинаковой вносимой погрешностью, рассматриваем вершины в порядке возрастания номера. На начальном этапе все значения .

 

Рис. 2.47. Аппроксимируемый граф G

 

Первой рассматриваем вершину v1(степень 3 является наименьшей). Это вершина может быть аппроксимирована v3, так как  (согласно (2.28)). Удаляем вершину v1, пересчитываем веса ребер:


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

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






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