![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте, дайте пож. ссылочку на алгоритм Флойда-Уоршелла на Pascal или Delphi, а то в сети только на C++.
|
|
#2
|
||||
|
||||
|
ну так наверное не алгоритм нужен, а реализация алгоритма? ибо описание алгоритма не зависит от языка его реализации.
|
|
#4
|
|||
|
|||
|
Спасибо, я уже сам нашёл, но у меня вопрос по коду:
Код:
type
Graph = array[1..nn,1..nn] of integer;
Procedure Floyd(var a, p: graph);
var i,j,k: integer;
c: graph;
begin
//A - матрица содержащая кратчайшие пути.
//P - матрица, сохраняющая маршруты.
Randomize;
for i:=1 to nn do
for j:=1 to nn do
c[i,j] := random(100);
for i:=1 to nn do
for j:=1 to nn do
begin
a[i,j]:=c[i,j];
p[i,j]:=0;
end;
for i:=1 to nn do a[i,i]:=0;
for k:=1 to nn do
for i:=1 to nn do
for j:=1 to nn do
if (a[i,k]+a[k,j] < a) then
begin
a[i,j]:=a[i,k]+a[k,j];
p[i,j]:=k;
end;
end;Код:
if (a[i,k]+a[k,j] < a) then |
|
#5
|
||||
|
||||
|
Цитата:
Последний раз редактировалось NumLock, 07.04.2011 в 14:26. |
|
#6
|
|||
|
|||
|
если б не хотел не отвечал бы на вопрос, зачем мне отминусил.
|
|
#7
|
|||
|
|||
|
Цитата:
|
|
#8
|
|||
|
|||
|
Я пробывал так, но результатвыходит не верный
|
|
#9
|
|||
|
|||
|
В алгоритме написано:
Код:
W[i][j] = min(W[i][j], W[i][k] + W[k][j]) Код:
if (a[i,k]+a[k,j] < a[i,j]) then
begin
a[i,j]:=a[i,k]+a[k,j]; |