📑 Table of Contents
最大フローのあるフローネットワークの例。始点 と終点 があり、各枝の数値はフローと容量を示す。

最大フロー問題(さいだいフローもんだい、: Maximum flow problem)または最大流問題とは、単一の始点から単一の終点へのフローネットワークで最大となるフローを求める問題である[1]。単にフローの最大値を求める問題と定義されることもある。最大フロー問題は、より複雑なネットワークフロー問題である最小費用流問題の特殊ケースと見ることもできる。

最小カット問題: Minimum cut problem)とは、辺の重みが非負値の有向グラフにおいて、始点から終点までのパスが存在しなくなるように辺を除去した時に、除去した辺の重みの総和を最小にする問題。始点から終点への最大フローは始点から終点への最小カットと等しい。これを最大フロー最小カット定理と呼ぶ。

2部グラフの最大マッチング問題: Maximum bipartite matching)とは、2部グラフの最大マッチングを求める問題で、これも最大フロー問題のアルゴリズムを使用して解ける[1]

解法

編集

有向グラフ において、各枝 の容量を としたとき、始点 から終点 への最大フロー を求める。この問題の解法アルゴリズムは多数存在する。

発表年 名称 計算量 説明
線形計画法 正規フローの定義から制約条件が与えられる。 を最大化。
1956年 フォード・ファルカーソンのアルゴリズム 残余グラフに余裕がある限り、その経路の残余容量の最小ぶんだけ送る。この計算量を達成するには、容量の整数性が必要である。容量が無理数を含む場合、終了しない可能性がある。
1970年 エドモンズ・カープのアルゴリズム フォード・ファルカーソンの特殊ケースであり、幅優先探索で増加道を探す。
1970年 ディニッツ法 ステップ毎に残余グラフについて幅優先探索で層別グラフを構築し、この上でブロッキングフローと呼ばれるフローを求め、これを追加する。層別グラフでのブロッキングフローは で求められ、ステップの反復は最大 回である。
1978年 MPM法[2] Malhotra, Pramodh-Kumar, Maheshwari が発表。
1981年 動的木を使ったディニッツ法[3] 層別グラフのブロッキングフロー計算を動的木を使うことで で行う。
1986年 汎用プッシュ再ラベル法[4] プリフロー(頂点群で超過する可能性のあるフロー関数)を使うアルゴリズム。正の超過のある頂点(グラフ内のアクティブな頂点)がある限り、アルゴリズムを繰り返す。プッシュ操作によって残余枝でのフローを増加させ、頂点における高さ関数でどの残余枝にプッシュを行うかを制御する。高さ関数は再ラベル操作で変更される。これらを正しく定義することで、最終的なフロー関数が最大フローを導き出す。
1986年 FIFO式頂点選択規則付きプッシュ再ラベル法[4] 最も以前に活性化された頂点を常に選択するプッシュ再ラベル法。
1986年 動的木を使ったプッシュ再ラベル法[4] height 関数について残余グラフの限定的な木構造を構築し、多層的プッシュ操作を行う。
1994年 KRT (King, Rao, Tarjan) 法[5]
1998年 バイナリブロッキングフロー法[6] 計算量の はネットワークの最大容量。
2013年 Jim Orlin法 + KRT (King, Rao, Tarjan) 法[7] Jim Orlin法自体はだが、KRT法を組み合わせることでになる。

これら以外にも解法アルゴリズムは多数存在し、参考文献(特に (Goldberg and Tarjan 1988))を参照されたい。

脚注

編集
  1. ^ a b T. コルメン、R. リベスト、C. シュタイン、C. ライザーソン『アルゴリズムイントロダクション』(第3版)近代科学社、2013年12月17日(原著2009-7-31)。ISBN 476490408X 
  2. ^ Malhotra, V.M.; Kumar, M.Pramodh; Maheshwari, S.N. (1978). “An O(”. Information Processing Letters 7 (6): 277–278. doi:10.1016/0020-0190(78)90016-9. ISSN 0020-0190. 
  3. ^ Daniel Dominic Kaplan Sleator. An o(nm log n) algorithm for maximum network flow. 
  4. ^ a b c Goldberg, A V; Tarjan, R E (1986). A new approach to the maximum flow problem. pp. 136–146. doi:10.1145/12130.12144. 
  5. ^ King, V.; Rao, S.; Tarjan, R. (1994). “A Faster Deterministic Maximum Flow Algorithm”. Journal of Algorithms 17 (3): 447–474. doi:10.1006/jagm.1994.1044. ISSN 0196-6774. 
  6. ^ Goldberg, Andrew V.; Rao, Satish (1998). “Beyond the flow decomposition barrier”. Journal of the ACM 45 (5): 783–797. doi:10.1145/290179.290181. ISSN 0004-5411. 
  7. ^ Orlin, James B. (2013). Max flows in O(nm) time, or better. pp. 765. doi:10.1145/2488608.2488705. 

参考文献

編集

📚 Artikel Terkait di Wikipedia

Brotli

are about to get a lot faster thanks to Google's new data compression algorithm”. techspot.com. 2016年1月20日閲覧。 ^ “Can I use... Support tables for HTML5

スプレー木

1115--1124, 2008. ^ R. Sundar. On the deque conjecture for the splay algorithm. Combinatorica 12(1):95--124, 1992. ^ J. Lucas. On the Competitiveness

R木

Mario A. Lopez: STR: A Simple and Efficient Algorithm for R-Tree Packing Antonin Guttman: R-Trees: A Dynamic Index Structure for Spatial Searching, Proc

核酸の二次構造

PMID 15849264. https://pmc.ncbi.nlm.nih.gov/articles/PMC1149427/.  ^ “A dynamic programming algorithm for RNA structure prediction including pseudoknots”. J Mol Biol

プルーフ・オブ・ステーク

Cardano(ADA)は、Ouroboros Genesis: Composable Proof-of-Stake Blockchains with Dynamic Availability(参照)にて、新しいPoSベースのプロトコル「Ouroboros Genesis」を提案した。これは、最新の暗号的に

Tomasuloのアルゴリズム

この段階でデータをメモリに書き込み リオーダーバッファ 命令レベルの並列性 アウト・オブ・オーダー実行 Dynamic Scheduling - Tomasulo's Algorithm An Efficient Algorithm for Exploiting Multiple Arithmetic Units, IBM

ニューラルネットワーク

Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (フィンランド語)

ハミルトン閉路問題

Kazuo; Nakashima, Takuya (2007), Lin, Guohui, ed., “An Improved Exact Algorithm for Cubic Graph TSP” (英語), Computing and Combinatorics, Lecture Notes