这几天学习了网络流
1,EK
ek的主要思路是不断通过bfs找到增广路,找到增广路再建立反向边,直到不能再bfs到汇点,为什么可以通过建反向边呢?以上图举例,上图走完第一条增广路建立了一条反向边,当寻找第二条增广路的时候走了上条增广路建立的反向边,可以等价于第一条增广路反悔了,将流量放到另一条边上,而第二条增广路接替了第一条增广路的通道,实际上是在为第一条增广路寻路。
2,DINIC
和ek不一样的是dinic是一次增加多条增广路,先bfs分层再进行dfs寻找增广路,我觉得这个算法比ek更能描述网络流中的流量像水一样往源点倒然后汇在汇点的运动,每次流动的时候会根据剩余流量再分流直到剩余流量为0或原流量为0则终止。