- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法分析與复杂性理论实验报告最大流问题
深 圳 大 学 实 验 报 告课程名称:算法分析与复杂性理论实验名称:实验五最短增益路径法求最大流问题学院:计算机与软件学院专业:软件工程报告人:文成学号:2150230509班级:学术型同组人:无指导教师:杨烜实验时间:2015/11/23——2015/11/30实验报告提交时间:2015/11/28教务处制实验目的与实验内容实验目的:(1)?掌握最短增益路径法思想。(2)?学会最大流问题求解方法。实验内容:给定下面的通信网络,该网络中各节点之间的路径流量给定,使用最短增益路径法求解该网络的最大流量,并进行流量分配。?2.?要求用加权矩阵输入该网络,输出每次迭代过程中的最大流量及各路径分配的流量。3.?如果能利用图形界面输出动态求解过程(在网络结构的图形显示中,标注每一次求得的增益路径,并显示当前流量分配),可获加分。算法思想提示:1.??利用二维数组C[i,j]和F[i,j]分别存放容量和流量。2.??构建队列类Queue,该类具有取队首元素,加入队尾元素等方法。3.??具体算法过程参见教材pp.271-272二.实验步骤最大流问题的问题描述:如上图。s是源点,t为汇点,每条边上数字的含义是边能够允许流过的最大流量。可以将边看成管道,3代表该管道每秒最多能通过3个单位的流量。最大流问题即是说,从s点到t点,最大允许流量是多少?最大流问题的算法思想:最短增益路径法(先标记先扫描算法):用两个记号来标记一个新的顶点第一个标记指出从源点到被标记顶点还能增加多少流量第二个标记指出另一个顶点的名字,可加上+或-来表示顶点时通过前向边还是后向边访问到的算法及其伪代码:Maxflow(G)//最短增量路径算法的实现//输入:网络G,具有一个源点1和一个汇点n,每条边(i,j)的容量都是正整数Uij//输出:最大流量x//对网络中的每条边(i,j),设xij=0//把源点标记为∞,-,再把源点加入到空队列Q中While not Empty(Q) doi←Front(Q);Dequeue(Q)for 从i到j的每条边do//前向边if j 没有被标记rij←uij - xijifrij 0Lj min{Li,xji};用L,i-来标记jEnqueue(Q,j)If 汇点被标记了//沿着找到的增益路径进行增量j←n//从汇点开始,用第二个标记反向移动while j!=i//没有到达源点if 顶点j的第二个标记是i+xij←xij+Lnelse//顶点j的第二个标记是i-xji←xji-Lnj←i;i←i的第二个标记指出的顶点除了源点,擦去所有顶点的标记用源点对Q重新初始化return x//当前流量是最大的思路以及代码解释:(全部源代码见附件)先创建一个解决问题的类,命名为G。计算最大流作为这个类中的一个方法来实现。利用二维数组Map[i,j]和Flow[i,j]分别存放容量和流量。添加头文件#include queue,后面需要用到队列,需要该类的取队首元素,加入队尾元素等方法。class G{public:G();G(intn,intstart,int end);void Edge(inta,intb,int flow); //顶点a和顶点b之间的流量void Maxflow(); //计算最大流private:int N; //顶点个数intStart; //源点intEnd, //汇点**Map, //网络容量**Flow, //通过流量**Rest, //剩余流量*Pre, //标记流向,正为前向,负为后向*Sign, //顶点是否标记,0为未标记,1为已标记*P; //过程变量,记录流量boolSignN(); //标记顶点int Min(inta,int b); //计算最小值void Update(); //更新网络};构造函数就先定义两个G::G() {Pre=NULL;} //不带参数的构造函数G::G(int n,intstart,int end) //带三个参数的构造函数,顶点个数,源点和汇点{初始化}在类G中,实现了void Maxflow();方法,用来计算最大流,其中标记顶点的函数定义为boolSignN();bool G::SignN()//标记顶点{Update();//更新queueint que;//创建一个队列的对象que.push(Start);//把源点放进队列里面Sign[Start]=1;//将源点标记
您可能关注的文档
最近下载
- 2024年党章党规党纪应知应会知识阶段测试题库附答案.docx VIP
- 提高对患者跌倒坠床防范措施落实率PDCA.pptx VIP
- 三矿--2025年安全生产治本攻坚三年行动任务分解及完成情况表(2.25)(1).xlsx VIP
- 新编英语教程8Unit-2.ppt VIP
- 鹤煤三矿三年行动月报表(2.25).xls VIP
- 鹤煤三矿治本攻坚三年行动中期评估表6.9(1).doc VIP
- 人教版七年级上册《What’s this in English》教学设计.docx VIP
- 道德与法治三年级上册第三单元 安全护我成长 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 防撞护栏墩专项施工方案.docx VIP
- 精神病患者分析研判报告.docx VIP
文档评论(0)