- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精心整理
图论算法matlab实现
求最小费用最大流算法的 MATLAB程序代码如下:
n=5;C=[0 15 16 0 0
0 0 0 13 14
011 017 0
0 0 0 0 8
0 0 0 0 0]; %弧容量
b=[0 4 1 0 0
0 0 0 6 1
》
0 2 0 3 0
0 0 0 0 2
0 0 0 0 0]; %弧上单位流量的费用
wf=0;wf0=lnf; %wf表示最大流量,wf0 表示预定的流量值
for (i=1:n) for (j=1:n)f(i,j)=0; end; end %取初始可行流 f 为零流
while (1)
for (i=1:n) for (j=1:n) if (j~=i)a(i,j)=lnf; end; end; end%勾造有向赋权图
for (i=1:n) for (j=1:n) if (C(i,j)0f(i,j)==0)a(i,j)=b(i,j);
elseif (C(i,j)0f(i,j)==C(i,j))a(j,i)二-b(i,j);
elseif (C(i,j)0)a(i,j)=b(i,j);a(j,i)=-b(i,j); end; end; end
for (i=2:n)p(i)=lnf;s(i)二i; end %用 Ford 算法求最短路,赋初值
for (k=1:n)pd=1; %求有向赋权图中vs到vt的最短路
2019年9月
精心整理
endfor (i=2:n) for (j=1:n) if (p(i)p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)二j;pd=O;
end
;end; end
if (pd) break; end;end %求最短路的Ford算法结束
if (p(n)==lnf) break; end %不存在vs到vt的最短路,算法终止.注意在求最小费
用最大流时构造有
向赋权图中不会含负权回路,所以不会出现k=n
dvt=Inf;t=n; %进入调整过程,dvt 表示调整量
while (1) %计算调整量
if (a(s(t),t)0)dvtt=C(s(t),t)-f(s(t),t); %前向弧调整量
elseif (a(s(t),t)0)dvtt=f(t,s(t)); end %后向弧调整量
if (dvtdvtt)dvt=dvtt; end
■i ? I x 1 i
if (s(t)==1) break; end %当t的标号为vs时,终止计算调整量
j-J— — _____
t=s(t); end %继续调整前一段弧上的流f
pd=0; if (wf+dvt=wf0)dvt=wf0-wf;pd=1; end%如果最大流量大于或等于预定的流量
值
,--j I f
t=n; while (1) %调整过程
if (a(s(t),t)O)f(s(t),t)=f(s(t),t)+dvt; %前向弧调整
elseif (a(s(t),t)0)f(t,s(t))=f(t,s(t))-dvt; end %后向弧调整
if (s(t)==1) break; end %当t的标号为vs时,终止调整过程
t=s(t); end
if (pd) break; end%如果最大流量达到预定的流量值
wf=0; for (j=1: n)wf=wf+f(1,j); end; end %计算最大流量
end; end%计算最小费用zwf=0; for (i=1:n) for (j=1:n)zwf二zwf+b(i,j)*f(i,j); 2019年9
end; end%计算最小费用
精心整理
f %显示最小费用最大流
图 6-22
wf %显示最小费用最大流量
zwf %显示最小费用,程序结束_
Kruskal避圈法:
Kruskal避圈法的MATLAB程序代码如下:
n=8;A=[0 2 8 1 0 0 0 0
2 0 6 0 1 0 0 0
8 6 0 7 5 1 2 0
1 0 7 0 0 0 9 0
0 1 5 0 0 3 0 8
■i ? I x 1 i
0 0 1 0 3 0 4 6
0 0 2 9 0 4 0 3
0 0 0 0 8 6 3 0];
k=1; %己录A中不同正数的个数
,--j I f
for (i=1:n-1) for (j=i+1:n) %此循环是查找A中所有不同的正数
if (A(i,j)0)x(k)=A(i,j); %数组x 记录A中不同的正数
kk=1; %缶时变量
for (s=1:k-1) if (x(k)==x(s))kk=0; break; end; end %排除相同的正数
k=k+kk; end; end; end
k=k-1 %显示A中所有不同正数的个数
for (i=1:
您可能关注的文档
最近下载
- 公司招聘简章.docx VIP
- 谕兴中学教科研工作总结PPT.pptx VIP
- 数字艺术创作职业技能等级标准(2021年版).pdf VIP
- 2025年《生活饮用水水质处理器卫生安全与功能评价规范——反渗透处理装置.pdf VIP
- 热等静压市场分析报告.pdf VIP
- 中学教科研工作总结PPT.pptx VIP
- 《研学旅行指导师实务》课件——第7章 研学旅行安全管理.pptx VIP
- 健康饮食益处多(教案)-2021-2022学年体育二年级下册 (1).docx VIP
- 压缩空气储能电站接入电网技术规定.pdf VIP
- GA_T 1147-2014 车辆驾驶人员血液酒精含量检验实验室规范.docx VIP
原创力文档


文档评论(0)