摘要: 一、Dinic算法的步骤以及复杂度分析算法步骤: Dinic算法的思想也是分阶段地在层次图中增广。它与最短路径增值算法不同之处是:在Dinic算法中,我们用一个dfs过程代替多次bfs来寻找阻塞流。下面给出其算法步骤: 1、初始化流量,计算出剩余图2、根据剩余图计算层次图。若汇点不在层次图内,则算法结束3、在层次图内用一次dfs过程增广4、转步骤2View Code 下面是dfs的过程:p=s;While outdegree(s)>0 u=p.top; if ut if outdegree(u)>0 设(u,v)为层次图中的一条边; ... 阅读全文
posted @ 2013-08-14 14:50 蛋丁 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 1.floyd算法 (n^3复杂度)基本思想:开始设集合S的初始状态为空,然后依次将0,1,。。n-1定点加入,同时用d[i][j]保存从i到j,仅经过S中的定点的最短路径,在初始时刻,d[i][j] = A[i][j]中间不经过任何节点,然后依次向S中插入节点,并进行如下更新d(k)[i][j] = min{ d(k-1)[i][j],d(k-1)[i][k]+d(k-1)[k][j]}还可以使用一个二维数组path指示最短路径。path[i][j]给出从定点i到j的最短路径上,定点i的前一个顶点代码相当简单,最容易的实现方法:for (k = 0;k =表示求最小值,作为最长路,=构图时类 阅读全文
posted @ 2013-08-14 14:41 蛋丁 阅读(427) 评论(0) 推荐(0) 编辑