- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络流 基础知识简介 问题模型 s地往t地运输原料,已知s、t分别是有向图G中的两点,每条有向边都有一定的流量Cij。Cij表示从i点到j点运输不能超过的运输量。图G可以称作一个网络,而s能够运输到t的最大运输量则是该网络的最大流 这里s和t分别称为源点和汇点 可行流 在网络的一个可行流中,即任意一个实际运输情况中,实际运输量必须满足一些关系: 1-实际运输量不能是负的 2-每条弧的实际运输量不能大于该弧的容量 3-除了起点Vs和重点Vt外,对其他定点来说指向Vi的弧上的运输量之和,应该等于所有从Vi出发的弧上的运输量之和 可改进路P 若给定一个可行流F=(Fij),我们把网络中Fij=Cij的弧称作饱和弧, FijCij的弧称作非饱和弧, Fij=0的弧称作零流弧, Fij0的弧称作非零流弧 若P是网络中联结源点s和汇点t的的一条路(不用管边的有向性),我们定义路的方向是从Vs到Vt,则路上的弧被分为两类-一类与路的方向一致,称为前向弧;另一类和路的方向相反,称为后向弧 可改进路P 如果对于P上的每一条前向弧都是非饱和弧,每一条后向弧都是非零流弧,则称P为一条可改进路。因为可以通过修正P上各弧的流量来使得总流量变得更大。修正的方法是: 1-不属于P的弧一概不变 2-对于P上的所有前向弧加上a,后向弧减去a。这里a是一个可改进量。 求网络的最大流 a既要尽量大,又要保证变化后0=Fij=Cij。因此a=min(min(C前向弧ij-F前向弧ij),min(F后向弧ij))。 如果不存在Vs到Vt的可改进路,则该网络已经形成了最大流。 那么求最大流的算法可以大致表示为:不断寻找可改进路P,并修改P,直到找不到P为止。这和用匈牙利算法求二分图最大匹配的思路是一致的。 下面介绍一种用标号法来寻找可改进路的算法。 求最大流的标号法 每个顶点的标号分为两个部分:记录是否标号的部分和记录是否检查的部分。 标号法流程: 1-先标记源点s为已标号未检查 2-找出一个已标号未检查的点i 3-寻找所有未标号的和i相连的点j,弧Fij必须满足可改进路中对弧的要求。记j为已标号未检查。 4-记i为已标号已检查,并重复2-4的过程,直到汇点t已标号。 求最大流的标号法 由此我们得到了一条有s到t的可改进路。 先修改可改进路,然后重复上述标号过程,直到找不出可改进路为止。 最后我们便得到了整个网络的最大流。 至于可改进路的记录和改进量a的计算等,可以在标号的过程中同时完成,这里可以参考程序。 最大流参考程序 Function ford : boolean; var i,j,a : integer; begin ford := false; fillchar(p,sizeof(p),0); p[s].pre := s; repeat for i := 1 to n do if (p[i].pre0)and(p[i].check=0) then break; if Not((p[i].pre0)and(p[i].check=0)) then exit; for j := 1 to n do if (p[j].pre=0)and(c[i,j]0)or(c[j,i]0) then 最大流参考程序 begin if (f[i,j]c[i,j]) then p[j].pre := i; if (f[j,i]0) then p[j].pre := -i; end; p[i].check := 1; until p[t].pre 0; i := t; a := maxint; repeat j := i; i := abs(p[j].pre); if p[j].pre0 then if (f[j,i]a) then a := f[j,i]; if p[j].pre0 then if (c[i,j]-f[i,j]a) then a := c[i,j] - f[i,j]; until i = s; 最大流参考程序 i := t; repeat j := i; i := abs(p[j].pre); if p[j].pre0 then f[j,i] := f[j,i] - a; if p[j].pre0 then f[i,j] := f[i,j] + a; until i = s; ford:=true; end; 主程序中调用while ford do;即可求得该网络的最大流。 容量
您可能关注的文档
- 制作方法与技巧(上)资料.ppt
- 制作方法与技巧教程资料.ppt
- 网络导论第3章资料.ppt
- 制作方法资料.ppt
- 制作统一模板资料.ppt
- 网络电话知识普及资料.ppt
- 西洋服装史古典时期资料.ppt
- 中国经济指标2016讲述资料.ppt
- 中国经济指标2016资料.ppt
- 西洋乐器分类资料.ppt
- 2024年05月山东交通职业学院招考聘用博士研究生50人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月安徽芜湖市弋江区老年学校(大学)工作人员特设岗位公开招聘2人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东东营河口区教育类事业单位招考聘用22人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东交通职业学院招考聘用100人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东威海职业学院招考聘用高层次人才2人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月安徽石台县事业单位工作人员33人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东滨州市博兴县事业单位公开招聘考察笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月安徽蚌埠固镇县湖沟镇选聘村级后备干部7人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东省安丘市教育和体育局所属事业单位学校公开2024年招考232名工作人员笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东临沂临港经济开发区工作人员(5人)笔试历年典型题及考点剖析附带答案含详解.docx
文档评论(0)