структуры данных}


структуры данных} 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
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz