matlab图论程序算法大全推荐文档.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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:

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档