QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2353|回复: 1
打印 上一主题 下一主题

最大流和最小截问题的程序

[复制链接]
lovehaboy 实名认证       

20

主题

5

听众

1123

积分

社区QQ达人 新人进步奖

群组数模讨论——图论方面

群组数学建模

群组LINGO

群组华中师范大学数学建模与应用协会

群组南京邮电大学数模协会

跳转到指定楼层
1#
发表于 2009-1-31 18:55 |只看该作者 |倒序浏览
说明:
    在这个函数的编制中存在一个细节,当任取一个已标号未检查的点的时候,我取的最靠前的点。如果加进随机选取的语句,每次运行程序可能会出现不同的最大流结果。

maxflow.m
%function [f,s]=maxflow(startp,endp,c)
%c为容量网络
%对容量网络的填写做一下说明
%容量具有方向性,比如弧(i,j)的容量为10,弧(j,i)为0
%即矩阵无须有对称性
function [f,s]=maxflow(startp,endp,c)
n=length(c);
f=zeros(size(c));
l=zeros(1,n);d=zeros(1,n);examine=zeros(1,n);
l(startp)=0.5;d(startp)=inf;
while 1
    ifexam=0;ifl=0;
    for i=1:n
        if l(i)~=0
            ifl=ifl+1;
            if examine(i)==1
                ifexam=ifexam+1;
            end
        end
    end
    if ifl==ifexam
        break;
    end
    for i=1:n
        if l(i)~=0&examine(i)==0
            break;
        end
    end
    for j=1:n
        if c(i,j)~=0
            if f(i,j)<c(i,j)&l(j)==0
                l(j)=i;
                d(j)=min(d(i),c(i,j)-f(i,j));
            end
        end
        if c(j,i)~=0
            if f(j,i)>0&l(j)==0
               
                l(j)=-i;
                d(j)=min(d(i),f(i,j));
            end
        end
    end
    examine(i)=1;
    if l(endp)~=0
        j=endp;
        while 1
            if l(j)~=0.5
                if l(j)>0
                    i=l(j);
                    f(i,j)=f(i,j)+d(endp);
                    j=i;
                end
                if l(j)<0
                    i=-l(j);
                    f(j,i)=f(j,i)-d(endp);
                    j=i;
                end
            else
                l=zeros(1,n);break;
            end
        end
        l(startp)=0.5;d(startp)=inf;examine=zeros(1,n);
    end
end
s=[];ns=0;
for i=1:n
    if l(i)~=0
        ns=ns+1;
        s(ns)=i;
    end
end
fprintf('f为最大可行流\n');
fprintf('图的最小截划分得到的一个子集s为:\n');
disp(s);
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
chi93 实名认证       

5

主题

9

听众

209

积分

群组2014年美赛冲刺培训

群组数学建模

群组数模讨论——图论方面

群组2013年第二期美赛论文

群组数学建摸协会

2#
发表于 2014-2-3 12:13 |只看该作者
回复

使用道具 举报

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-11-17 00:24 , Processed in 0.438477 second(s), 43 queries .

回顶部