Самостоятельная работа на тему: > Студент группы №233-21 Ат-Сервис Факультета "Компьютерный инжиниринг " Ражабов Хаётжон Проверил


Download 139.58 Kb.
bet2/5
Sana03.02.2023
Hajmi139.58 Kb.
#1156430
TuriСамостоятельная работа
1   2   3   4   5
Bog'liq
САМОСТОЯТЕЛЬНАЯ РАБОТА

Описание алгоритма.


Мы считаем, что граф не содержит цикла отрицательного веса. Случай наличия отрицательного цикла будет рассмотрен ниже в отдельном разделе.
Заведём массив расстояний  , который после отработки алгоритма будет содержать ответ на задачу. В начале работы мы заполняем его следующим образом:  , а все остальные элементы  равны бесконечности  .
Сам алгоритм Форда-Беллмана представляет из себя несколько фаз. На каждой фазе просматриваются все рёбра графа, и алгоритм пытается произвести релаксацию (relax, ослабление) вдоль каждого ребра  стоимости  . Релаксация вдоль ребра — это попытка улучшить значение  значением  . Фактически это значит, что мы пытаемся улучшить ответ для вершины  , пользуясь ребром  и текущим ответом для вершины  .
Утверждается, что достаточно  фазы алгоритма, чтобы корректно посчитать длины всех кратчайших путей в графе (повторимся, мы считаем, что циклы отрицательного веса отсутствуют). Для недостижимых вершин расстояние  останется равным бесконечности  .
Реализация.


Для алгоритма Форда-Беллмана, в отличие от многих других графовых алгоритмов, более удобно представлять граф в виде одного списка всех рёбер (а не  списков рёбер — рёбер из каждой вершины). В приведённой реализации заводится структура данных  edge для ребра. Входными данными для алгоритма являются числа n,m, список e рёбер, и номер стартовой вершины  . Все номера вершин нумеруются с 0 по  .

Download 139.58 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling