структуры данных}
структуры данных}
var m,i,j:integer;
begin
for i:=1 to N do for j:=1 to N do D[i,j]:=A[i,j];
for i:=1 to N do D[i,i]:=0;
for m:=1 to N do for i:=1 to N do for j:=1 to N do {основной цикл}
D[i,j]:=min{D[i,j],D[i,m]+D[m,j]};
end;
Пример
Примечание. Верхний индекс у D указывает номер итерации (значение m в процедуре Distance).
0 1 2 1 0 1 2 1 0 1 2 1
2 0 7 ? 2 0 4 3 2 0 4 3
D0= 6 5 0 2 D1= 6 5 0 2 D2=D1 D3= D2 D4= 3 4 0 2
1 ? 4 0 1 2 3 0 1 2 3 0
Расстояния между парами вершин дает D. Для вывода самих кратчайших путей введем матрицу M того же типа, что и D. Элемент M[i,j] определяет предпоследнюю вершину кратчайшего пути из i в j.
Процедура Distance претерпит небольшие изменения. В том случае, когда D[i,j] больше D[i,m]+D[m,j], изменяется не только D[i,j], но и M[i,j]. M[i,j] присваивается значение M[m,j]. Для нашего примера изменения M выглядят следующим образом.
1 1 1 1 1 1 1 1 1 1 1 1
2
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа