Алгоритм Флойда. Delphi
Задача была поставлена так:
Написать программу, реализующую алгоритм Флойда. Входные данные заносить графически и вручную.
я не дружу с графическим вводом данных,как это сделать?)))
может у кого то есть?))
Суть Алгоритма Флойда,если надо:[INDENT][SIZE="2"][SIZE="1"]Дано: непyстой взвешенный гpаф G=(V, E) с пpоизвольными весами ребер (дуг). Требуется найти длины кpатчайших пyтей между всеми парами вершин графа, если в графе нет циклов (контуров) отрицательной суммарной длины, либо обнаружить наличие таких контуров.
Инициализация:
1. Построим матрицу D0 размерности |V| x |V|, элементы которой определяются по правилу:
1. dii0= 0;
2. dij0= Weight(vi, vj), где i<>j, если в графе существует ребро (дуга) (vi, vj);
3. dij0= бесконечность , где i<>j, если нет ребра (дуги) (vi, vj).
2. m:=0.
Основная часть:
1. Построим матрицу Dm+1 по Dm, вычисляя ее элементы следующим образом:
dijm+1=min{dijm, di(m+1)m + d(m+1)jm}, где i<>j; diim+1=0 (*).
Если dimm + dmim < 0 для какого-то i, то в графе существует цикл (контур) отрицательной длины, проходящий через вершину vi; ВЫХОД.
2. m:=m+1; если m<|V|, то повторяем шаг (1), иначе элементы последней построенной матрицы D|V| равны длинам кратчайших путей между соответствующими вершинами; ВЫХОД.
КОНЕЦ [/SIZE][/SIZE][/INDENT]
Всем спасибо! разобралась сама. тему можно считать закрытой. хотела удалить,но что то не поняла как это здесь сделать))))
спасибо за алгоритм Флойда! )))
пожалуста ^^ если он вам нужен