ДонНТУ > Портал магистров ДонНТУ > Ганущак Надежда Константиновна |
Библиотека > Статья №10 Алгоритм Уоршелла-Флойда |
Романовский И.В. Алгоритм Уоршелла-Флойда Источник: При построении матрицы кратчайших расстояний между всеми вершинами графа используется идея построения на первоначальном этапе матрицы v(М,М) возможных одношаговых переходов из каждой вершины в каждую (т.е. в результате выполнения алгоритма образуется матрица кратчайших расстояний от любой одной вершины графа до любой другой или до самой себя): v[i,k]=min{l[u]|beg u=i, end u=k}
где v[i,k] – кратчайшее расстояние между вершинами i и k A затем эта матрица пересчитывается тройным циклом по множеству вершин, причем внешний цикл - по промежуточной вершине:
for (i in M) do Cмысл алгоритма в том, что когда при фиксированном i перебираются все возможные пары i1 и i2, то происходит сравнение лучшего из имеющихся к данному моменту путей от i1 до i2 путем, составленным из лучшего пути от i1 до i и лучшего пути от i до i2., и в результате этого сравнения может быть улучшен путь от i1 до i2. Сам путь, на котором достигается максимум, легко строится, если одновременно с матрицей v пересчитывать матрицу d[M,M], в которой d[i,k] – выходящая из i дуга, с которой начинается путь, ведущий в k (для пересчета этой матрицы при каждом исполнении оператора присваивания внутри тройного цикла должен исполняться еще один оператор d[i1,i2]:=d[i1,i] - переход изi1 в i2 должен быть таким же, как в i). По завершении расчетов путь из любой вершины в любую легко создается по данным матрицы d. <…> |
Наверх |