
Лабораторные работы / Лабораторная работа 4 / Поиск минимального оставного дерева (Машеров)
.docxНациональный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №4
по дисциплине «Параллельные системы и параллельное программирование»
тема: «Поиск минимального оставного дерева с использованием нитевого распараллеливания.»
Выполнил:
Машеров Д.Е.
А-13-08
Москва
2012 г.
Постановка задачи
Дана граф, требуется найти минимальное оставное дерева этого графа.
Охватывающим деревом (или остовом ) неориентированного графа G называется подграф T графа G, который является деревом и содержит все вершины из G. Определив вес подграфа для взвешенного графа как сумму весов входящих в подграф дуг, под минимально охватывающим деревом (МОД) T понимается охватывающее дерево минимального веса.
Последовательный алгоритм.
Используется алгоритм Прима.
Алгоритм
начинает работу с произвольной вершины
графа, выбираемой в качестве корня
дерева, и в ходе последовательно
выполняемых итераций расширяет
конструируемое дерево до МОД. Пусть
есть множество вершин, уже включенных
алгоритмом в МОД, а величины
,
1<=
<=n, характеризуют дуги минимальной
длины от вершин, еще не включенных в
дерево, до множества
,
т.е.
(если для
какой-либо вершины не существует ни
одной дуги в
,
значение
устанавливается равным ). В начале
работы алгоритма выбирается корневая
вершина МОД s и полагается
={s},
=0.
Действия, выполняемые на каждой итерации алгоритма Прима, состоят в следующем:
-
определяются значения величин di для всех вершин, еще не включенных в состав МОД;
-
выбирается вершина t графа G, имеющая дугу минимального веса до множества
;
-
вершина t включается в
.
После выполнения n-1 итерации метода МОД будет сформировано. Вес этого дерева может быть получен при помощи выражения
Параллельный алгоритм.
Итерации метода должны выполняться последовательно и, тем самым, не могут быть распараллелены. С другой стороны, выполняемые на каждой итерации алгоритма действия являются независимыми и могут реализовываться одновременно.
Каждому потоку сопоставляется свой набор вершин графа.
На каждой
итерации потоки находят вершину t и дугу
на своем наборе вершин. После чего веса
этих дуг сравниваются и находится дуга
с минимальным весом уже во всем графе.
Вершина, инцидентая найденной дуге,
включается в множество
.
Результаты вычислительного эксперимента
-
Количество вершин графа: 5 000
Число исполнителей |
Время решения, секунд |
Ускорение |
1 |
347,497 |
|
2 |
174,977 |
1,99 |
3 |
118,731 |
2,93 |
4 |
95,798 |
3,63 |
5 |
94,552 |
3,68 |
6 |
81,686 |
4,25 |
7 |
71,231 |
4,88 |
8 |
64,493 |
5,39 |
-
Количество вершин графа: 10 000
Число исполнителей |
Время решения |
Ускорение |
1 |
2638,806 |
|
2 |
1332,934 |
1,98 |
3 |
894,642 |
2,95 |
4 |
713,098 |
3,70 |
5 |
738,135 |
3,57 |
6 |
629,8 |
4,19 |
7 |
557,38 |
4,73 |
8 |
496,1 |
5,32 |