Алгоритмы\Алгоритм Форда-Беллмана
Кратчайшие пути из одной вершины во все вершины графа. Алгоритм Форда-Беллмана
Итак, дан граф G=(V,E), каждому ребру [i,j] которого присвоен вес C[i,j] (если ребро [i,j] не существует, то C[i,j]=∞). Требуется найти кратчайшие пути от вершины v до всех вершин графа.
Обозначим через Distk[u] наименьшую длину пути из v в u, проходящего менее чем через k вершин, тогда
Dist0[u]=C[v,u]
Distk+1[v]=min(Distk[v],min(Distk[i]+C[i,v]) для всех i=1..n)
Distn - массив искомых расстояний. Сложность этого алгоритма O(n3), но время можно сократить до O(n2), если все веса C[i,j] неотрицательны (см. алгоритм Дейкстры).
Скачать исходник (Pascal)
© JlC, 2005
|