Реализация алгоритма построения минимального остовного дерева для графа - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Срочно помогите пожалуйста!!! Очень срочно нужно сделать прогу Тема: Реализация алгоритма построения минимального остовного дерева для графа. Если можно исправить эту прогу
Помогите плиз это очень срочно!!!
Народ пожалуйсто помогите с этой прогой очень нужно!!!
люди исправьте хотябы ту прогу чтобы она работала!!!
Ребят ну помогите пожалуйста с этой гребанной курсовой!!!

Решение задачи: «Реализация алгоритма построения минимального остовного дерева для графа»

textual
Листинг программы
program gg99dlt12;
Const
MaxN=500;
MaxIter:longint=10000;
Var
output:text;
k:longint;
N,i,j,e,l:1..MaxN;
x,xcopy,y,ycopy:array[1..MaxN] of longint;
D,Dcopy:array[1..MaxN,1..MaxN] of real;
Pred,Predcopy:array[1..MaxN] of byte;
maxlength:real;
procedure InputData;
var p,phi:integer;
begin
var i,j:integer;
for i:=1 to N do
begin
{ p:=random(50);
phi:=random(360);
x[i]:=round(p*cos(phi));
y[i]:=round(p*sin(phi));}
x[i]:=random(101);
y[i]:=random(101);
end;
for i:=1 to N do
for j:=1 to N do
D[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
end;
function OutputData:real;
var
answer:real;
begin
answer:=0;
var i,j:integer;
N:=244;
for i:=2 to N do answer:=answer+D[i,Pred[i]];
OutputData:=answer;
end;
procedure MinTree;
const
MaxD=1e16;
free=0;
used=1;
var
lbl:array[1..MaxN] of byte;
key:array[1..MaxN] of real;
u,v:byte;
min:real;
begin
var i,j:integer;
for i:=1 to n do begin
key[i]:=MaxD;
lbl[i]:=free; end;
key[1]:=0;
pred[1]:=0;
for i:=1 to N do begin
Min:=MaxD;
for j:=1 to N do
if (lbl[j]=free) and (key[j]<min) then begin
u:=j;
min:=key[j] end;
lbl[u]:=used;
for v:=1 to n do
if (lbl[v]=free) and (D[u,v]<key[v]) then begin
key[v]:=d[u,v];
pred[v]:=u; end;
end;
end;
Begin
randomize;
assign(output,'out.txt');
rewrite(output);
for n:=500 to 500 do begin
maxlength:=0;
for k:=1 to MaxIter do begin
InputData;
MinTree;
if maxlength<OutputData then
begin
maxlength:=OutputData;
xcopy:=x;
ycopy:=y;
Dcopy:=D;
end;
end;
writeln(output,'');
writeln(output,'mmot ',n,' equals ',maxlength/100:0:3,'--',maxlength/400:0:3);
writeln('mmot ',n,' equals ',maxlength/100:0:3,'--',maxlength/400:0:3);
writeln(output,'----x-y--');
write(output,'{');
for e:=1 to N-1 do write(output,'{',xcopy[e],',',ycopy[e],'},');
writeln(output,'{',xcopy[n],',',ycopy[n],'}}');
writeln(output,'---D---');
for l:=1 to n do begin
write(output,'{');
for e:=1 to n do
if e=n then write(output,dcopy[l,e]:0:0) else write(output,dcopy[l,e]:0:0,',');
if l=n then writeln(output,'}') else writeln(output,'},') end;
writeln(output,'');
end;
close(output);
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы