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

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

Дано: непyстой взвешенный гpаф G=(V, R) с пpоизвольными весами ребер (дуг). Требуется найти длины кpатчайших пyтей между всеми парами вершин графа, если в графе нет циклов (контуров) отрицательной суммарной длины, либо обнаружить наличие таких контуров.

Инициализация:

1. Построим матрицу A0 размерности n x n, элементы которой определяются по правилу:

  1. dii0= 0;
  2. dij0= Weight(vi, vj), где i<>j, если в графе существует ребро (дуга) (vi, vj);
  3. dij0= -1 , где 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 < n, то повторяем шаг (1), иначе элементы последней построенной матрицы D|n| равны длинам кратчайших путей между соответствующими вершинами; ВЫХОД.

КОНЕЦ

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012