Приближённый алгоритм поиска p-медиан

Материал из testwiki
Перейти к навигации Перейти к поиску

Эвристический метод для нахождения p-медианы состоит в следующем: случайным образом выбираются p вершин, они образуют начальное множество S, аппроксимирующее p-медианное множество Xp*. Затем выясняется, может ли некоторая вершина xjXS заменить вершину xiS (как медианная вершина), для чего строят новое множество S*=(Sxj)xi и сравнивают передаточные числа σ(S*) и σ(S). Если σ(S*)<σ(S), то S заменяют на S*, которое лучше аппроксимирует p-медианное множество Xp*. Затем аналогично исследуется множество S* и т. д., пока не будет построено множество S', которое нельзя будет изменить по вышеуказанному принципу.

Алгоритм

Шаг 1. Выбрать некоторое множество S из p вершин в качестве начального приближения к p-медиане. И назовём все вершины xiS «неопробованными».

Шаг 2. Взять произвольную «неопробованную» вершину и для каждой вершины xiS вычислить «приращение» Δij, соответствующие замене вершины xi вершиной xj, то есть вычислить Δij=σ(S)σ((Sxj)xi).

Шаг 3. Найти Δi1j=max[Δij] по всем xiS.

а) Если Δi1j0, то назвать вершину xj «опробованной» и перейти к шагу 2.

б) Если Δiij0, то S(Sxj)xi, назвать вершину xj «опробованной» и перейти к шагу 2.

Шаг 4. Повторять шаги 2 и 3 до тех пор, пока все вершины из XS не будут опробованы. Эта процедура оформляется как цикл. Если при выполнении последнего цикла совсем не будет замещений вершин на шаге 3(a), то перейти к шагу 5. В противном случае, то есть если осуществлено некоторое замещение, назвать все вершины «неопробованными» и вернуться к шагу 2.

Шаг 5. Стоп. Текущее множество S является подходящей аппроксимацией p-медианного множества Xp*.

Пример

Легко заметить, что приведённый выше алгоритм не во всех случаях даёт оптимальный ответ. Рассмотрим пример (числа, стоящие около рёбер, равны соответствующим рёберным стоимостям, все вершины одинакового единичного веса):

Числа, стоящие около рёбер, равны соответствующим рёберным стоимостям, все вершины одинакового единичного веса

Если искать 2-медиану и в качестве начального множества S взять {x3, x6} с передаточным числом σ(S)=8, то никакое замещение только одной вершины не приводит к множеству с меньшим передаточным числом. Однако множество {x3, x6} не является 2-медианой данного графа, так как существуют два 2-медианных множества с передаточным числом 7: {x1, x4} и {x2, x5}.

Литература

Ссылки