ЭмблемаGraphTheory

Теория графов. Определения. Алгоритмы. Исходники
Главная
Общие сведения
Глоссарий
Алгоритмы
Программы
Литература
Ссылки
Гостевая книга
Связь

Алгоритмы\Алгоритм Флойда

Кратчайшие пути между всеми парами вершин. Алгоритм Флойда

Пусть требуется найти кратчайшие пути между всеми парами вершин графа. Алгоритм Флойда позволяет сделать это за время O(n3).
Итак, есть граф G=(V,E), каждой дуге [i,j] которого сопоставлена стоимость C[i,j]. В результате должна быть получена матрица кратчайших путей A размера nxn, где n - количество вершин в графе.
Вычисления проводятся за n итераций.
Для любого k=0..n обозначим через Ak[i,j] значение длины кратчайшего пути из вершины i в вершину j при использовании вершин с номерами не более k.
Отсюда,

A0[i,j]=C[i,j]
Ak+1[i,j]=min(Ak[i,j],Ak[i,k+1]+Ak[k+1,j])

В нижней формуле выбор осуществляется меньшего из двух путей: содержащего вершину (k+1) и не содержащего ее.

Скачать исходник (Pascal)

| Главная | Общие сведения | Глоссарий | Алгоритмы | Программы | Литература | Ссылки |

© JlC, 2005

Hosted by uCoz