数学建模——matlab最大流问题

代码:

clc,clear 
u(1,2)=18;u(1,3)=19;u(1,4)=18;u(2,5)=18;u(2,7)=18; 
u(3,5)=19;u(3,6)=19;u(3,8)=19;u(4,6)=18;u(4,7)=18;
u(5,9)=10;u(6,9)=20;u(7,9)=15;u(8,9)=10;
f(1,2)=0;f(1,3)=0;f(1,4)=0;f(2,5)=0;f(2,7)=0; 
f(3,5)=0;f(3,6)=0;f(3,8)=0;f(4,6)=0;f(4,7)=0;
f(5,9)=0;f(6,9)=0;f(7,9)=0;f(8,9)=0;
n=length(u);list=[];maxf(n)=1; 
while maxf(n)>0 
 maxf=zeros(1,n);pred=zeros(1,n); 
 list=1;record=list;maxf(1)=inf; 
 %list是未检查邻接点的标号点,record是已标号点
 while (~isempty(list))&(maxf(n)==0) 
 flag=list(1);list(1)=[]; 
 label1= find(u(flag,:)-f(flag,:)); 
 label1=setdiff(label1,record); 
 list=union(list,label1); 
 pred(label1)=flag; 
 maxf(label1)=min(maxf(flag),u(flag,label1)... 
 -f(flag,label1)); 
 record=union(record,label1); 
 label2=find(f(:,flag)); 
 label2=label2'; 
 label2=setdiff(label2,record); 
 list=union(list,label2); 
 pred(label2)=-flag; 
 maxf(label2)=min(maxf(flag),f(label2,flag)); 
 record=union(record,label2); 
 end 
 if maxf(n)>0 
 v2=n; v1=pred(v2); 
 while v2~=1 
 if v1>0 
 f(v1,v2)=f(v1,v2)+maxf(n); 
 else 
 v1=abs(v1); 
 f(v2,v1)=f(v2,v1)-maxf(n); 
 end 
 v2=v1; v1=pred(v2); 
 end 
 end 
end 
f

少年不被楼层误,余生不羁尽自由。
加油,加油!

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值