Prim生成最優樹

2021-10-09 02:55:01 字數 1603 閱讀 3688

clc;

nodenum = 13;

inf = 1000;

dis = zeros(nodenum,nodenum);

sign = zeros(nodenum,1);

linkss = zeros(nodenum,nodenum);

signnum = 1;

sign(signnum) = 1;%選擇第乙個點

minnum = [1,1];

x = 1;

for k = 1:nodenum-1

min = inf;

for i = 1:nodenum

if sign(i) == 1

for j = 1:nodenum

if dis(i,j)min = dis(i,j);

minnum(1,1) = i;

minnum(1,2) = j;

endend

endend

signnum = signnum+1;

sign(minnum(1,2)) = 1;

disp(num2str(minnum(1,1)))

linkss(minnum(1,1),minnum(1,2)) = 1;

disp(['第',num2str(x),'次']);

disp(['minnum=',num2str(minnum(1,1)),' ',num2str(minnum(1,2))]);

x = x+1;

end

a=[26,31];

h=[ 5,33;8,9;10,24;13,34;17,23;20,10;25,47;...

31,18;35,42;36,25;41,31;45,38];

hold on

ph=[a;h];

load a:\dat\a2.txt; %載入168個點的座標

pc=a2;%將168個點的座標生成向量賦值給pc

pt=[h;pc]; %將一級供水站和二級供水站座標拼接起來

plot(pt(:,1),pt(:,2),'b.');

plot(a(:,1),a(:,2),'g*',h(:,1),h(:,2),'ro');

hold on

sumnew = 0;

for i=1:nodenum

for j=1:nodenum

if linkss(i,j)==1

sumnew = sumnew+dis(i,j);

plot([ph(i,1),ph(j,1)],[ph(i,2),ph(j,2)],'r');

end

endend

load c:\users\nianzhen\desktop\數學建模\dat\dis2.txt;

sumnew2 = 0;

for i=1:180

for j=1:180

if link(i,j)==1

sumnew2 = sumnew2+dis2(i,j);

plot([pt(i,1),pt(j,1)],[pt(i,2),pt(j,2)],'b');

end

endend

最優佈線問題 prim 最小生成樹

description 學校有n臺計算機,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。為了節省費用,一台計算機可以間接的通過若干臺計算機 作為中轉 來實現與另一台計算機的連線。現在由你負責連線這些計算機,...

最優比率生成樹 最優比例生成樹

2005年的acm地區賽賽場上,樓爺高速過了乙個求最優比率生成樹的問題,從而打亂了全場的陣腳,順利奪冠.有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t 最大 或最小 這顯然是乙個具有現實...

最優比率生成樹 最優比例生成樹

有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t最大 或最小 這顯然是乙個具有現實意義的問題.設x i 等於1或0,表示邊e i 是否屬於生成樹.則我們所求的比率r benifit i x...