2012-12-03 高速な最大流アルゴリズム(Dinic法) PKU Tips Dinic法 Ford-Fulkerson法は計算量がO(F|E|)だった。多くの場合にはこのアルゴリズムで十分だが、頂点数や流量が非常に大きかったりする場合で速度が不十分な場合がある。 実は、最大流問題を解くアルゴリズムは他にも非常にたくさんあり、その中でも実装が比較的簡単で実用上の速度が非常に優れているDinic法を紹介する。Ford-Fulkerson法では深さ優先探索で増加パスを探し、そこにフローを流していた。これに対しDinic法では最短の増加パスを探して、そこにフローを流していく。 最短の増加パスの長さは、フローを流すことで短くなることはないから、毎回幅優先探索を行って最短路を求めるのではなく、一度幅優先探索を行い、距離が増加する向きの辺のみからなるグラフを作成した上で、深さ優先探索を行う。