下载此文档

求最小费用最大流算法MATLAB程序代码.doc


文档分类:IT计算机 | 页数:约2页 举报非法文档有奖
1/2
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/2 下载此文档
文档列表 文档介绍
求最小费用最大流算法的MATLAB 程序代码如下(算例):
n=5;
C=[0 15 16 0 0
0 0 0 13 14
0 11 0 17 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=Inf; %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)=Inf;end;end;end%构造有向赋权图
for(i=1:n)for(j=1:n)if(C(i,j)〉0&f(i,j)==0)a(i,j)=b(i,j);
elseif(C(i,j)〉0&f(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)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值
for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路
for(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=0;end;end;end
if(pd)break;end;end %求最短路的Ford 算法结束
if(p(n)==Inf)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(dvt>dvtt)dvt=dvtt;end
if(s(t)==1)break;end %当t 的标号为vs 时, 终止计算调整量
t=s(t);end %继续调

求最小费用最大流算法MATLAB程序代码 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数2
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sanshenglu2
  • 文件大小15 KB
  • 时间2021-07-30