Новости
О Центре
Кластер
Обучение
Основной курс по параллельному программированию
Учебные курсы
Магистратура
Дополнительное образование
Работы студентов
Библиотека
Исследования
Конференции
Полезные ссылки
NVIDIA
Контакты
О сайте
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Метод решения

Последовательный алгоритм Флойда.
Алгоритм Флойда находит кратчайшие пути между любыми двумя узлами сети. В этом алгоритме сеть представлена в виде квадратной матрицы с n строками и n столбцами. Элемент (i, j) равен расстоянию dij от узла i к узлу j, которое имеет конечное значение, если существует дуга (i, j), и равен бесконечности в противном случае.
Покажем сначала основную идею метода Флойда. Пусть есть три узла i, j и k и заданы расстояния между ними. Если выполняется неравенство dij + djk < dik, то целесообразно заменить путь i -> k путем i -> j -> k. Такая замена (далее ее будем условно называть треугольным оператором) выполняется систематически в процессе выполнения алгоритма Флойда.

Треугольный оператор.
Последовательный алгоритм Флойда
for (k = 0; k < n; k++)
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
D[i, j] = min(D[i, j], D[i, k] + D[k, j]);
Основной шаг k. Задаем строку k и столбец k как ведущую строку и ведущий столбец. Над матрицей D выполняется n итераций. После k-й итерации Dij содержит значение наименьшей длины пути из вершины i в вершину j, причем путь не проходит через вершины с номерами большими k. Вычисление на k-ой итерации выполняется по формуле: min{D[i, j], D[i, k] + D[k,j]}(Рассматриваем возможность применения треугольного оператора ко всем элементам матрицы).
Для вычисления проводится сравнение величины Dijk-1 (то есть стоимость пути от вершины i к вершине j без участия вершины k или другой вершины с более высоким номером) с величиной Dikk-1+Dkjk-1 (стоимость пути от вершины i к вершине k плюс стоимость пути от вершины k до вершины j). Если путь через вершину k “дешевле”, чем Dijk-1, то величина Dijk изменяется.

Иллюстрация метода Флойда.

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012