算法设计与分析课件 49 ISAP算法_第1页
算法设计与分析课件 49 ISAP算法_第2页
算法设计与分析课件 49 ISAP算法_第3页
算法设计与分析课件 49 ISAP算法_第4页
算法设计与分析课件 49 ISAP算法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法设计与分析本节要点CONTENTSISAP算法ISAP算法最短增广路算法(SAP),采用广度优先的方法在残余网络中找去权值的最短增广路。从源点到汇点,像声音传播一样,总是找到最短的路径。在寻找路径时却多搜索了很多结点。ISAP算法有人想到了一条妙计—贴标签。首先对所有的结点标记到汇点的最短距离,我们称之为高度。标高从汇点开始,用广度优先的方式,汇点的邻接点高度1,继续访问的结点高度是2,一直到源点结束。ISAP算法贴好标签之后,从源点开始,沿着高度减1且cap>flow的方向前进。例如,h[1]=3,h[2]=2,h[4]=1,h[6]=0,是不是很快就找到汇点了?之后沿着增广路1-2-4-6增流。在当前节点无法前进时,重贴标签。这种算法被称为“标签算法”或“ISAP算法”。ISAP算法算法设计:(1)确定合适数据结构。采用链式前向星存储混合网络。(2)对网络结点贴标签,即标高操作。(3)找可增广路。如果源点的高度≥结点数,算法结束;否则从源点开始,沿着高度h(u)=h(v)+1且有可行邻接边(cap>flow)的方向前进,如果到达汇点,则转向第4步;如果无法行进,则转向第5步。ISAP算法(4)增流操作:沿着找到的可增广路同向边增流,反向边减流。(5)重贴标签:如果拥有当前结点高度的结点只有一个,则转向第6步;令当前结点的高度=所有邻接点高度的最小值+1;如果没有可行邻接边,则令当前结点的高度=结点数;退回一步;转向第3步。(6)算法结束,已经找到最大流。ISAP算法在重贴标签之前判断当前高度为d[u]的结点个数是1,立即结束。这是ISAP算法的重要优化,可以提前结束程序,很多时候提速非常明显(高达100倍以上)。当前结点u无法行进时,说明u、t之间的连通性消失,但如果u是最后一个和t距离d[u]的点,说明此时s、t也不连通了。这是因为,虽然u、t已经不连通,但毕竟我们走的是最短路,其他点此时到t的距离一定大于d[u],因此其他点要到t,必然要经过一个和t距离为d[u]的点。ISAP算法(1)标记高度。从汇点开始进行广度优先搜索,第1次搜索到的节点的高度为1,下一次搜索到的节点的高度为2……用h[]记录每个节点的高度,用g[x]记录高度为x的节点数。例如g[1]=2,表示高度为1的节点有2个。ISAP算法(2)找增广路。从源点开始,沿着高度减1且cap>flow的方向前进,找到一条增广路径:1-2-4-6,可增量d=8。(3)增流操作。沿着增广路的同向边增流flow=flow+d,并沿着其反向边减流flow=flow-d。ISAP算法(4)找增广路。从源点开始,沿着高度减1且cap>flow的方向前进,到达节点2时无法行进,重贴标签。令节点2的高度=所有可行邻接点高度的最小值+1,h[2]=h[1]+1=4,回退到节点2的前驱节点1,继续搜索,又找到一条增广路径1-3-5-6,可增量d=4。(5)增流操作。沿着增广路同向边增流flow=flow+d,并沿着其反向边减流flow=flow-d。ISAP算法(6)找增广路。从源点开始,沿着高度减1且cap>flow的方向搜索,h[1]=3,h[3]=2,h[5]=1,走到节点5时无法行进,重贴标签。令h[5]=h[4]+1=2,回退到节点5的前驱节点3,重新搜索;h[3]=2,仍然无法前进,重贴标签。令h[3]=h[5]+1=3;回退到节点3的前驱节点1,h[1]=3,仍然无法前进,重贴标签。令h[1]=h[3]+1=4,节点1是源点,无须回退。继续搜索,又找到一条增广路径:1-3-5-4-6,可增量d=6。ISAP算法(7)增流操作。沿着增广路同向边增流flow=flow+d,并沿着其反向边减流flow=flow-d。ISAP算法(8)找增广路。从源点开始,沿着高度减1且cap>flow的方向前进,h[1]=4,虽然h[3]=3,但已经没有可增加的流量了,不可行,重贴标签。令h[1]=h[2]+1=5,节点1是源点,无须回退。继续搜索,h[1]=5,h[2]=4,到达节点2时无法行进,发现高度为4的节点只有1个,说明已经无法到达汇点,算法结束。ISAP算法算法实现ISAP算法算法分析时间复杂度:找到一条可增广路的时间是O(V),最多会执行O(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论