Сравнительный анализ параллельных алгоритмов поиска кратчайших путей на графах
|
Введение
Глава 1. Поиск кратчайших расстояний в графах
1.1Основные понятия теории графов
1.2Задачи поиска кратчайших путей на графах
1.3.Методы решения задачи поиска кратчайшего расстояния от
фиксированной вершины
1.3.1Алгоритм Дейкстры
1.3.2. Алгоритм Беллмана-Форда
1.4.Методы решения задачи поиска кратчайших расстояний между каждой парой вершин
1.4.1Алгоритм Флойда
1.4.2Алгоритм Джонсона
Глава 2. Реализация и тестирование алгоритмов
2.1Исходные данные
2.1.1Формат данных
2.1.2Обработка данных
2.2Реализация алгоритма Флойда
2.2.1Последовательный алгоритм
2.2.2Параллельный алгоритм
2.3Реализация алгоритма Джонсона
2.3.1Последовательный алгоритм
2.3.2Параллельный алгоритм
Глава 3. Сравнительный анализ реализаций
3.1Тестовая инфраструктура
3.2Практическое сравнение реализаций
3.2.1Параллельный алгоритм Флойда
3.2.2Параллельный алгоритм Джонсона
3.2.3Сравнение алгоритмов между собой
Заключение
Список используемой литературы
Приложение А
Приложение B
Глава 1. Поиск кратчайших расстояний в графах
1.1Основные понятия теории графов
1.2Задачи поиска кратчайших путей на графах
1.3.Методы решения задачи поиска кратчайшего расстояния от
фиксированной вершины
1.3.1Алгоритм Дейкстры
1.3.2. Алгоритм Беллмана-Форда
1.4.Методы решения задачи поиска кратчайших расстояний между каждой парой вершин
1.4.1Алгоритм Флойда
1.4.2Алгоритм Джонсона
Глава 2. Реализация и тестирование алгоритмов
2.1Исходные данные
2.1.1Формат данных
2.1.2Обработка данных
2.2Реализация алгоритма Флойда
2.2.1Последовательный алгоритм
2.2.2Параллельный алгоритм
2.3Реализация алгоритма Джонсона
2.3.1Последовательный алгоритм
2.3.2Параллельный алгоритм
Глава 3. Сравнительный анализ реализаций
3.1Тестовая инфраструктура
3.2Практическое сравнение реализаций
3.2.1Параллельный алгоритм Флойда
3.2.2Параллельный алгоритм Джонсона
3.2.3Сравнение алгоритмов между собой
Заключение
Список используемой литературы
Приложение А
Приложение B
Алгоритмы поиска кратчайших путей на графах нашли свое применение в различных областях и сферах деятельности человека. Такие алгоритмы используются в картографических сервисах, при построении пути GPS-навигатора, для представления и анализа дорожной сети и во многих других областях.
При проектировании компьютерных сетей, телевизионных линий, трубопроводов и строительстве дорог необходимо минимизировать затраты на прокладку коммуникаций. Прежде всего, целесообразно выбрать минимальный по длине маршрут прокладки коммуникаций. Например, необходимо соединить телефонным или оптоволоконным кабелем несколько зданий, расстояния между которыми различны. Возникает задача определения маршрута прокладки кабеля минимальной длины, но при этом к каждому зданию. Для решения таких задач часто используют теорию графов.
В настоящее время существует большое число алгоритмов и подходов, которые решают данные задачи. Кроме того, в большинстве своем алгоритмы можно логически разделить на два класса - алгоритмы поиска кратчайшего расстояния от одной вершины до всех остальных и алгоритмы поиска кратчайших расстоянии между каждой парой вершин. Из первого класса самыми яркими представителями являются различные модификации алгоритмов Дейкстры и Беллмана-Форда. Для решения задач второго класса часто используются алгоритмы Флойда-Уоршелла и алгоритм Джонсона.
Наиболее распространённой библиотекой, использующейся для решения этих задач, является BGL (Boost Graph Library). Также для работы с графами используется библиотека LEDA. Однако эти библиотеки включают в себя только последовательные версии алгоритмов для решения задач на графах.
Актуальность:
С ростом многопроцессорных архитектур мы получили мощный инструмент для эффективного расчета искомых расстояний - мы получили возможность запускать эти алгоритмы на нескольких вычислительных ядрах. При этом в контексте с параллельными алгоритмами на графах встал вопрос об эффективном использовании ресурсов системы. Эта задача, однако, не имеет такого высокого разнообразия решений, как в случае однопоточного алгоритма. Существующие же решения довольно специфичны и не всегда работают эффективно на всех графовых структурах.
Объект работы: параллельный алгоритм нахождения кратчайших путей в графе.
Предмет исследования: сравнительный анализ параллельных
реализаций алгоритмов нахождения кратчайшего пути на графе на языке программирования C++.
Цель работы: реализовать параллельные версии алгоритмов
нахождения кратчайших путей на графе, выявить их достоинства и недостатки.
Для достижения цели работы необходимо решить следующие задачи:
1)Рассмотреть основные понятие теории графов и алгоритмы решения классической задачи на графах.
2)Реализовать параллельные версии распространенных и востребованных алгоритмов на языке C++.
3)Проверить работоспособность и корректность работы программ.
4)Выявить достоинства, каждой из реализаций алгоритмов.
Отчет состоит из введения, трех глав и заключения.
В первой главе представлены теоретические аспекты теории графов, основные алгоритмы для решения задач с графами.
Во второй главе описана реализация параллельных алгоритмов Флойда и Джонсона на языке C++, и тестирование их работы.
В третьей главе производится сравнительный анализ реализаций.
При проектировании компьютерных сетей, телевизионных линий, трубопроводов и строительстве дорог необходимо минимизировать затраты на прокладку коммуникаций. Прежде всего, целесообразно выбрать минимальный по длине маршрут прокладки коммуникаций. Например, необходимо соединить телефонным или оптоволоконным кабелем несколько зданий, расстояния между которыми различны. Возникает задача определения маршрута прокладки кабеля минимальной длины, но при этом к каждому зданию. Для решения таких задач часто используют теорию графов.
В настоящее время существует большое число алгоритмов и подходов, которые решают данные задачи. Кроме того, в большинстве своем алгоритмы можно логически разделить на два класса - алгоритмы поиска кратчайшего расстояния от одной вершины до всех остальных и алгоритмы поиска кратчайших расстоянии между каждой парой вершин. Из первого класса самыми яркими представителями являются различные модификации алгоритмов Дейкстры и Беллмана-Форда. Для решения задач второго класса часто используются алгоритмы Флойда-Уоршелла и алгоритм Джонсона.
Наиболее распространённой библиотекой, использующейся для решения этих задач, является BGL (Boost Graph Library). Также для работы с графами используется библиотека LEDA. Однако эти библиотеки включают в себя только последовательные версии алгоритмов для решения задач на графах.
Актуальность:
С ростом многопроцессорных архитектур мы получили мощный инструмент для эффективного расчета искомых расстояний - мы получили возможность запускать эти алгоритмы на нескольких вычислительных ядрах. При этом в контексте с параллельными алгоритмами на графах встал вопрос об эффективном использовании ресурсов системы. Эта задача, однако, не имеет такого высокого разнообразия решений, как в случае однопоточного алгоритма. Существующие же решения довольно специфичны и не всегда работают эффективно на всех графовых структурах.
Объект работы: параллельный алгоритм нахождения кратчайших путей в графе.
Предмет исследования: сравнительный анализ параллельных
реализаций алгоритмов нахождения кратчайшего пути на графе на языке программирования C++.
Цель работы: реализовать параллельные версии алгоритмов
нахождения кратчайших путей на графе, выявить их достоинства и недостатки.
Для достижения цели работы необходимо решить следующие задачи:
1)Рассмотреть основные понятие теории графов и алгоритмы решения классической задачи на графах.
2)Реализовать параллельные версии распространенных и востребованных алгоритмов на языке C++.
3)Проверить работоспособность и корректность работы программ.
4)Выявить достоинства, каждой из реализаций алгоритмов.
Отчет состоит из введения, трех глав и заключения.
В первой главе представлены теоретические аспекты теории графов, основные алгоритмы для решения задач с графами.
Во второй главе описана реализация параллельных алгоритмов Флойда и Джонсона на языке C++, и тестирование их работы.
В третьей главе производится сравнительный анализ реализаций.
В ходе выполнения бакалаврской работы рассмотрены теоретические аспекты теории графов, алгоритмы решения классической задачи нахождение кратчайшего пути, достоинства и недостатки алгоритмов, а также реализации параллельных алгоритмов Беллмана-Форда и Джонсона на языке программирования C++.
Поиск кратчайшего пути - важная задача, возникающая в разных областях науки и техники: в экономике, робототехнике, в компьютерных играх и так далее. Исходя из того, что для решения всех четырех классических типов задач поиска кратчайших путей на графе, достаточно решить задачу 4 типа (нахождения кратчайшего пути от всех вершин ко всем вершинам), были реализованы параллельные версии классических алгоритмов для решения задач 4 типа.
В результате работы были пошагово реализованы параллельные алгоритмы Флойда, Джонсона на языке программирования C++ с применением технологии параллельного программирования OpenMP.
Вычислительные эксперименты, состоящие в сравнении времени работы данных параллельных алгоритмов, с последовательными аналогами, показали, что параллельный алгоритм Флойда позволяет получить значительно лучшее ускорение, чем параллельный алгоритм Джонсона.
Алгоритм Флойда так же показал, что с возрастанием количества вершин графа наибольшее ускорение получается при использовании наибольшего количества потоков. И напротив, для небольших графов выгоднее использовать меньшее количество потоков.
Однако в рамках рассмотренной задачи с графом карты дорог, алгоритм Джонсона значительно выигрывает, за счет того, что в основе лежит алгоритм Дейкстры эффективно работающий на разряженных графах.
Поиск кратчайшего пути - важная задача, возникающая в разных областях науки и техники: в экономике, робототехнике, в компьютерных играх и так далее. Исходя из того, что для решения всех четырех классических типов задач поиска кратчайших путей на графе, достаточно решить задачу 4 типа (нахождения кратчайшего пути от всех вершин ко всем вершинам), были реализованы параллельные версии классических алгоритмов для решения задач 4 типа.
В результате работы были пошагово реализованы параллельные алгоритмы Флойда, Джонсона на языке программирования C++ с применением технологии параллельного программирования OpenMP.
Вычислительные эксперименты, состоящие в сравнении времени работы данных параллельных алгоритмов, с последовательными аналогами, показали, что параллельный алгоритм Флойда позволяет получить значительно лучшее ускорение, чем параллельный алгоритм Джонсона.
Алгоритм Флойда так же показал, что с возрастанием количества вершин графа наибольшее ускорение получается при использовании наибольшего количества потоков. И напротив, для небольших графов выгоднее использовать меньшее количество потоков.
Однако в рамках рассмотренной задачи с графом карты дорог, алгоритм Джонсона значительно выигрывает, за счет того, что в основе лежит алгоритм Дейкстры эффективно работающий на разряженных графах.
Подобные работы
- Сравнительный анализ параллельных алгоритмов поиска кратчайших путей на графах
Бакалаврская работа, информатика. Язык работы: Русский. Цена: 4350 р. Год сдачи: 2017 - Динамическая адаптация метода имитации отжига для решения задачи коммивояжера
Магистерская диссертация, информационные системы. Язык работы: Русский. Цена: 5500 р. Год сдачи: 2018





