ダイクストラ法のまとめ 最適性の原理に基づくシンプルな方法 計算終了時には始点から各ノードへの最短 路と最短距離が求まっている 計算量は 1反復ごとに一つのノードが S に入る Step 1,2で探索するノードの数は高々 n それぞれの枝が計算で用いられるのは1 回のみ + = 2015/5/22 10 ネットワークシンプレックス法 最短路問題,最大流問題,最小費用流問題 などはすべてLPに定式化できる 定式化の方法 特徴 2015/5/22 11 最小費用流問題 各枝の容量と,1単位フローを流すときのコストが与えられたと き,各ノードでの需要量と供給量を満たすような最も費用の安 いフローを求めよ. (7,1) 10 1 (8,2) (容量,コスト) 3 2 (2,2) (7,1) 3 0 4 (10,3) 0 0 (6,5) 5 (7,1) (4,5) 7 ー5 (7,2) (5,5) 6 ー8 供給量(需要量) 2015/5/22 12 供給量が正:ソース,供給節点(supply) (1,2) 供給量が負:シンク,需要節点(demand) (7,6) 供給量が0:通過ノード (3,4,5) 2015/5/22 13 LPへの定式化 xij : 枝(i, j )を通るフロー cij : 枝(i, j )の単位コスト(負でも良い) uij : 枝(i, j )の容量(下限がある場合もある) とおくと,目的関数は min cij xij (i , j ) E 2015/5/22 14 制約条件 容量制約 0 xij uij (i, j ) E フロー保存則 (ノードから出て行くフロー) ー(ノードに入ってくるフロー)=需要供給量 xij j (i , j ) E x ji bi i V j ( j ,i ) E bi : ノード i での需要供給量 2015/5/22 15 (7,1) 10 1 (8,2) 3 2 (2,2) (7,1) 3 0 (6,5) 0 4 (10,3) 0 ノード1(供給点): x12 5 (7,1) (4,5) 7 ー5 (7,2) (5,5) 6 ー8 x13 10 ノード4(通過点): x43 ( x24 x74 ) 0 ノード6(需要点): x65 x76 ) 2015/5/22 ( x36 8 16 LPへの定式化 min x12 2 x13 2 x24 5 x25 3 x36 s.t. x12 x13 x12 x24 x57 2 x65 5 x74 5 x76 10 係数行列をAとおく x25 x13 x43 x36 x24 3 x43 0 x43 x25 x74 x57 x36 0 x65 0 x65 x57 x74 0 x12 7, 0 x13 8, 0 x24 2, 0 x25 6, 0 x36 10, 0 x43 7, 0 x57 7 ,0 x65 7, 0 x74 4, 0 x76 2015/5/22 x76 8 x76 5 5 17 x x12 , x13 , x24 , x25 , x36 , x43 , x57 , x65 , x74 , x76 u 7,8,2,6,10,7,7,7,4,5 T c 1,2,2,5,5,1,1,2,5,5 T , 1 1 b T 10,3,0,0,0, 8, 5 T 1 1 1 1 A 1 1 1 1 1 1 1 1 1 1 1 1 1 1 とおくと min c T x s.t. Ax b, 0 2015/5/22 x u 上下限付き線形計画問題 18 (節点枝)接続行列 x12 x13 x24 枝 x25 x36 x43 x57 x65 x74 節点 1 1 1 1 1 2 1 1 1 1 3 4 1 1 1 5 1 1 1 6 1 1 7 基底行列をみつけるのが難しい 1 1 x76 1 2015/5/22 1 1 4 3 すべての行を足すと0になる 2 接続行列はフルランクではない 19 (7,1) 10 1 3 2 0 (2,2) (7,1) (8,2) (U,C) (U,C) 3 0 (6,5) 5 (4,5) 4 7 ー5 (7,2) (10,3) 0 (7,1) (U,C) (5,5) 6 ー8 (U,C) 補助節点 補助節点を作り,補助枝 供給点から補助節点への枝 補助節点から需要点への枝 を追加.枝の単位コストC:十分大,容量U:十分大 とする 2015/5/22 20 x12 補助接点を含んだ接続行列A’はフルランク 1 1 1 x13 x24 x25 1 1 1 1 x36 x43 x57 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 補助枝のフロー 2015/5/22 x65 x74 x76 x1a x2 a xa 6 10 3 0 0 0 8 5 xa 7 21 フルランクにするためには適当な行を消去するだけ でもよい(打ち切り接続行列という) 1 1 1 1 1 1 A 1 1 1 1 1 1 1 1 1 2015/5/22 1 1 1 1 例えば,最下行を消すとフルランク (ただしシンプレックス法には不向き) 1 22 補助枝は,人為変数に対応 単位コストを十分大きく取る 補助枝以外のコスト=0(二段階法) →シンプレックス法で最適解が求まる →補助枝にフローがあれば実行不能 逆行列の要素が0,±1 接続行列の特徴 疎性+完全ユニモジュラ性 により,実用上最も有効に解ける 2015/5/22 23 最大流問題の場合 7 1 4 2 4 4 5 2 1 2 3 3 4 7 3 6 4 補助枝:単位コスト=-1,容量無限大(十分大) 元の枝の単位コストはすべて0として最小費用流問題を解く 需要点,供給点がない:循環流問題 2015/5/22 24 最大流最小カットの定理とLP S 1 7 4 2 4 4 1 2 3 4 5 T 3 2 7 3 6 4 カット:ソース 1 を含むノード集合 S とシンク 7 を 含むノード集合 T に分割したもの カット容量: , =∑( , )∈( , ) 上の例では 2+4+3=9 2015/5/22 25 最大流最小カットの定理とLP S 1 7 4 2 4 4 1 2 3 4 5 T 3 2 7 3 6 4 最大流最小カットの定理: カット容量 , の最小値は最大流と等しい (これはLPの双対定理と同じである) 上の例は最小カット2+1+2+3=8(最大流) 2015/5/22 26 組み合わせ的解法の計算量 節点数 n,枝数 m とする. 最短路問題 ダイクストラ法: O n 2 O m 最大流問題 Dinic (1970): O n 2 m Goldberg, Tarjan(1986): 2015/5/22 O n2 O mn log n 2 m 27 最小費用流 Tardos (1985): O nm 2 log 2 n n3m Goldberg, Tarjan (1987): O nm 2 log n log n 2 m (強)多項式時間アルゴリズム: 計算時間が,節点数と枝数の多項式 ネットワークシンプレックス法は多項式アルゴリ ズムではないが,実用上早い 2015/5/22 28 演習課題 最短路問題をLPに定式化するにはどうすればよいか? 2. 前問の方法を用いて,以下の最短路問題(1から7までの最短路を求め よ)をLPに定式化せよ.また,LPの最適性条件を用いて,最短路であること を示せ. 1. 1 1 7 2 2 4 1 5 3 2 5 3 8 7 3 6 4 締め切り:5月28日(木)12時 Ⅳ系事務室まで 2015/5/22 29
© Copyright 2024 ExpyDoc