Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LPマスターへの道

terapoon
September 26, 2020

 LPマスターへの道

Combinatorial Optimization (Korte) 復習会セミナー資料

誤植訂正済version

terapoon

September 26, 2020
Tweet

More Decks by terapoon

Other Decks in Science

Transcript

  1. 目次 u 1. LP導入 u 2. 単体法(simplex algorithm) u 3.

    LP双対性(duality) u 4. LPが多項式時間で解けることの証明(Khachiyan’s Theorem) u 5. IP導入 u 6. TDI性(total dual integrality)と完全単模性(totally unimodularity) u 7. 切除平面法(cutting plane method) 3
  2. LPとは u LPとは、線形計画問題(Linear Programming)のことで、以下の様に定式化される 問題 ∈ ℝ!×#, ∈ ℝ!, ∈

    ℝ#に対し、 max $ ≤ の最大を達成する ∈ ℝ#を見つける 多面体(polyhedron) ≔ {| ≤ } 超平面(hyperplane) {|$ = } ※最大値を達成する超平面を 支持超平面(supporting hyperplane) という 最大! 最適解(optimal solution) 実行可能解 (feasible solution) 5
  3. LPの例 u 様々な組み合わせ最適化問題がLPにより定式化できる (例) 売り上げの最大化 ある会社はn個の製品(! , … , "

    としよう)を売っている。 会社は製品の材料としてm個の資源(! , … , # としよう)を仕⼊れており、製品$ を1グラ ム作るためには資源% が%,$ ∈ ℝグラムだけ必要である。 製品$ を1グラム作ることで、利益が$ ∈ ℝドル出る。 ある⽇、この会社はそれぞれの資源を% ∈ ℝグラムだけ仕⼊れた。 この⽇の利益を最⼤にするにはどの製品を何グラム製造するのが良いだろうか︖ (Exercise 1) これをLPで定式化してみよう 6
  4. Exercise 1の答え 製品% を% グラム作るとすると、利益は 4 %&' # % %

    ドル得られる。 使う資源の量が仕入れた資源の量以内となっている必要があるため、各資源( について、 4 %&' # (,% % ≤ ( を満たす必要がある。 よって、 ≔ ( , , : = (,% , ≔ % なる ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#を用いて $ ≤ の最大を達成するxを見つけるLPとして定式化できる。 7
  5. LPの分類 Polyhedronは空か? ≤ = ∅? 実行可能でない (infeasible) Polyhedronはhyperplaneの 法線方向について有界か? max

    $ ≤ < ∞? 実行可能 (feasible) 非有界 (unbouded) Yes Yes No No = ∅ Supporting hyperplane 8
  6. 単体法とは u 実行可能(feasible)なLPを高速にとく手法として、単体法(simplex algorithm)、内点法 (interior point method)などが知られている。 u ここでは単体法のみを取り扱う。 u

    単体法は平均的には高速だが、worst caseでは指数時間かかるので、LPが多項式時間で解け る証明にはならないことに注意。内点法は多項式時間のアルゴリズム u [事実] 実行可能(feasible)なLPの最大値はいずれかの頂点(vertex)にて達成される → 隣接頂点を巡回していけば解が求まる!! → これが単体法のidea 多面体(polyhedron) ≔ {| ≤ } 最大! 10
  7. 弱双対性定理(weak duality theorem) をLP max{$| ≤ } の実行可能解(feasible solution), をLP

    min $ $ = , ≥ 0 の実行可能解(feasible solution)とする。 この時、$ ≤ $が成り立つ。 (証明) $ = ($)$ = $ ≤ $ ∎ 単体法の正当性は弱双対性定理に準拠している。 11
  8. 単体法のアルゴリズム ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈ ≔

    {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはminimalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2 に戻る。 12
  9. 単体法のアルゴリズムの正当性 (1/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ ),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはminimalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2に戻 る。 xはvertexなので必ず等式を満たす部分不等式系が存在する(Proposition 3.9) → この様な行の部分集合Jは必ず取れることが保証される 13
  10. 単体法のアルゴリズムの正当性 (2/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはmininalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2に 戻る。 双対LPの解になるまでyを更新していく。 yの満たすべき条件は $ = , ≥ 0 の二つなので、一つ目を満たす様なものを取ってきて二 つ目を満たすまでPの頂点を巡回することを続ける。 単体法のアルゴリズム 14
  11. 単体法のアルゴリズムの正当性 (3/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはmininalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2に 戻る。 ≥ 0ならばはLP min $ $ = , ≥ 0 の実行可能解(feasible solution) となる。 yのJ以外の行に対応する部分が0であることから $ = ($) = $+ ,'+ = $+ ,'+ = $ となる。弱双対性定理(weak duality theorem)より、 $ ≤ $∗ ≤ $ よって、 $ = $∗ が成立し、確かにxは最適解の一つとなっている。 15
  12. 単体法のアルゴリズムの正当性 (4/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはmininalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2に 戻る。 ≥ 0とすることが目標なので、% < 0となっている行に着目する。 % が大きくなる方向にxを動かしたい。 $ = $ = −% > 0 より、この方向に動かすと解は良くなる。 16
  13. 単体法のアルゴリズムの正当性 (5/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはminimalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2に戻 る。 ≤ 0であるとき、任意の ≥ 0に対し、 + ≤ + ≤ となるので、xをどれだけ動かしてもfeasible solutionとなる。 xを動かせば動かすほど$は大きくなるので、確かにこれは$の値が 発散しうる、つまりLPがunboudedであることを意味する。 17
  14. 単体法のアルゴリズムの正当性 (6/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはminimalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2に 戻る。 5を突破したので、方向wへxを動かせる幅には限りがある、 すなわち動かしすぎるとPを飛び出してしまう)ことがわかった。 定義より λ≧0に注意されたい。幅をλでとると、 (i) 5 ≤ 0なら、 5 + ≤ 5 ≤ 5 (ii) 5 > 0ならλを探すときの候補となった行なので、 5 + ≤ 5 + 5 − 5 5 Y 5 = 5 となるのでfeasible solutionのままとなる。 18
  15. 単体法のアルゴリズムの正当性 (7/7) ∈ ℝ!×#, ∈ ℝ!, ∈ ℝ#, vertex ∈

    ≔ {*|′ ≤ }の4つを入力として受け取る。 1. が不等式系を等式で満たしている部分を抜き出す。これを、+ = + とする。(+ は正則) 2. = $を満たすを求める。に属する部分は(+ $),'とし、それ以外は0にする。 3. ≥ 0ならLPはfeasible, 終了してを最適解として返す。そうでなければ4へ進む。 4. のエントリのうち、% < 0となるものを一つ選び、対応する −(+ ),'の列をとする。 +\{%} = 0, % = −1となる。 5. ≤ 0ならLPはunbouded, 終了してunboudedな証拠を返す。それ以外は6へ進む。 6. ≔ min 0!,1!2 1!3 Q ∈ 1, … , , ( > 0 を計算する。(jはminimalにとる) 7. ≔ + と更新する。これによっては( = ( を満たす。 ≔ (\{}) ∪ {}と更新して2 に戻る。 x, Jの更新後もアルゴリズムが回ることを確認する。 +\{%} + = +\{%} = +\{%} ( + = ( + ( Y ( − ( ( Y = ( より、更新後も+ = + を満たしている。また、 +\ % = 0, ( > 0 より、+ の正則性も保たれる。 以上により、アルゴリズムが回る。 19
  16. 単体法の効率の良い実装 単体法の効率の良い実装としてタブロー法がある。 W.l.o.g max{$| ≤ , ≥ 0}という形のLPを考える。 計算の過程をタブローと呼ばれるデータ構造を保持することで簡略化 6

    ≔ 6 () 6 ̅ 66 − ̅ $ ただし、 * ≔ − , * ≔ 0 , ̅ ≔ $, 0 であり、J ∈ {1, … , + }!は′+ = ′+ となるようにとる。 ≔ 残りの集合, 6 ≔ (()6),' である。 ※max{'| − ≤ ( 0 )}と変形できるので これまで考えてきたLPと等価 20
  17. タブローの意味 c ≔ c () c ̅ cc − ̅

    d ′( = ′( であり、 = + − = ) − ) = *() − ))* より * = () − ))* となる。つまり等式が成立していない部分の残差が格納されている。 最大化しようとしている値そのもの ′' = を満たすで、* = 0となるものがこれ。 (転置されている) 実際、 ( ̅ ** − ̅ )* = ̅ ** ()*− ̅ * = 0 ′' = )' ()*' * ' ̅ *' + = となる。 ≥ 0の判定はここを見れば良い。 21
  18. タブローの更新 ! ≔ ! () ! ̅ !! − ̅

    " ≔ min (*)% (*()$ )% | ∈ 1, … , , * ()$ % > 0 とすれば、単体法のλと対応する。 ) ≔ \{} ∪ {} と更新される。 jの候補が複数あるときは添字最小のものを選ぶ。(添字最小の規則) まず、j行目の要素をi列目の要素で割る。 次にj行目を使ってi列目がj行目以外全て0になるまで掃き出す。 この操作をピボッティングという。 これでタブローの更新が完了。 B’に対応していることはTheorem 3.17を参照。 ここでは照明を省略する。 掃き出しによって'は −$ = ' 増えているので、確かに ≔ + という更新と増分が対応している!! 22
  19. Exercise 2の答え (1/5) = 1 2 2 1 , =

    3 3 , c = 2 3 * = − = −1 0 0 −1 1 2 2 1 , ̅ = $, 0 = (2, 3, 0, 0) = (0,0)に対して′+ = ′+ より、 = (1,2), = (3,4)とわかる。 6 = (()6),'= ,' = 以上より、最初のタブローは 6 ≔ 6 6 ̅ 66 − ̅ $ = − ̅ $ = 24
  20. 2段階単体法 (概要) max $ * ≤ *, ** ≤ **,

    ≥ 0 (′ ≥ 0, ′′ < 0) というLPを解く前に、スラック変数yを導入し、 min 1** + 1|* ≤ ′, ** + ≥ **, , ≥ 0 というLPを単体法で解く。x=0, y=0を頂点として与える。 (i) 最適値が1′′の時 これはy=0であること、つまり得られたxが元のLPの頂点となっていることを意味する。 このxを頂点として与えて元のLPを解く。 (※タブローは作り直さなくても使い回せる) (ii) 最適値が1′′ではない時 元のLPは解がないことがわかる。 2段階単体法は任意のLPに適用可能! 30
  21. 双対問題 LP max $ ≤ に対し、min $ $ = ,

    ≥ 0} を双対問題という。 [Proposition 3.19] LPの双対の双対は元のLPと等価である。 (証明) min $ $ = , ≥ 0 = −max −$| $ −$ − ≤ − 0 である。この双対問題は、 −min $ − $*| − − * = −, , *, ≥ 0 となる。 ≔ * − と置き換えると、元のLPと一致する。∎ primal LPという。 dual LPという。 32
  22. (強)双対性定理 (duality theorem) ≔ ≤ , ≔ {|$ = ,

    ≥ 0}とする。この時、 ≠ ∅ ∧ ≠ ∅ ⟹ max $ ∈ = min $ ∈ が成り立つ。すなわち、primal LPとdual LPがともにinfeasibleでない時、両LPの最適値 (optimum value)が一致する。 (証明) ≠ ∅よりpolyhedron Dは頂点yを持つ。 ≠ ∅であることからprimal LPはfeasible solution xを持ち、弱双対性定理(weak duality theorem)よりprimal LPはunboudedではないことが保証される。 したがって単体法によりdual LPをyをはじめの頂点として解き、dual LPの最適解 (optimum value) y*とタブローにあるdual LPのdual LPの最適解z*を取得できる。 dual LPのdual LPはprimal LPと等価であるので、z*はprimal LPの最適解。 したがって、単体法の正当性により$∗ = $∗が従う。∎ 33
  23. 相補性条件 (complementary slackness conditions) 強双対性定理(duality theorem)より以下の3条件の同値性が言える。 1. , がそれぞれprimal LP,

    dual LPの最適解(optimum solution) 2. $ = $ (最適値(optimum value)が一致する) 3. $ − = 0 (相補性条件という) 3つ目の同値条件を相補性条件という。 →最適解がもとまった時に検算に使える (e.g.単体法のプログラムのデバッグ) (相補性条件の証明) $ − = $ − $ = $ − $より、2つ目の条件と同値。∎ 34
  24. 違う形のLPの相補性条件 primal LP … min{$| ≥ , ≥ 0} dual

    LP … max{$|$ ≤ , ≥ 0} というprimal-dualのLPの組に対する相補性条件は、 1. $ − $ = 0 (primal complementary slackness conditions) 2. $ − = 0 (dual complementary slackness conditions) の二つが成り立つこととなる。 35
  25. 実行可能かどうかの判定法 LPが実行可能でない(infeasible)ことと双対性の関係を知りたい。 以下の定理(および言い換えた補題)が重要 [Farkas’s Lemma] 1. ≤ ≠ ∅ ⟺

    ∃ ≥ 0 $ = 0 . . $ ≥ 0 2. ≤ , ≥ 0 ≠ ∅ ⟺ ∃ ≥ 0 $ ≥ 0 . . $ ≥ 0 3. = , ≥ 0 ≠ ∅ ⟺ ∃ $ ≥ 0 . . $ ≥ 0 ※ 1はLP双対性を用いて証明できる。 ※ 2,3はLPを1の形に変形して帰着させることで証明可能。 36
  26. LPとdual LPの関係性 [Theorem 3.27] 1. LPがunbouded => dual LPがinfeasible 2.

    LPがfeasible(最適解を持つ) => dual LPもfeasible(最適解を持つ) (証明) 1. 弱双対性定理(weak duality theorem)より従う。 2. primal LPが最適解x*を持つが、dual LPがinfeasibleである(∄ ≥ 0 . . $ = )と仮定する。 これはFarkas’s Lemma 3の否定より、∀ ≥ 0 . $ < 0と同値。 ≔ ∗ − とおくと = ∗ − ≤ − ≤ よりxはfeasible solution。 ところが、$ = $∗ − $ > $∗となり、x*の最適性に矛盾。∎ 37
  27. 楕円体法(ellipsoid method) u Khachiyanによる証明では楕円体法という手法を利用する。 u 多項式時間ではあるが、係数が大きすぎるため実用的なアルゴリズムではない。 u ( + +

    + + , )-time u 実際の計算には単体法や内点法が用いられる。 u n次元の楕円体(ellipsoid)は以下のように表すことだできる。 , ≔ { ∈ ℝ#| − $,'( − ) ≤ 1} 40
  28. 楕円体法のアルゴリズム (1/5) (8 , 8 ) P 8 楕円体法はpolyhedronが空かどうかを判定する アルゴリズム

    ステップ1 polyhedron Pを含む十分大きな楕円体(8 , 8 )をとる。 41
  29. 楕円体法のアルゴリズム (2/5) (8 , 8 ) (' , ' )

    P ステップ2 適当な角度8 を用いて楕円の中心を通る超平面{|8 $ = 8 $} で楕円体を切断する。 polyhedron Pを含む半分を選択し、その半分を覆うような楕円体 を次の楕円体(' , ' )とする。 ' , ' は以下のように近似的に計算できる。 8 ≔ 8 8 8 $8 8 ' ≈ 8 + 8 + 1 ' ≈ 27 + 3 27 8 − 28 8 $ + 1 {|8 $ = 8 $} 8 ' 42
  30. 楕円体法のアルゴリズム (3/5) (8 , 8 ) (' , ' )

    (' , ' ) (7 , 7 ) P P 同じ操作を繰り返す。 {|8 $ = 8 $} {|' $ = ' $} 8 ' ' 7 43
  31. 楕円体法のアルゴリズム (5/5) (7 , 7 ) Pが空の時は何回楕円を切っても中心がPに入らない → 判定できないのでは?? →

    実は判定できる! [Lemma 4.15] ((59' , 59' )) ( 5 , 5 ) < , ' :# → 切断するごとに楕円の体積はほんの少しずつ減る。 → これを使うことで以下が言える。 [Theorem 4.18] P ≠ ∅ ⟹ > (; ) ( ≔ 107(2 log + 5( + ())) ) → 有限回(N回)の切断で中心がPに入らないならPは空であることが言える。 → 楕円の更新(多項式時間)がO(n^2)回なので全体で多項式時間 7 {|7 $ = 7 $} 45
  32. LPを解く多項式時間アルゴリズム 仕様: max{$| ≤ }を解く。あれば最適解を返す。 ≤ = ∅? {|$ =

    , ≥ 0} = ∅? LPとdual LPの関係により最適解なし 最適解がある。 双対性定理より求めるものはpolyhedron {(, )| ≤ , $ = , ≥ 0, $ = $} の点。Polyhedronの不等式の本数をk本とする。 (i) k=0の時 ガウスの消去法を用いて線形不等式を解くことで(x,y)が求まる。 (ii) k>0の時 不等式を一本等式に変えてpolyhedronが空かどうか判定する。 空ならその不等式は等式で成立していないので削除する。 非空なら等式で成立しているということなのでそのままにする。 この操作により不等式の本数が一本減る。 k=0になるまでこれを繰り返す。 どちらかが空 ともに空でない 46
  33. IPとは u IPとは、整数計画問題(Integer Programming)のことで、以下の様に定式化される 問題 ∈ ℤ!×#, ∈ ℤ!, ∈

    ℤ#に対し、 max $ ≤ , ∈ ℤ# の最大を達成する ∈ ℤ#を見つける 超平面(hyperplane) {|$ = } 最大! 最適解(optimal solution) 多面体(polyhedron) ≔ {| ≤ } 整数格子点 48
  34. IPの例 u IPは、LPに比べて遥かに広範囲な組み合わせ最適化問題を簡単に定式化できる。 (例) ナップザック問題 (NP-hard) n個の荷物があり、これをナップザックに詰めて売りに行きたい。 それぞれの荷物は', … ,

    # 円で売ることができる。 一方で、ナップザックには容量制限があり、kgまでしか荷物を入れることができない。 それぞれの荷物の重さを' , … , # kgとしたとき、売値の合計を最大にするような荷物の 詰め方はどうなるか? (Exercise 3) これをIPで定式化してみよう multi-objectiveな最適化問題の代表格 DPで解け、Pareto最適性を用いて高速化が可能。 詳しくはKorte本の17章へ!! 49
  35. Exercise 3の答え それぞれの荷物に対し、0か1のいずれかの値をとる変数' , … , # を導入する。 % =

    0なら荷物iは詰めて持っていかず、 % = 1なら荷物iはナップザックに詰めて持って いくとする。 このとき、売値は 4 %&' # % % 円となる。ナップザックの容量制限を超過していない必要があるので、 4 %&' # % % ≤ が条件となる。 これで、IPとして定式化することができた。 50
  36. 整数包(integer hull) u LPと違い、整数格子点かつpolyhedronの内部のみを考えることとなる。 u 格子点が頂点に来ていない場合(下図)は、LPよりも遥かに難しい(NP-hard) u 注目すべきはPではなくPの整数包(integer hull)< である。

    u 整数包とは、内部の整数格子点からなる凸包(convex hull) u 整数包は有理多面体(rational polyhedron)である(Theorem 5.1)ので、 整数包が求まればLPと同様に解ける! 最大! 最適解(optimal solution) 多面体(polyhedron) ≔ {| ≤ } Pの整数包(integer hull) ※内部格子点に輪ゴムをかけて 手を離したイメージ 51
  37. IPに対するアプローチ u 整数包(integer hull)と元の多面体が一致する時 u LPと同じように解けば最適整数解が求まる。 u どんな時に一致するか -> スライドの6節へ

    u 整数包(integer hull)と元の多面体が異なる時 u 整数包は元の多面体の一部 u 整数包は有理多面体なので、有理多面体の不等式系が得られればそれをLPと同じように 解けば最適整数解が求まる。 u 元の多面体を超平面で切断して整数包(interger hull)の部分だけをむき出しにするという アプローチが有名 -> スライドの7節へ 52
  38. 多面体がintegralであることの同値条件 (1/6) [Theorem 5.18] 多面体Pがintegralであることと以下が全て同値 (a) Pの全ての面(face)が整数ベクトルを含む。 (b) Pの全ての極小な面(minimal)が整数ベクトルを含む。 (c)

    Pの全ての支持超平面(supporting hyperplane)が整数ベクトルを含む。 (d) Pの全ての有理支持超平面(rational supporting hyperplane)が整数ベクトルを含む。 (e) Unboudedで無いようなLP max{$| ∈ } の最適解(optimal solution)が常に整数ベ クトルとなる。 (f) Unboudedで無いような LP max $ ∈ (: ) の最適値(optimum value) が常に整数となる。 55
  39. 多面体がintegralであることの同値条件 (2/6) [Theorem 5.18] 多面体Pがintegralであることと以下が全て同値 (a) Pの全ての面(face)が整数ベクトルを含む。 (b) Pの全ての極小な面(minimal)が整数ベクトルを含む。 (c)

    Pの全ての支持超平面(supporting hyperplane)が整数ベクトルを含む。 (d) Pの全ての有理支持超平面(rational supporting hyperplane)が整数ベクトルを含む。 (e) Unboudedで無いようなLP max{$| ∈ } の最適解(optimal solution)が常に整数ベ クトルとなる。 (f) Unboudedで無いような LP max $ ∈ (: ) の最適値(optimum value) が常に整数となる。 多面体(polyhedron) P 支持超平面(supporting hyperplane) 0次元の面(face)=頂点(vertex) 2次元の面(face) 1次元の面(face) 56
  40. 多面体がintegralであることの同値条件 (3/6) [Theorem 5.18] 多面体Pがintegralであることと以下が全て同値 (a) Pの全ての面(face)が整数ベクトルを含む。 (b) Pの全ての極小な面(minimal face)が整数ベクトルを含む。

    (c) Pの全ての支持超平面(supporting hyperplane)が整数ベクトルを含む。 (d) Pの全ての有理支持超平面(rational supporting hyperplane)が整数ベクトルを含む。 (e) Unboudedで無いようなLP max{$| ∈ } の最適解(optimal solution)が常に整数ベ クトルとなる。 (f) Unboudedで無いような LP max $ ∈ (: ) の最適値(optimum value) が常に整数となる。 多面体(polyhedron) P 支持超平面(supporting hyperplane) 0次元の面(face)=頂点(vertex) 57
  41. 多面体がintegralであることの同値条件 (4/6) [Theorem 5.18] 多面体Pがintegralであることと以下が全て同値 (a) Pの全ての面(face)が整数ベクトルを含む。 (b) Pの全ての極小な面(minimal)が整数ベクトルを含む。 (c)

    Pの全ての支持超平面(supporting hyperplane)が整数ベクトルを含む。 (d) Pの全ての有理支持超平面(rational supporting hyperplane)が整数ベクトルを含む。 (e) Unboudedで無いようなLP max{$| ∈ } の最適解(optimal solution)が常に整数ベ クトルとなる。 (f) Unboudedで無いような LP max $ ∈ (: ) の最適値(optimum value) が常に整数となる。 支持超平面(supporting hyperplane) 多面体(polyhedron) P 58
  42. 多面体がintegralであることの同値条件 (5/6) [Theorem 5.18] 多面体Pがintegralであることと以下が全て同値 (a) Pの全ての面(face)が整数ベクトルを含む。 (b) Pの全ての極小な面(minimal)が整数ベクトルを含む。 (c)

    Pの全ての支持超平面(supporting hyperplane)が整数ベクトルを含む。 (d) Pの全ての有理支持超平面(rational supporting hyperplane)が整数ベクトルを含む。 (e) Unboudedで無いようなLP max{$| ∈ } の最適解(optimal solution)が常に整数ベ クトルとなる。 (f) Unboudedで無いような LP max $ ∈ (: ) の最適値(optimum value) が常に整数となる。 {|$ = max $* * ∈ } (rational) 59
  43. 多面体がintegralであることの同値条件 (6/6) [Theorem 5.18] 多面体Pがintegralであることと以下が全て同値 (a) Pの全ての面(face)が整数ベクトルを含む。 (b) Pの全ての極小な面(minimal)が整数ベクトルを含む。 (c)

    Pの全ての支持超平面(supporting hyperplane)が整数ベクトルを含む。 (d) Pの全ての有理支持超平面(rational supporting hyperplane)が整数ベクトルを含む。 (e) Unboudedで無いようなLP max{$| ∈ } の最適解(optimal solution)が常に整数ベ クトルとなる。 (f) Unboudedで無いような LP max $ ∈ (: ) の最適値(optimum value) が常に整数となる。 60
  44. 完全双対整数性(total dual integrality, TDI) u ≤ がTDIであるとは、どんな整数ベクトルcに対しても max $ ≤

    = min{$|$ = , ≥ 0} の最適解yが整数ベクトルとなること。 [Theorem 5.18] 任意のrational polyhedron Pに対し、P = {x| ≤ } (A:integral) となる TDIがある。このTDIに対し、 = < ⟺ b をに取れる が成立する。 ※ TDIな不等式系からなるpolyhedronの全ての”face”もまたTDI (Theorem 5.19) 62
  45. 完全単模性(totally unimodular) u 行列Aの任意の小行列式(subdeterminant)の値が0, +1, -1のいずれかとなるとき、 Aは完全単模(totally unimodular)であるという。 u 小行列式:

    Aから1つ以上の行や列を取り除いて得られる正方行列の行列式 (例) = 1 0 1 1 1 0 0 −1 0 この行列はtotally unimodular。実際、 1 = 1, 0 = 0, −1 = −1 1 0 1 1 = 1, 1 1 0 −1 = −1, 0 1 1 0 = 0 のようにどの小行列式も0,+1,-1のいずれかとなっている。 63
  46. 完全単模(totally unimodular)と解の整数性 (1/2) [Theorem 5.21] が ⟺ {| ≤ ,

    ≥ 0}(: )が (=>の証明) Aをtotally unimodularとする。 ≔ {| ≤ , ≥ 0}の任意の頂点をvとすると、vは − ≤ 0 のある部分不等 式系* ≤ ′を等式で成立させる。(A’は正則) よって、 = ′,'である。 クラメルの公式より′,'の各要素は± =*の小行列式 >?@ =* となり、Aがtotally unimodular ゆえA’もtotally unimodularであることから0,-1,+1のいずれかの値しか取らない。 よって、vはintegral∎ 64
  47. 完全単模(totally unimodular)と解の整数性 (2/2) [Theorem 5.21] が ⟺ {| ≤ ,

    ≥ 0}(: )が (<=の証明) Aの小行列式A’(k×k)をとる。Bを右のようにとる。 右の図より|det A’|=|det B|となる。 いま、det Y det ,' = det = 1であり、 ,'がintegralである(証明略,本を参照)ことより det , det ,'がともに整数となるので|det | = 1となり 証明完了。∎ 65
  48. 完全単模(totally unimodular)な行列の例 (例1) 2部グラフの接続行列 (Theorem 5.26) 1 1 0 0

    0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 1 (例2) 有向グラフの接続行列 (Theorem 5.27) ※ 1, -1で矢印の向きを表す。 66 1 2 3 4 5 1 2 3 4 点1 点2 点3 点4 点5 辺 辺 辺 辺 1 2 3 4 完全単模行列を用いてIPで書ける ような最適化問題 ↓ LPとして解ける!!
  49. 一般のIPに対する解法 u 整数包(integer hull)と多面体が異なる場合、IPは難しい u 整数包が整数行列Mと有理ベクトルdを用いて{| ≤ }" = {|

    ≤ }と表せることは証明可能 (Theorem 5.9) u Mとdの構成は複雑で現実的ではない -> 直接整数包を求めるのはしんどい u IPソルバーは以下の二つのアルゴリズムを組み合わせてIPを解く。 1. 分枝限定法(branch and bound, BB) 領域を部分問題に分割して解く。 2. 切除平面法(cutting plane method) 平面で多面体を切断して解く。 Integer hullと多面体の差分を切り取っていくイメージ。 詳しくは本日のセミナー3コマ目で取り扱う。 ここでは触れない。 応用例については本日のセミナー3コマ目で取り扱う。 ここではアルゴリズムの概要に触れるにとどめる。 68
  50. 切除平面法のアルゴリズム (1/5) Supporting hyperplane {|$ = max{$*|′ ∈ }} アフィン半空間

    ≔ {|$ ≤ max{$*|* ∈ }} アフィン半空間Hのinteger hull < (ステップ1) LP max{.| ∈ }を解く。 (ステップ2) Supporting hyperplaneで空間を半分に分ける。 Pを含む方のアフィン半空間をHとする。 (ステップ3) アフィン半空間Hのinteger hull / を求める。 69
  51. 切除平面法のアルゴリズム (2/5) Supporting hyperplane {|$ = max{$*|′ ∈ }} (ステップ4)

    / でpolyhedron Pを切り取る。 残ったpolyhedronをP’とすると、 0 ≔ ⋂/ とすれば良い。 切除後のpolyhedron P’ アフィン半空間 ≔ {|$ ≤ max{$*|* ∈ }} アフィン半空間Hのinteger hull < 取り除かれた部分 70
  52. 切除平面法のアルゴリズム (3/5) Supporting hyperplane {|$ = max{$*|′ ∈ ′}} アフィン半空間

    ′ ≔ {|$ ≤ max{$*|* ∈ }} アフィン半空間Hのinteger hull ′< polyhedron P’ 切除後のpolyhedron P’’ 取り除かれた部分 LPの最適解が整数ベクトルになるまで 同じ操作を繰り返す。 ′/ でpolyhedron P’を切り取る。 残ったpolyhedronをP’’とすると、 0 ≔ ⋂/ となる。 71
  53. 切除平面法のアルゴリズム (4/5) Supporting hyperplane {|$ = max{$*|′ ∈ ′}} アフィン半空間

    ′ ≔ {|$ ≤ max{$*|* ∈ }} アフィン半空間Hのinteger hull ′< polyhedron P’ 切除後のpolyhedron P’’ 取り除かれた部分 LPの最適解が整数ベクトルになるまで 同じ操作を繰り返す。 ′/ でpolyhedron P’を切り取る。 残ったpolyhedronをP’’とすると、 00 ≔ ′⋂′/ となる。 72
  54. 切除平面法(cutting plane method)の正当性 (1/2) u 平面の切除を以下のように定義する。 ≔ ⋂-⊆/ 0 Pはrational

    polyhedron HはPのsupporting hyperplaneを境界とするアフィン半空間 u ⊇ ⊇ ⊇ 1 ⊇ … ⊇ 2 = 23! = … = 0 が成立する。 (Theorem 5.35) u Integer hullは最小不動点!! 0 = . "∈ℕ "() 有限回の切断で終わることが保証されている。 ただし、すぐに終わるかはわからない。 ↓ 多項式回で打ち切って十分な精度のheuristicと して使うことが多い (BBと組み合わせるものが主流) 74
  55. 切除平面法(cutting plane method)の正当性 (2/2) u 切断(関数f)はどうやって求める?? u 一般に求めるのはしんどい -> 近似的に求めるなどの対処

    u [Proposition 5.31] rational polyhedron = {| ≤ }に対し、 = {| ≤ ≥ 0 ℎ } u TDI性があると簡単に求まる!! u [Theorem 5.32] rational polyhedron = {| ≤ }に対し、 ≤ がTDIのときは、 = {| ≤ } 75