最小生成树MATLAB文档格式.docx
- 文档编号:18075989
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:10
- 大小:119KB
最小生成树MATLAB文档格式.docx
《最小生成树MATLAB文档格式.docx》由会员分享,可在线阅读,更多相关《最小生成树MATLAB文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
p=1;
tb=2:
length(a);
•whilelength(result)~=length(a)-1
•temp=a(p,tb);
temp=temp(:
);
•d=min(temp);
•[jb,kb]=find(a(p,tb)==d);
•j=p(jb
(1));
k=tb(kb
(1));
•result=[result,[j;
k;
d]];
p=[p,k];
tb(find(tb==k))=[];
•end
•result
•例、一个乡有7个自然村,其间道路如图所示,要以村为中心建有线广播网络,如要求沿道路架设广播线,应如何架设
Kruskal算法
每步从未选的边中选取边e,使它与已选边不构成圈,且e
是未选边中的最小权边,直到选够n-1条边为止。
•[i,j]=find((a~=0)&
(a~=M));
•b=a(find((a~=0)&
(a~=M)));
•data=[i'
j'
b'
];
index=data(1:
2,:
•loop=max(size(a))-1;
•whilelength(result)<
loop
•temp=min(data(3,:
));
•flag=find(data(3,:
)==temp);
•flag=flag
(1);
•v1=data(1,flag);
v2=data(2,flag);
•ifindex(1,flag)~=index(2,flag)
•result=[result,data(:
flag)];
•end
•ifv1>
v2
•index(find(index==v1))=v2;
•else
•index(find(index==v2))=v1;
•data(:
flag)=[];
•index(:
中国邮递员问题
中国邮递员问题也可以表示为:
在一个有奇点的连通图中。
要求增加一些重复边,使得新的连通图不含有奇点,并且增加的重复边总权最小。
我们把增加重复边后不含奇点的新的连通图叫做邮递路线,而总权最小的邮递路线叫做最优邮递路线。
求图中所示的中国邮递员问题
•Fleury算法(在一个Euler图中找出Euler环游)
•注:
包括三个文件;
,
•function[Tc]=fleuf1(d)
•%注:
必须保证是Euler环游,否则输出T=0,c=0
•n=length(d);
•b=d;
•b(b==inf)=0;
•b(b~=0)=1;
•m=0;
•a=sum(b);
•eds=sum(a)/2;
•ed=zeros(2,eds);
•vexs=zeros(1,eds+1);
•matr=b;
•fori=1:
n
•ifmod(a(i),2)==1
•m=m+1;
•ifm~=0
•fprintf('
thereisnotexitEulerpath.\n'
)
•T=0;
c=0;
•ifm==0
•vet=1;
•flag=0;
•t1=find(matr(vet,:
)==1);
•forii=1:
length(t1)
•ed(:
1)=[vet,t1(ii)];
•vexs(1,1)=vet;
vexs(1,2)=t1(ii);
•matr(vexs(1,2),vexs(1,1))=0;
•flagg=1;
tem=1;
•whileflagg
•[flagged]=edf(matr,eds,vexs,ed,tem);
•tem=tem+1;
•ifed(1,eds)~=0&
ed(2,eds)~=0
•T=ed;
•T(2,eds)=1;
•c=0;
•forg=1:
eds
•c=c+d(T(1,g),T(2,g));
•flagg=0;
•break;
•function[flaged]=edf(matr,eds,vexs,ed,tem)
•flag=1;
•fori=2:
•[dvexf]=flecvexf(matr,i,vexs,eds,ed,tem);
•iff==1
•ifdvex~=0
i)=[vexs(1,i)dvex];
•vexs(1,i+1)=dvex;
•matr(vexs(1,i+1),vexs(1,i))=0;
•function[dvexf]=flecvexf(matr,i,vexs,eds,ed,temp)
•f=0;
•edd=find(matr(vexs(1,i),:
•dvex=0;
•dvex1=[];
•ded=[];
•iflength(edd)==1
•dvex=edd;
•else
•dd=1;
dd1=0;
kkk=0;
•forkk=1:
length(edd)
•m1=find(vexs==edd(kk));
•ifsum(m1)==0
•dvex1(dd)=edd(kk);
•dd=dd+1;
•dd1=1;
•kkk=kkk+1;
•ifkkk==length(edd)
•tem=vexs(1,i)*ones(1,kkk);
•edd1=[tem;
edd];
•forl1=1:
kkk
•lt=0;
ddd=1;
•forl2=1:
•ifedd1(1:
2,l1)==ed(1:
2,l2)
•lt=lt+1;
•iflt==0
•ded(ddd)=edd(l1);
•ddd=ddd+1;
•iftemp<
=length(dvex1)
•dvex=dvex1(temp);
•elseiftemp>
length(dvex1)&
temp<
=length(ded)
•dvex=ded(temp);
•f=1;
旅行商问题的数学规划模型
或
实例
例从北京(Pe)乘飞机到东京(T)、纽约(N)、墨西哥城(M)、伦敦(L)、巴黎(Pa),五城市做旅游,每城市恰去一次再回北京,应如何安排旅游线,使旅程最短各城市之间的航线距离如下表:
L
M
N
Pa
Pe
T
56
35
21
51
60
57
78
70
36
68
61
13
编写程序如下:
clc,clear
a(1,2)=56;
a(1,3)=35;
a(1,4)=21;
a(1,5)=51;
a(1,6)=60;
a(2,3)=21;
a(2,4)=57;
a(2,5)=78;
a(2,6)=70;
a(3,4)=36;
a(3,5)=68;
a(3,6)=68;
a(4,5)=51;
a(4,6)=61;
a(5,6)=13;
a(6,:
)=0;
a=a+a'
c1=[51:
46];
L=length(c1);
flag=1;
whileflag>
flag=0;
form=1:
L-3
forn=m+2:
L-1
ifa(c1(m),c1(n))+a(c1(m+1),c1(n+1))<
a(c1(m),c1(m+1))+a(c1(n),c1(n+1))
flag=1;
c1(m+1:
n)=c1(n:
-1:
m+1);
end
end
sum1=0;
fori=1:
sum1=sum1+a(c1(i),c1(i+1));
circle=c1;
sum=sum1;
c1=[561:
4];
%改变初始圈,该算法的最后一个顶点不动
...
a(c1(m),c1(m+1))+a(c1(n),c1(n+1))
ifsum1<
sum
sum=sum1;
circle=c1;
circle,sum
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最小 生成 MATLAB
![提示](https://static.bdocx.com/images/bang_tan.gif)