最小费用流matlab,计算最小费用最大流MATLAB源代码.doc

计算最小费用最大流MATLAB源代码,文件名为mp_mc.m

function[Mm,mc,Mmr]=mp_mc(a,c)

A=a; %各路径最大承载流量矩阵

C=c; %各路径花费矩阵

Mm=0; %初始可行流设为零

mc=0; %最小花费变量

mcr=0;

mrd=0;

n=0;

while mrd~=inf %一直叠代到以花费为权值找不到最短路径

for i=1:(size(mcr',1)-1)

if a(mcr(i),mcr(i+1))==inf

ta=A(mcr(i+1),mcr(i))-a(mcr(i+1),mcr(i));

else

ta=a(mcr(i),mcr(i+1));

end

n=min(ta,n); %将最短路径上的最小允许流量提取出来

end

for i=1:(size(mcr',1)-1)

if a(mcr(i),mcr(i+1))==inf

a(mcr(i+1),mcr(i))=a(mcr(i+1),mcr(i))+n;

else

a(mcr(i),mcr(i+1))=a(mcr(i),mcr(i+1))-n;

end

end

Mm=Mm+n; %将每次叠代后增加的流量累加,叠代完成时就得到最大流量

for i=1:size(a,1)

for j=1:size(a',1)

if i

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值