|
フォード・ファルカーソンのアルゴリズム()とは、フローネットワークにおける最大フローを求めるアルゴリズムである。 と にちなんで命名されたもので、1956年に発表された。フォード・ファルカーソンのアルゴリズムの特殊版であるエドモンズ-カープアルゴリズムも「フォード・ファルカーソン」と呼ばれることがある。 このアルゴリズムの背景にある考え方は非常に単純である。始点から終点への経路があって、経路上の各辺に容量の空きがあるとき、その経路を使って流れを作ることができる。これを経路が見つかるたびにくりかえす。容量に空きがある経路を「増加道; 」と呼ぶ。 == アルゴリズム == グラフ にて、 から への容量 でフロー とする。ここで、始点 から終点 への最大フローを求める。最終的に、次のような状態となる。 * : から へのフローは容量を超えない。 * : と の間の総フローの性質。 から へのフローが 、 から へのフローが であるとき、 であり、かつ となる。 * : と を除く全てのノード で成り立つ。あるノードに流れ込むフローとそこから出て行くフローは常に等しい。 すなわち、ネットワーク上のフローは、アルゴリズムの毎回の適用後に常に正当なものとなる。ここで、残余ネットワーク を容量が で、フローのないネットワークと定義する。ただし、 のフローによって がクローズ(満杯)となっても は残余ネットワークに残る可能性があるため、 となるかどうかは定かではない。 アルゴリズム フォード・ファルカーソン :入力 フロー容量 、始点 、終点 のグラフ :出力 から へのフロー の最大値 :# 全ての枝 について とする。 :# 内で から への経路 があり、経路上の全ての枝 について であるとき: :## を求める。 :## であるような各枝について :### (この枝にそってフローを送る) :### (フローは後で返される) 経路は、 について、例えば幅優先探索や深さ優先探索を行うことで得られる。前者の場合を特にエドモンズ-カープアルゴリズムと呼ぶ。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「フォード・ファルカーソンのアルゴリズム」の詳細全文を読む スポンサード リンク
|