Нахождение кратчайших путей:алгортм Флоида:          

Алгоритм Флоида выгоднее использовать, когда нужно найти кратчайшие расстояния от всех до всез вершин(здесь он хоть и имеет сложность O(N^3), но за счет простоты работает быстрее,чем дейкстра ? применяемая поочередно для всех вершин). При работе алгоритма используются следующие структуры данных: A[i,j] - текущее кратчайшее расстояние от I до J(Если пока не найдено, то бесконечность/очень большое число). Собственно сам алгоритм:

0. A[I,J]=длине ребра из I в J, если оно существует, и бесконечности/очень большому числу, если нет.
1. Для всех К от 1 до n повторить
2. Для всех I от 1 до n повторить
3. Для всех Jот 1 до n повторить
4. Если A[I,K]+A[K,I]<A[I,J], то A[I,J]:=A[I,K]+A[K,I];

Сложность алгоритма - O(N^3)

 

Hosted by uCoz