Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
21.03.2016
Размер:
267.78 Кб
Скачать

Результат

Пример: Маршрут из v1 в v3. Вес маршрута L13=5

s0=v1, k1=P13=2, s1=v2, k2=P23=5, s2=v5, k3=P53=3, s3=v3

маршрут v1v2v5v3

#define n 5 // В языке C удобно нумеровать вершины от 0 до n-1 typedef float sometype; sometype L[n][n], T; // тип значений весов int P[n][n], i,j,k; // номера вершин – целые числа

// L,P каким-либо образом инициализированы…

#define inf (-1) // inf –значение представления бесконечности

for (k=0;k<n;k++) // цикл по шагам (номерам промежуточных вершин)

//начала и концы не совпадают с промежуточной вершиной for (i=0;i<n;i++) // цикл по началам маршрутов

//цикл по концам маршрутов, если первая часть есть if ((i!=k)&& (L[i][k]!=inf)) for (j=0;j<n;j++)

// если вторая часть есть и не петля if ((j!=k)&&(j!=i)&&(L[k][j]!=inf)) {

T=L[i][k]+L[k][j];

if ((L[i][j]==inf)||(T<L[i][j])) {

L[i][j]=T;

P[i][j]=P[i][k];

}

}

Соседние файлы в папке lect