Реализация алгоритма построения минимального остовного дерева для графа - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д