ISAP算法模板
最大流增广路算法大致有三个优化等级
- EK算法(Edmonds Karp)通过dfs每次在残量网络中找到一条可行的增广路进行增广
- Dinic算法 在每次dfs寻找增广路前,先进行一次dfs标号,流量只沿着源点到汇点之间的最短路进行增广,这就相当于给了流一个势能,水只会向下流而不会随处流动,大大所短了EK算法中发现的增广路,提高了效率
- ISAP算法,在Dinic算法的基础上进一步优化,并不需要在每次增广前都用bfs重新标号,而是只进行一次标号,之后在一个结点无法增广时才考虑修改节点的标号,同时加入一个gap优化,当某一个标号的节点个数为0时,停止增广,输出最大流。
C++ Code
1 |
|