Опубликован: 28.07.2007 | Доступ: свободный | Студентов: 2026 / 503 | Оценка: 4.53 / 4.26 | Длительность: 25:10:00
ISBN: 978-5-9556-0096-3
Специальности: Программист
Лекция 10:

Параллельные методы на графах

10.2. Задача нахождения минимального охватывающего дерева

Охватывающим деревом (или остовом ) неориентированного графа G называется подграф T графа G, который является деревом и содержит все вершины из G. Определив вес подграфа для взвешенного графа как сумму весов входящих в подграф дуг, под минимально охватывающим деревом (МОД) T будем понимать охватывающее дерево минимального веса. Содержательная интерпретация задачи нахождения МОД может состоять, например, в практическом примере построения локальной сети персональных компьютеров с прокладыванием соединительных линий связи минимальной длины. Пример взвешенного неориентированного графа и соответствующего ему минимально охватывающего дерева приведен на рис. 10.6.

Пример взвешенного неориентированного графа (а) и соответствующему ему минимально охватывающего дерева (б)

Рис. 10.6. Пример взвешенного неориентированного графа (а) и соответствующему ему минимально охватывающего дерева (б)

Дадим общее описание алгоритма решения поставленной задачи, известного под названием метода Прима ( the Prim method ); более полная информация может быть получена, например, в [ [ 26 ] ].

10.2.1. Последовательный алгоритм Прима

Алгоритм начинает работу с произвольной вершины графа, выбираемой в качестве корня дерева, и в ходе последовательно выполняемых итераций расширяет конструируемое дерево до МОД. Пусть VT есть множество вершин, уже включенных алгоритмом в МОД, а величины di, 1<=i<=n, характеризуют дуги минимальной длины от вершин, еще не включенных в дерево, до множества VT, т.е.

\forall i \notin V_T \Rightarrow d_i = \min\{ w(i,u):u\in V_T,(i,u)\in R\}
(если для какой-либо вершины i\notin V_{T} не существует ни одной дуги в VT, значение di устанавливается равным \infty ). В начале работы алгоритма выбирается корневая вершина МОД s и полагается VT={s}, ds=0.

Действия, выполняемые на каждой итерации алгоритма Прима, состоят в следующем:

  • определяются значения величин di для всех вершин, еще не включенных в состав МОД;
  • выбирается вершина t графа G, имеющая дугу минимального веса до множества V_{T}t:d_{t},\ i\notin V_{T} ;
  • вершина t включается в VT.

После выполнения n-1 итерации метода МОД будет сформировано. Вес этого дерева может быть получен при помощи выражения

W_T = \sum_{i=1}^n d_i.

Трудоемкость нахождения МОД характеризуется квадратичной зависимостью от числа вершин графа T1~n2.

10.2.2. Разделение вычислений на независимые части

Оценим возможности параллельного выполнения рассмотренного алгоритма нахождения минимально охватывающего дерева.

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

Распределение данных между процессорами вычислительной системы должно обеспечивать независимость перечисленных операций алгоритма Прима. В частности, это может быть реализовано, если каждая вершина графа располагается на процессоре вместе со всей связанной с вершиной информацией. Соблюдение данного принципа приводит к тому, что при равномерной загрузке каждый процессор pj, 1<=j<=p, должен содержать:

  • набор вершин
    V_j=\{\nu_{i_j +1}, \nu_{i_j +2}, \ldots, \nu_{i_j +k} \}, \;
i_j = k\cdot(j-1), k=\lceil n/p\rceil;
  • соответствующий этому набору блок из k величин
    \Delta_j = \{d_{i_j +1},d_{i_j +2},\ldots,d_{i_j +k}\};
  • вертикальную полосу матрицы смежности графа G из k соседних столбцов
    A_j=\{\alpha_{i_j +1},\alpha_{i_j +2},\ldots,\alpha_{i_j +k}\} (\alpha_s \text{ есть } s\text{-й столбец матрицы } A);
  • общую часть набора Vj и формируемого в процессе вычислений множества вершин VT.

Как итог можем заключить, что базовой подзадачей в параллельном алгоритме Прима может служить процедура вычисления блока значений \Delta _{j} для вершин Vj матрицы смежности A графа G.

10.2.3. Выделение информационных зависимостей

С учетом выбора базовых подзадач общая схема параллельного выполнения алгоритма Прима будет состоять в следующем:

  • определяется вершина t графа G, имеющая дугу минимального веса до множества VT. Для выбора такой вершины необходимо осуществить поиск минимума в наборах величин di, имеющихся на каждом из процессоров, и выполнить сборку полученных значений на одном из процессоров;
  • номер выбранной вершины для включения в охватывающее дерево передается всем процессорам;
  • обновляются наборы величин di с учетом добавления новой вершины.

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

10.2.4. Масштабирование и распределение подзадач по процессорам

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

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