Новости
О Центре
Кластер
Обучение
Основной курс по параллельному программированию
Учебные курсы
Магистратура
Дополнительное образование
Работы студентов
Библиотека
Исследования
Конференции
Полезные ссылки
NVIDIA
Контакты
О сайте
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Метод решения

Вход: непустой взвешенный граф G =(V, E) с произвольными весами ребер. Вершины графа пронумерованы от 1 до n. Граф G представлен матрицей смежности.

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

Алгоритм:

Пусть di,jk – длина кратчайшего пути от i до j, который кроме самих вершин i, j проходит только через вершины 1…k.

При этом матрица смежности D0 = ( di,j0 ).

Для di,jk возможны два варианта (выбирается минимальный из них с учётом способа указания в матрице смежности несуществующих рёбер):

1) Кратчайший путь между i и j не проходит через вершину k, тогда di,jk = di,jk-1.

2) Существует более короткий путь между i и j, проходящий через k, тогда он сначала идёт от i до k, а потом от k до j. В этом случае, di,jk = di,kk-1 + dk,jk-1.

Алгоритм Флойда последовательно вычисляет все значения di,jk, для k от 1 до n. Полученные значения di,jn являются длинами кратчайших путей между вершинами i и j. Решением является матрица Dn = ( di,jn ).

Сложность алгоритма Флойда составляет O(n3).

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012