Алгоритмы поиска остова во взвешенном графе: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
Нет описания правки
Нет описания правки
Строка 36: Строка 36:
== Вычисление 3-остова за линейное время ==
== Вычисление 3-остова за линейное время ==


Чтобы удовлетворять ограничениям 3-остова, вершина должна внести в остов вклад в размере в среднем <math>\sqrt{n}</math> дуг. Таким образом, вершины степени <math>O(\sqrt{n})</math> обработать легко, поскольку все их дуги могут быть выбраны для остова. Для вершин более высокой степени применяется схема кластеризации (группировки), основанная на доминирующих множествах.
Чтобы удовлетворять ограничениям 3-остова, вершина должна внести в остов вклад в размере в среднем <math>\sqrt{n}</math> дуг. Таким образом, вершины степени <math>O(\sqrt{n})</math> обработать легко, поскольку все их дуги могут быть выбраны для остова. Для вершин более высокой степени применяется схема кластеризации (группировки), основанная на ''доминирующих множествах''.
 
Вначале имеется множество дуг E’, инициализированное равным E, и пустой остов E<math>_{S}</math>. Алгоритм просматривает дуги E’, переносит некоторые из них в остов E<math>_{S}</math> и отбрасывает остальные. Это происходит в два этапа.
Вначале имеется множество дуг E’, инициализированное равным E, и пустой остов E<math>_{S}</math>. Алгоритм просматривает дуги E’, переносит некоторые из них в остов E<math>_{S}</math> и отбрасывает остальные. Это происходит в два этапа.


1. Формирование кластеров:
1. Формирование кластеров:


Выборка R V выполняется посредством независимого выбора каждой вершины с вероятностью <math>\frac{1}{\sqrt{n}}</math>. Кластеры будут сформированы вокруг этих выбранных вершин. Вначале кластеры представляют собой {{u} u R}. Каждая вершина u R называется центром своего кластера. Каждая невыбранная вершина v V R обрабатывается следующим образом:
Выборка <math>R \subset V</math> выполняется посредством независимого выбора каждой вершины с вероятностью <math>\frac{1}{\sqrt{n}}</math>. Кластеры будут сформированы вокруг этих выбранных вершин. Вначале кластеры представляют собой {{u}<math>\mid</math>u <math>\in </math> R}. Каждая вершина <math>u \in R</math> называется центром своего кластера. Каждая невыбранная вершина <math>v \in V - R</math> обрабатывается следующим образом:


(a) Если v не является смежной с какой-либо выбранной вершиной, то каждая дуга, инцидентная v, перемещается в E<math>_{S}</math>.
(a) Если v не является смежной с какой-либо выбранной вершиной, то каждая дуга, инцидентная v, перемещается в E<math>_{S}</math>.
(b) Если v является смежной с одной или несколькими выбранными вершинами, примем за N(v, R) ближайшего (1) к v соседа из числа выбранных вершин. Дуга (v , N(v, R)) и каждая инцидентная v дуга с весом, меньшим, чем у этой дуги, перемещаются в E<math>_{S}</math>. Затем вершина v добавляется в кластер с центром в N(v, R).
(b) Если v является смежной с одной или несколькими выбранными вершинами, примем за N(v, R) ближайшего (1) к v соседа из числа выбранных вершин. Дуга (v , N(v, R)) и каждая инцидентная v дуга с весом, меньшим, чем у этой дуги, перемещаются в E<math>_{S}</math>. Затем вершина v добавляется в кластер с центром в N(v, R).
На последнем шагу первого этапа все дуги (u, v) из E’, у которых u и v не входят в выборку и принадлежат к разным кластерам, отбрасываются.
На последнем шагу первого этапа все дуги (u, v) из E’, у которых u и v не входят в выборку и принадлежат к разным кластерам, отбрасываются.


4501

правка

Навигация