Witam.
Posiadam algorytm najbliższego sąsiada tzn. komiwojażer, poniżej jest kod do niego, czy ktoś byłby w stanie wytłumaczyć mi na jakiej zasadzie on działa ?
procedure algorytm(N:integer;P:punkty;var R:droga);
var
log:array of boolean;
Rp:droga;
i,l,j,z,k,id:integer;
Rtmp,dr,suma,pom:real;
begin
setlength(log,N);
setlength(Rp,N);
pom:=1700000000;
for i:=0 to N-1 do
begin
for z:=0 to N-1 do
begin
log[z]:=true;
end;
log[i]:=false;
dr:=1700000000;
suma:=0;
k:=i;
Rp[0]:=i;
for l:=1 to N-1 do
begin
for j:=0 to N-1 do
begin
if log[j]=true then
begin
inc(it);
Rtmp:=sqrt((P[k,0]-P[j,0])*(P[k,0]-P[j,0])+(P[k,1]-P[j,1])*(P[k,1]-P[j,1]));
if rtmp<dr then
begin
id:=j;
dr:=Rtmp;
end;
end;
end;
suma:=suma+dr;
k:=id;
log[k]:=false;
Rp[l]:=k;
dr:=1700000000;
end;
suma:=suma+sqrt((P[i,0]-P[k,0])*(P[i,0]-P[k,0])+(P[i,1]-P[k,1])*(P[i,1]-P[k,1]));
if suma<pom then
begin
pom:=suma;
for z:=0 to N-1 do
R[z]:=Rp[z];
end;
end;
SetLength(log, 0);
SetLength(Rp, 0);
end;
wstawienie kodu do posta i usunięcie załącznika - furious programming