• 検索結果がありません。

3.最小費用フロー問題

N/A
N/A
Protected

Academic year: 2021

シェア "3.最小費用フロー問題"

Copied!
26
0
0

読み込み中.... (全文を見る)

全文

(1)

数理計画法 第 8

ネットワーク計画

2.最大フロー問題

3.最小費用フロー問題

担当: 塩浦昭義

(

情報科学研究科 准教授

)

[email protected]

(2)

中間試験の結果について

25点以上は合格,24点以下は不合格.

最高点45点,平均26.64点

不合格の学生の一部には救済措置有り

中間試験の問題を印刷し,それをレポートとして提出

締切は1/8,ただし得点が39点以下の場合は不合格確定

過去のレポート提出状況が良くない学生は追加レポート有り

未提出のレポート,および1点以下だったレポートについて再 提出すること.こちらもきちんと解いて提出すること

(3)

最小カット問題

最小カット問題

入力:グラフ G = (V, E), 頂点 s, t V 出力:容量最小の s-t カット(最小カット)

3

1 5

2

4

3

6 2

9

s

d b

c a

t

容量16 容量9

最大フロー最小カット定理 最大フローのフロー値と最小 カットの容量は等しい

以降はこの定理の 証明を行う

(4)

最大フロー最小カット定理の証明(その1)

最大フロー(xij | (i,j) E)に対し,

ある s-t カット(S, T)f = U(S, T) を満たすならば,

それは最小カット

フロー増加法の終了時に、

このような s-tカットが実際に存在することを示す

性質2:任意のs-tカット(S, T) とフロー (xij | (i,j) E) に対し フロー量 f ≦ カットの容量 U(S,T)

(5)

最大フロー最小カット定理の証明(その2)

s

d b

c a

0/3 t

2/2 4/8

5/6

2/4

3/3 0/6 2/2

3/3

最大フローに対して

残余ネットワークを作る

s

d b

c a

t

残余ネットワークには s-t パスが存在しない

S

T

S = 残余ネットワークにおいて s から到達可能な頂点集合 T = V – S

に対し、 (S, T) s-t カット

最大フロー

(6)

最大フロー最小カット定理の証明(その3)

s

d b

c a

t

S

T

S = s から到達可能な頂点集合

T = V – S

残余ネットワークにおいて

SからTに向かう枝は存在しない

元のネットワークにおいて

SからTに向かう枝では xij = uij TからSに向かう枝では xij = 0

s

d b

c a

0/3 t

2/2 4/8

5/6

2/4

3/3 0/6 2/2

3/3

(7)

最大フロー最小カット定理の証明(その4)

元のネットワークにおいて

SからTに向かう枝では xij = uij TからSに向かう枝では xij = 0

s

d b

c a

0/3 t

2/2 4/8

5/6

2/4

3/3 0/6 2/2

3/3

x(S, T) = {xij | (i,j) はSからTへ向かう枝}

= {uij | (i,j) はSからTへ向かう枝}

x(T, S) = {xij | (i,j) はTからSへ向かう枝} = 0

x(S, T) x(T, S) = U(S, T) 性質1より f = x(S,T) – x(T, S)

f = U(S, T) (証明終わり)

(8)

最大フロー最小カット定理

定理:

フロー増加法により求められたフローは最大フロー S = 残余ネットワークで s より到達可能な頂点集合

T = V – S

とすると、(S, T) は最小s-t カット さらに f = U(S,T) が成り立つ

最大フロー最小カット定理:

最大フロー (xij | (i,j) E) と最小s-tカット(S,T)に対し fU(S,T)

(9)

最小費用フロー問題の定義

需要点 3,7

1,8 5,3

2,7

4,2

3,1

6,1 2,9

9,4

s

d b

c a

t

枝の容量

入力:有向グラフ G = (V, E)

供給点 s V, 需要点 t V, 需要(供給)量α > 0

各枝 (i, j) V の容量 uij0, 費用 cij

出力:需要供給を満たすフローで総費用が最小のもの

供給点 枝の費用

供給点から 需要点へ

α = 6 だけ流す

(10)

最小費用フロー問題の定式化

{xsj | (s,j) s から出る} - ∑{xis | (i,s) s に入る} = α

{xtj | (t,j) t から出る} - ∑{xit | (i,t) t に入る} = -α

{xkj | (k,j) k から出る} - ∑{xik | (i,k) k に入る} = 0 (k V – {s, t}) 最小化 ∑{ cij xij | (i,j) ∈E }

条件 0 xijuij ( (i,j) E )

各枝の費用

×フロー量 の和 各枝の容量条件

各頂点での

流量保存条件 需要供給量に

関する条件

(11)

需要供給を満たすフローの求め方

3,7

1,8 5,3

2,7

4,2

3,1

6,1 2,9

9,4

s

d b

c a

t

(1)人工問題として最大フロー問題を作る

(2)人工問題の最大フローにおいて

f = α ⇒ 現在のフローは需要供給を満たす

f < α ⇒ 需要供給を満たすフローは存在しない

s’ t

容量α 容量α

各枝の費用は無視

(12)

フローの最適性判定

2,2 4,1

3,8 2,5

s

b a

t

どうやって最小費用フローであることを判定するか?

--- 残余ネットワークの利用 問題例

3,3 供給量

4

需要量

4 0

3

1 1

s

b a

t

3

フローの費用=25 最小か?

フローの例

(13)

残余ネットワークの作り方(その1)

最大フローのときとほとんど同じ作り方 x = (xij | (i,j) E): 現在のフロー

フロー x に関する残余ネットワーク Gx= (V, Ex) Ex = FxRx

順向きの枝集合

Fx = { (i, j) | (i, j) E, xij < uij} 容量 uxij = uij – xij, 費用 cij

i j

xij < uij

i j

容量uij - xij 逆向きの枝集合

Rx = { (j, i) | (i, j) E, xij > 0}

容量 uxji = xij, 費用 - cij

i j

xij > 0

i j

容量xij 費用 - cij

費用 cij

(14)

残余ネットワークの作り方(その2)

2,2 4,1

3,8 2,5

s

b a

t

問題例

3,3

0 3

1 1

s

b a

t

3

フローの例

1,5

s

b a

t

3,-3

1,-8 2,8 3,-1 1,1

残余ネットワーク

2,2

1,-5

(15)

残余ネットワークの性質(その1)

残余ネットワークの閉路に注目

閉路の容量α

=閉路に含まれる枝の容量の最小値=1 閉路の費用γ

=閉路に含まれる枝の費用の和=-5

1,5

s

b a

t

3,-3

1,-8 2,8 3,-1 1,1

2,2

1,-5

(16)

残余ネットワークの性質(その2)

0 3

1 1

s

b a

t

フローの例 3 残余ネットワーク

残余ネットワークの閉路を用いてフローを更新

閉路の容量α=1 閉路の費用γ=-5

閉路の枝と

同じ向き⇒フロー値に+α 逆の向き⇒フロー値にーα 無関係⇒フロー値は不変

+1

+1 -1

1,5

s

b a

t

3,-3

1,-8 2,8 3,-1 1,1

2,2

1,-5

この更新により、フローの

費用はαγ(=-

5

)増加

(17)

残余ネットワークの性質(その3)

性質:残余ネットワークに費用が負の閉路が存在

⇒ フローの費用を減少させることが可能

⇒ 現在のフローは費用最小でない 以上の議論より、以下が成り立つ

実は、逆も成り立つ(証明は後で)

性質:現在のフローは費用最小でない

⇒ 残余ネットワークに費用が負の閉路が存在 2つの性質をまとめると

定理:現在のフローは費用最小

⇔ 残余ネットワークに費用が負の閉路が存在しない

(18)

残余ネットワークの性質(その4)

1 4

0 1

s

b a

t

3

修正後のフロー 残余ネットワーク

費用が負の閉路がない

⇒ 現在のフローは費用最小 1,5

s

b a

t

3,-3

2,8 4,-1

1,2

1,-5 1,-2

費用5

費用4

(19)

負閉路消去法

最小費用フローを求めるためのアルゴリズム

ステップ0:人工問題を解いて、需要供給量を満たす フローを求める

ステップ1:現在のフローに関する残余ネットワークを作る ステップ2:残余ネットワークに費用が負の閉路が

存在しない⇒ 現在のフローは費用最小(終了)

ステップ3:残余ネットワークの費用が負の閉路を求め、

それを用いて現在のフローを更新する ステップ4:ステップ1へ戻る

(20)

性質の証明(その1)

性質:現在のフローは費用最小でない

⇒ 残余ネットワークに費用が負の閉路が存在

0 2

2 2

s

b a

t

2 現在のフロー x

フロー x に関する

残余ネットワーク上で x* x の差を表現

最小費用フロー x*

1 4

0 1

s

b a

t

3 2

1

1

2 1

xij* - xij0 ⇒ 枝 (i, j) xij*-xij xij* - xij < 0 ⇒ 枝 (j, i) xij – xij*

その他の枝に0

s

b a

t

1,3

2,-8 1,8 2,-1 2,1

2,2

2,-5 0 2,-3

0

0

(21)

性質の証明(その2)

x* x の差:

x に関する残余ネットワーク上で 容量条件と流量保存則を満たす

⇒ 残余ネットワーク上の

「フロー」

差を表す「フロー」の費用

=(x* の費用)

ー(x の費用)

< 0

0 2

2 2

s

b a

t

2

現在のフロー x 最小費用

フロー x*

1 4

0 1

s

b a

t

3

費用 -14 費用 20 費用 34 2

1

1

2 1

s

b a

t

1,3

2,-8 1,8 2,-1 2,1

2,2

2,-5 0 2,-3

0

0

(22)

性質の証明(その3)

x* x の差を表す「フロー」:

x に関する残余ネットワーク上で 容量条件と流量保存則を満たす

閉路上を流れる フローに分解可能

フロー量1

s

b a

t s

b a

t

フロー量1 費用 -14 費用 -5 費用 -9

差を表す「フロー」の費用

=閉路上のフローの費用 の合計 2

1

1

2 1

s

b a

t

1,3

2,-8 1,8 2,-1 2,1

2,2

2,-5 0 2,-3

0

0

(23)

性質の証明(その4)

閉路上を流れるフロー の費用

=(閉路の費用)

×(フロー量)

フロー量1

s

b a

t s

b a

t

フロー量1 閉路上のフローの

費用の合計

=差を表す「フロー」の費用

< 0

費用 -5 費用 -9

いずれかの閉路の費用は負 -8

1

2

-8

1 3

-5 費用 -14

x の残余ネットワークに費用が負の閉路が存在

(証明終わり)

(24)

負閉路消去法の計算時間

※各枝の容量,費用は整数と仮定 U = 枝容量の最大値,

C = 枝費用の絶対値の最大値 m = 枝の数, n = 頂点の数

各反復においてフローの費用が1以上減る

mCU ≦ フローの費用 ≦ mCU

反復回数 ≦ 2mCU 以下

各反復での計算時間

= 残余ネットワークの負閉路を求める時間

最短路問題のアルゴリズムを使うと O(m n) 時間

∴ 計算時間は O(m2 n C U)

(入力サイズは m + n + log U + log C なので,指数時間)

(25)

レポート問題

問1:次の最小費用フロー問題に対して、

(1)定式化せよ

(2)与えられた初期フローに対して負閉路消去法を適用し,

最小費用フローを求めよ(途中の計算過程も省略せず書くこと)

(a)

2,2 4,1

3,8 2,5

s

b a

t

3,3

需要供給量4

0 3

1 1

s

b a

t

3

初期フロー

(26)

レポート問題

問2:次の最小費用フロー問題に対して、

(1)定式化せよ

(2)負閉路消去法を用いて最小費用フローを求めよ

(途中の計算過程も省略せず書くこと)

(b)

s

z c

x

a 3

1

t

b y

各枝の容量は1

s から出る枝と t に入る枝の費用は0 それ以外は各枝の数値を参照

3

2

2 3

需要供給量 3

s

z c

x a 1

0

t

b 1 y

0

1 0

初期フロー

1 1

1 1

1 1

参照

関連したドキュメント

する議論を欠落させたことで生じた問題をいくつか挙げて

が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..

 複雑性・多様性を有する健康問題の解決を図り、保健師の使命を全うするに は、地域の人々や関係者・関係機関との

AC100Vの供給開始/供給停止を行います。 動作の緊急停止を行います。

最愛の隣人・中国と、相互理解を深める友愛のこころ

問題解決を図るため荷役作業の遠隔操作システムを開発する。これは荷役ポンプと荷役 弁を遠隔で操作しバラストポンプ・喫水計・液面計・積付計算機などを連動させ通常

ヘッジ手段のキャッシュ・フロー変動の累計を半期

 大都市の責務として、ゼロエミッション東京を実現するためには、使用するエネルギーを可能な限り最小化するととも