- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题目根据下图用dijkstra求最短路用破圈法和避圈法求最
题目:根据下图用Dijkstra求最短路,用破圈法和避圈法求最小树
解:
1 Dijkstra方法求最短路的程序如下
function [l,t]=dijkstra(A,v)
%dijkstra最短路算法,某个顶点v到其余顶点的最短路
A= [0 6 3 1 Inf Inf Inf Inf Inf;
Inf 0 Inf Inf 1 Inf Inf Inf Inf;
Inf 2 0 2 Inf Inf Inf Inf Inf;
Inf Inf Inf 0 Inf 10 Inf Inf Inf;
Inf Inf Inf 6 0 4 3 6 Inf;
Inf Inf Inf Inf 10 0 2 Inf Inf;
Inf Inf Inf Inf Inf Inf 0 4 Inf;
Inf Inf Inf Inf Inf Inf Inf 0 3;
Inf Inf Inf Inf 2 Inf Inf Inf 0];
n=length(A);%顶点个数
V=1:n;%顶点集合
v=1;
s=v;
%已经找到最短路的点集,初始为v
l=A(v,:)%当前v点到各个点的距离,初始为直接距离
t=v.*ones(1,n)%当前距离时点的父顶点,初始都为v
ss=setdiff(V,s);nn=length(ss);%还没有找到最短路的点集
for j=1:n-1%一共进行n-1次迭代
k=ss(1);
for i=1:nn%对还没有找到最短路的点
if l(k)l(ss(i))
k=ss(i);
l(k)=l(ss(i));%在当前一行距离中取最小值
end
end
if l(k)==inf%如果当前行最小值是无穷大,则结束
break;
else%否则k点的最短路找到
s=union(s,k);
ss=setdiff(V,s);
nn=length(ss);
end
if length(s)==n%全部点的最短路都找到
break;
else
for i=1:nn%以k为生长点,如果通过k点会更短,则更改当前最短距离
if l(ss(i))l(k)+A(k,ss(i))
l(ss(i))=l(k)+A(k,ss(i));
t(ss(i))=k;
end
end
end
end
%附:运行上面程序后,如果想更清楚的观看点v到点vv的最短距离与路径可用下面小程序:
v=1;%v要与上面的v一致
vv=8;k=vv;tt=vv;
while(1)
if k==v
tt %路径vv --...-- v
l(vv) %距离
break;
else
k=t(k);
tt=[tt,k];
end
end
运行结果如下:
l =
0 6 3 1 Inf Inf Inf Inf Inf
t =
1 1 1 1 1 1 1 1 1
tt =
8 5 2 3 1
ans =
12
ans =
0 5 3 1 6 10 9 12 15
根据所求得结果得到的图:
破圈法求最小树程序如下
function [T,sum]=tree2(A)
%求连通图的最小生成树
%适用于无向图
A=[0 6 3 1 inf inf inf inf inf;
6 0 2 inf 1 inf inf inf inf;
3 2 0 2 inf inf inf inf inf;
1 inf 2 0 6 10 inf inf inf;
inf 1 inf 6 0 4 3 6 2;
inf inf inf 10 10 0 2 inf inf;
inf inf inf inf 3 2
原创力文档


文档评论(0)