頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 本である。
を入口、 を出口とする。 を満たす頂点の部分集合 を - カットといい、その容量を ( から への辺がないときは )と定める。
から への最大流の値と、容量が最小となる - カット の個数を、この順に組で求めよ。
残余ネットワークで増加道をくり返し探す方法(フォード・ファルカーソン法)で、最大流の値を求められる。同じ容量のカットを示して最大であることを確かめ、最小カットを数え上げられる
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
有向ネットワークで から へ送れるフローの値の最大値(最大流)を求める方法を学びます。手順は、まだ余裕のある経路(増加道)を見つけては流量を増やすことのくり返しです。増加道がなくなったときのフローの値は、あるカットの容量と一致します。その一致によってフローが最大であることを確かめられ、さらに容量が最小のカット(最小カット)を探したり数えたりできます。
フロー が与えられたとき、残余ネットワークを次のように作ります。辺 について、 なら に残余容量 の辺を置きます(まだ流せる量)。 なら に残余容量 の逆向きの辺を置きます(流した量を取り消せる量)。残余ネットワークで から への有向道(増加道)が見つかったとします。その道の残余容量の最小値(ボトルネック)を とし、道に沿って だけ流します。前向きの辺では流量を 増やし、逆向きの辺では元の辺の流量を 減らします。こうしても容量制約と流量保存は保たれ、フローの値はちょうど 増えます。
増加道がなくなったとき、残余ネットワークで から到達できる頂点の集合を とします。 なので、 は - カットです。 から外へ出る元の辺は、すべて飽和しています()。余裕が残っていれば行き先も到達可能になり、 の定義に反するからです。同じ理由で、外から へ入る元の辺の流量はすべて です。流量が正なら逆向きの残余辺で到達できてしまいます。流量保存から、フローの値は「 から出る流量の和 へ入る流量の和」に等しくなります。したがってフローの値は です。
前提の技能で学んだとおり、どのフローの値もどのカットの容量も超えません。フローの値とカットの容量が等しいので、このフローは最大流であり、 は最小カットです(最大流最小カット定理:最大流の値=最小カットの容量)。容量がすべて整数なら、1 回の増加で値は 1 以上増えます。値は有限のカット容量で上から抑えられているので、手順は必ず終わります。また、最小カットとは容量が最大流の値に等しいカットのことです。したがって最大流の値がわかれば、各カットの容量と比べることで最小カットを数え上げられます。
すべての辺の流量を としたフローから始める。
残余ネットワークを作る。各辺 に前向きの残余容量 と、逆向き の残余容量 を置く( の辺は省く)。
残余ネットワークで から への増加道を 1 本探す。その道の残余容量の最小値を とし、道に沿って だけ流量を更新する。そのあと手順 2 に戻る。
増加道がなくなったら、 から到達できる頂点の集合 を求める。 が現在のフローの値に等しいことを確かめ、それを最大流の値とする。
最小カットを数えるときは、、 となる各 について を計算し、最大流の値と等しいものを数える。
頂点集合 、辺と容量が の有向ネットワークがある。 から への最大流の値と、最小カット( となる頂点集合 で容量が最小のもの)の個数を、この順の組で求めよ。
手順 1:全辺の流量を にする。
手順 2・3(1 回目):残余ネットワークは元のネットワークと同じである。増加道 をとると、。流すと となり、値は 。
手順 2・3(2 回目):残余容量は が 、 が 。増加道 で 。流すと となり、値は 。
手順 2・3(3 回目):残余容量は が 、 が 。増加道 で 。流すと となり、値は 。
手順 4: も も飽和したので、 から出る残余辺はない( に入る元の辺はないので、逆向きの残余辺もない)。よって到達集合は で、 となり、フローの値 と一致する。したがって最大流の値は 。
手順 5: は ()の 4 通りある。
容量が のものは 3 個ある。
答えは 。
答え:
逆向きの残余辺を作らず、元の辺の余りだけで道を探してしまう誤り。例えば全辺の容量が で、辺が のネットワークを考える。最初に に流すと、前向きの道はもう見つからず、値 で止まってしまう。正しくは逆向き辺 (残余容量 )を使い、増加道 で値を にする。 なので、 が最大である。
カットの容量に、 の外から へ入る辺の容量まで足したり引いたりしてしまう誤り。例題で としてはいけない( は外から へ入る辺)。正しくは から外へ出る辺だけを数えて 。
ボトルネック を、元の容量の最小値や道の容量の和で決めてしまう誤り。例題の 3 回目で の値を元の容量 とし、 のように考えてはいけない。正しくは残余容量 を使い、 とする。
増加道がなくなったときの到達集合 だけが最小カットだと思い込む誤り。例題では到達集合は だが、 と も容量 の最小カットである。最小カットを数えるときは、すべての について を最大流の値と比べる。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 本である。
を入口、 を出口とする。 を満たす頂点の部分集合 を - カットといい、その容量を ( から への辺がないときは )と定める。
から への最大流の値と、容量が最小となる - カット の個数を、この順に組で求めよ。
頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 本である。 を始点、 を終点とする。ここで - カットとは、 かつ を満たす の部分集合 のことで、その容量を と定める。 から への最大流の値と、容量が最小となる - カット の個数を、この順に組で答えよ。
頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 本である。 ソースを 、シンクを とするとき、 から への最大流の値を求めよ。
頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 7 本である。
ここで、 かつ をみたす頂点の部分集合 を - カットとよび、その容量を、始点が に属し終点が に属する有向辺の容量の和と定める( から へ向かう辺は数えない)。
容量が最小となる - カット は何個あるか。
を正の実数とする。頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 8 本である。
始点を 、終点を とする - フローの最大値を とする。 が正の実数全体を動くとき、 が最大となるような の最小値を求めよ。
頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次のとおりである。
始点を 、終点を とするとき、 から への流れの値の最大値を求めよ。
を有限集合、 を有向辺の集合とし、各辺 に容量 (実数)が与えられたネットワーク を考える。相異なる 2 頂点 (始点)と (終点)を固定する。
, を満たす部分集合 を - カットといい、その容量を
と定める。容量が最小の - カットを最小カットという。
, がともに最小カットであるとき、 も最小カットであることを証明せよ。
なお、フロー(各辺で を満たし、 以外の各頂点で流入量と流出量が等しい関数 )の値 について、次の 2 つは用いてよい。
- 任意の - カット に対して
- 最大流最小カット定理(最大フローの値は最小カットの容量に等しい)
頂点集合 をもつ有向ネットワークがあり、有向辺とその容量は次の 本である。
ここで - カットとは、、 を満たす部分集合 のことをいい、その容量を から へ向かう有向辺の容量の総和で定める。容量が最小となる - カット (最小カット)は全部でいくつあるか。
頂点集合
をもつ有向ネットワーク を考える。 の有向辺とその容量は次の 本である。
- に対し、辺 。容量は順に
- すべての に対し、辺 ( 本)。容量はすべて
- に対し、辺 。容量は順に
における から への最大流の流量を求めよ。
頂点集合 をもつ有向ネットワークがあり、有向辺 とその容量は次のとおりである。
を始点、 を終点とする。ほかの辺の容量はそのままにして、ある 1 本の辺 の容量だけを 増やしたとき、 から への最大流の値が元の値より大きくなるような番号 をすべて求め、集合で答えよ。