SlideShare a Scribd company logo
1 of 77
Download to read offline
LPマスターへの道
Combinatorial Optimization (Korte) 復習会 1日目 セミナー1
1
はじめに
本スライドはCombinatorial Optimization (Korte) (左の写真)
の輪読会の3~5章のまとめとなっている。
LPからIPについて主に取り扱う。
証明の詳細については本書を参照されたい。
2
目次
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
1. LP導入
LPとは何かについて理解しよう
4
LPとは
u LPとは、線形計画問題(Linear Programming)のことで、以下の様に定式化される
問題
𝐴 ∈ ℝ!×#
, 𝑏 ∈ ℝ!
, 𝑐 ∈ ℝ#
に対し、
max 𝑐$
𝑥 𝐴𝑥 ≤ 𝑏 の最大を達成する𝑥 ∈ ℝ#
を見つける
多面体(polyhedron)
𝑃 ≔ {𝑥|𝐴𝑥 ≤ 𝑏}
超平面(hyperplane)
{𝑥|𝑐$
𝑥 = 𝛿}
※最大値を達成する超平面を
支持超平面(supporting hyperplane)
という
最大!
最適解(optimal solution)
実行可能解
(feasible solution)
5
LPの例
u 様々な組み合わせ最適化問題がLPにより定式化できる
(例) 売り上げの最大化
ある会社はn個の製品(𝑝!, … , 𝑝"としよう)を売っている。
会社は製品の材料としてm個の資源(𝑠!, … , 𝑠#としよう)を仕⼊れており、製品𝑝$を1グラ
ム作るためには資源𝑠%が𝑎%,$ ∈ ℝグラムだけ必要である。
製品𝑝$を1グラム作ることで、利益が𝑐$ ∈ ℝドル出る。
ある⽇、この会社はそれぞれの資源を𝑏% ∈ ℝグラムだけ仕⼊れた。
この⽇の利益を最⼤にするにはどの製品を何グラム製造するのが良いだろうか︖
(Exercise 1) これをLPで定式化してみよう
6
Exercise 1の答え
製品𝑝%を𝑥%グラム作るとすると、利益は
4
%&'
#
𝑐% 𝑥%
ドル得られる。
使う資源の量が仕入れた資源の量以内となっている必要があるため、各資源𝑠(について、
4
%&'
#
𝑎(,% 𝑥% ≤ 𝑏(
を満たす必要がある。
よって、𝑏 𝑗 ≔ 𝑏(, 𝐴 𝑗, 𝑖 : = 𝑎(,%, 𝑐 𝑖 ≔ 𝑐%なる𝐴 ∈ ℝ!×#, 𝑏 ∈ ℝ!, 𝑐 ∈ ℝ#を用いて
𝑚𝑎𝑥 𝑐$ 𝑥 𝐴𝑥 ≤ 𝑏
の最大を達成するxを見つけるLPとして定式化できる。
7
LPの分類
Polyhedronは空か?
𝑥 𝐴𝑥 ≤ 𝑏 = ∅?
実行可能でない
(infeasible)
Polyhedronはhyperplaneの
法線方向について有界か?
max 𝑐$
𝑥 𝐴𝑥 ≤ 𝑏 < ∞?
実行可能
(feasible)
非有界
(unbouded)
Yes
Yes
No
No
𝑃 = ∅
Supporting hyperplane
8
2. 単体法(simplex algorithm)
LPを高速に解くアルゴリズムである単体法について理解しよう
9
単体法とは
u 実行可能(feasible)なLPを高速にとく手法として、単体法(simplex algorithm)、内点法
(interior point method)などが知られている。
u ここでは単体法のみを取り扱う。
u 単体法は平均的には高速だが、worst caseでは指数時間かかるので、LPが多項式時間で解け
る証明にはならないことに注意。内点法は多項式時間のアルゴリズム
u [事実] 実行可能(feasible)なLPの最大値はいずれかの頂点(vertex)にて達成される
→ 隣接頂点を巡回していけば解が求まる!!
→ これが単体法のidea
多面体(polyhedron)
𝑃 ≔ {𝑥|𝐴𝑥 ≤ 𝑏}
最大!
10
弱双対性定理(weak duality theorem)
𝑥をLP max{𝑐$
𝑥|𝐴𝑥 ≤ 𝑏} の実行可能解(feasible solution),
𝑦をLP min 𝑏$ 𝑦 𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0 の実行可能解(feasible solution)とする。
この時、𝑐$ 𝑥 ≤ 𝑏$ 𝑦が成り立つ。
(証明)
𝑐$ 𝑥 = (𝐴$ 𝑦)$ 𝑥 = 𝑦$ 𝐴𝑥 ≤ 𝑦$ 𝑏 ∎
単体法の正当性は弱双対性定理に準拠している。
11
単体法のアルゴリズム
𝐴 ∈ ℝ!×#, 𝑏 ∈ ℝ!, 𝑐 ∈ ℝ#, 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
に戻る。
12
単体法のアルゴリズムの正当性 (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はmininalにとる)
7. 𝑥 ≔ 𝑥 + 𝜆𝑤と更新する。これによって𝑥は𝑎( 𝑥 = 𝑏(を満たす。𝐽 ≔ (𝐽{𝑖}) ∪ {𝑗}と更新して2に戻
る。
xはvertexなので必ず等式を満たす部分不等式系が存在する(Proposition 3.9)
→ この様な行の部分集合Jは必ず取れることが保証される
13
単体法のアルゴリズムの正当性 (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
単体法のアルゴリズムの正当性 (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
単体法のアルゴリズムの正当性 (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
単体法のアルゴリズムの正当性 (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はmininalにとる)
7. 𝑥 ≔ 𝑥 + 𝜆𝑤と更新する。これによって𝑥は𝑎( 𝑥 = 𝑏(を満たす。𝐽 ≔ (𝐽{𝑖}) ∪ {𝑗}と更新して2に戻
る。
𝐴𝑤 ≤ 0であるとき、任意の𝜇 ≥ 0に対し、
𝐴 𝑥 + 𝜇𝑤 ≤ 𝑏 + 𝜇𝐴𝑤 ≤ 𝑏
となるので、xをどれだけ動かしてもfeasible solutionとなる。
xを動かせば動かすほど𝑐$ 𝑥は大きくなるので、確かにこれは𝑐$ 𝑥の値が
発散しうる、つまりLPがunboudedであることを意味する。
17
単体法のアルゴリズムの正当性 (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はmininalにとる)
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
単体法のアルゴリズムの正当性 (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はmininalにとる)
7. 𝑥 ≔ 𝑥 + 𝜆𝑤と更新する。これによって𝑥は𝑎( 𝑥 = 𝑏(を満たす。𝐽 ≔ (𝐽{𝑖}) ∪ {𝑗}と更新して2
に戻る。
x, Jの更新後もアルゴリズムが回ることを確認する。
𝐴+{%} 𝑥 + 𝜆𝑤 = 𝐴+{%} 𝑥 = 𝑏+{%}
𝑎( 𝑥 + 𝜆𝑤 = 𝑎( 𝑥 + 𝑎( Y
𝑏( − 𝑎( 𝑥
𝑎( 𝑤
Y 𝑤 = 𝑏(
より、更新後も𝐴+ 𝑥 = 𝑏+を満たしている。また、
𝐴+ % 𝑤 = 0, 𝑎( 𝑤 > 0
より、𝐴+の正則性も保たれる。
以上により、アルゴリズムが回る。
19
単体法の効率の良い実装
単体法の効率の良い実装としてタブロー法がある。
W.l.o.g max{𝑐$ 𝑥|𝐴𝑥 ≤ 𝑏, 𝑥 ≥ 0}という形のLPを考える。
計算の過程をタブローと呼ばれるデータ構造を保持することで簡略化
𝑇6 ≔
𝑄6 (𝐴𝐼) 𝑄6 𝑏
̅𝑐6 𝑄6 𝐴𝐼 − ̅𝑐 𝑐$ 𝑥
ただし、
𝐴* ≔
−𝐼
𝐴
, 𝑏* ≔
0
𝑏
, ̅𝑐 ≔ 𝑐$, 0
であり、J ∈ {1, … , 𝑛 + 𝑚}!は𝐴′+ 𝑥 = 𝑏′+となるようにとる。
𝐵 ≔ 残りの𝑖𝑛𝑑𝑒𝑥集合, 𝑄6 ≔ ((𝐴𝐼)6),'
である。
※max{𝑐' 𝑥|
−𝐼
𝐴
𝑥 ≤ (
0
𝑏
)}と変形できるので
これまで考えてきたLPと等価
20
タブローの意味
𝑇c ≔
𝑄c (𝐴𝐼) 𝑄c 𝑏
̅𝑐c 𝑄c 𝐴𝐼 − ̅𝑐 𝑐d 𝑥
𝐴′( 𝑥 = 𝑏′(であり、
𝑏 = 𝐴𝑥 + 𝐼 𝑏 − 𝐴𝑥 = 𝐴𝐼 𝑏) − 𝐴) 𝑥 = 𝐴𝐼 *(𝑏) − 𝐴) 𝑥)*
より
𝑄* 𝑏 = (𝑏) − 𝐴) 𝑥)*
となる。つまり等式が成立していない部分の残差が格納されている。
最大化しようとしている値そのもの𝐴′' 𝑦 = 𝑐を満たす𝑦で、𝑦* = 0となるものがこれ。
(転置されている)
実際、
( ̅𝑐* 𝑄* 𝐴𝐼 − ̅𝑐)*= ̅𝑐* 𝑄*(𝐴𝐼)*− ̅𝑐* = 0
𝐴′' 𝑦 = 𝐴)'
(𝐴𝐼)*'
𝑄*
' ̅𝑐*'
+ 𝐼𝑐 = 𝑐
となる。
𝑦 ≥ 0の判定はここを見れば良い。 21
タブローの更新
𝑇! ≔
𝑄! (𝐴𝐼) 𝑄! 𝑏
̅𝑐!
𝑄! 𝐴𝐼 − ̅𝑐 𝑐"
𝑥
𝜆 ≔ min
(𝑄* 𝑏)%
(𝑄*(𝐴𝐼)$
)%
|𝑗 ∈ 1, … , 𝑚 , 𝑄*(𝐴𝐼)$
%
> 0
とすれば、単体法のλと対応する。
𝐵) ≔ 𝐵{𝑗} ∪ {𝑖}
と更新される。
jの候補が複数あるときは添字最小のものを選ぶ。(添字最小の規則)
まず、j行目の要素をi列目の要素で割る。
次にj行目を使ってi列目がj行目以外全て0になるまで掃き出す。
この操作をピボッティングという。
これでタブローの更新が完了。
B’に対応していることはTheorem 3.17を参照。
ここでは照明を省略する。
掃き出しによって𝑐' 𝑥は
−𝜆𝑦$ = 𝜆𝑐' 𝑤
増えているので、確かに
𝑥 ≔ 𝑥 + 𝜆𝑤
という更新と増分が対応している!!22
タブローの使用例
(Exercise 2) 以下のLPをタブローを使用した単体法でとけ。
max𝑖𝑚𝑖𝑧𝑒 2𝑥' + 3𝑥7
𝑠𝑢𝑏𝑗𝑒𝑐𝑡 𝑡𝑜 𝑥' + 2𝑥7 ≤ 3
2𝑥' + 𝑥7 ≤ 3
𝑥', 𝑥7 ≥ 0
頂点はx=(0,0)からスタート
23
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 𝑏
̅𝑐6
𝑄6 𝐴𝐼 − ̅𝑐 𝑐$
𝑥
=
𝐴𝐼 𝑏
̅𝑐 𝑐$
𝑥
=
24
Exercise 2の答え (2/5)
25
1. λを計算する。
𝜆 = min
(𝑄! 𝑏)"
(𝑄!(𝐴𝐼)#
)"
|𝑗 ∈ 1, … , 𝑚 , 𝑄!(𝐴𝐼)#
"
> 0 =
3
2
Exercise 2の答え (3/5)
26
𝜆 =
3
22. (j,i)要素でj行目を割る。
Exercise 2の答え (4/5)
27
3. ピボッティングを行う。
i列目のj行目以外が0になるまで掃き出しをする。
Exercise 2の答え (5/5)
28
最適値!!
単体法の問題点
単体法は入力として頂点を与える必要があった。
𝑥 ≥ 0の制約があるので原点をはじめの頂点とすれば良い???
→ polyhedron Pが原点を含まない可能性があるため
→ 2段階単体法を用いる。(次のスライド)
29
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
3. LP双対性(Duality)
LPと双対LPとの関係について整理しよう
31
双対問題
LP max 𝑐$
𝑥 𝐴𝑥 ≤ 𝑏 に対し、min 𝑏$
𝑦 𝐴$
𝑦 = 𝑐, 𝑦 ≥ 0} を双対問題という。
[Proposition 3.19] LPの双対の双対は元のLPと等価である。
(証明)
min 𝑏$ 𝑦 𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0 = −max −𝑏$ 𝑦|
𝐴$
−𝐴$
−𝐼
𝑦 ≤
𝑐
−𝑐
0
である。この双対問題は、
−min 𝑐$ 𝑧 − 𝑐$ 𝑧*| 𝐴 − 𝐴 − 𝐼
𝑧
𝑧*
𝑤
= −𝑏, 𝑧, 𝑧*, 𝑤 ≥ 0
となる。𝑥 ≔ 𝑧* − 𝑧と置き換えると、元のLPと一致する。∎
primal LPという。 dual LPという。
32
(強)双対性定理 (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
相補性条件
(complementary slackness conditions)
強双対性定理(duality theorem)より以下の3条件の同値性が言える。
1. 𝑥, 𝑦がそれぞれprimal LP, dual LPの最適解(optimum solution)
2. 𝑐$ 𝑥 = 𝑏$ 𝑦 (最適値(optimum value)が一致する)
3. 𝑦$ 𝑏 − 𝐴𝑥 = 0 (相補性条件という)
3つ目の同値条件を相補性条件という。
→最適解がもとまった時に検算に使える (e.g.単体法のプログラムのデバッグ)
(相補性条件の証明)
𝑦$
𝑏 − 𝐴𝑥 = 𝑦$
𝑏 − 𝑦$
𝐴𝑥 = 𝑏$
𝑦 − 𝑐$
𝑥より、2つ目の条件と同値。∎
34
違う形の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
実行可能かどうかの判定法
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
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
LPとdual LPの関係まとめ
これまでの結果を図にまとめると以下のようになる。
実行可能(feasible)
実行可能でない
(infeasible)
非有界(unbouded)
実行可能(feasible)
実行可能でない
(infeasible)
非有界(unbounded)
相補性条件で最適性の検証が可能。
最適値(optimum value)も一致!!
primal LP dual LP
38
4. LPが多項式時間で解けることの証明
(Khachiyan’s Theorem)
LPが多項式時間で解けるという有名定理の証明の概要を理解しよう
39
楕円体法(ellipsoid method)
u Khachiyanによる証明では楕円体法という手法を利用する。
u 多項式時間ではあるが、係数が大きすぎるため実用的なアルゴリズムではない。
u 𝑂( 𝑚 + 𝑛 + 𝑠𝑖𝑧𝑒 𝐴 + 𝑠𝑖𝑧𝑒 𝑏 + 𝑠𝑖𝑧𝑒 𝑐
,
)-time
u 実際の計算には単体法や内点法が用いられる。
u n次元の楕円体(ellipsoid)は以下のように表すことだできる。
𝐸 𝐴, 𝑥 ≔ {𝑧 ∈ ℝ#| 𝑧 − 𝑥 $ 𝐴,'(𝑧 − 𝑥) ≤ 1}
40
楕円体法のアルゴリズム (1/5)
𝐸(𝐴8, 𝑥8)
P
𝑥8
楕円体法はpolyhedronが空かどうかを判定する
アルゴリズム
ステップ1
polyhedron Pを含む十分大きな楕円体𝐸(𝐴8, 𝑥8)をとる。
41
楕円体法のアルゴリズム (2/5)
𝐸(𝐴8, 𝑥8)
𝐸(𝐴', 𝑥')
P
ステップ2
適当な角度𝑎8を用いて楕円の中心を通る超平面{𝑧|𝑎8
$ 𝑧 = 𝑎8
$ 𝑥}
で楕円体を切断する。
polyhedron Pを含む半分を選択し、その半分を覆うような楕円体
を次の楕円体𝐸(𝐴', 𝑥')とする。
𝐴', 𝑥'は以下のように近似的に計算できる。
𝑏8 ≔
𝐴8 𝑎8
𝑎8
$ 𝐴8 𝑎8
𝑥' ≈ 𝑥8 +
𝑏8
𝑛 + 1
𝐴' ≈
2𝑛7
+ 3
2𝑛7 𝐴8 −
2𝑏8 𝑏8
$
𝑛 + 1
{𝑧|𝑎8
$ 𝑧 = 𝑎8
$ 𝑥}
𝑥8
𝑥'
42
楕円体法のアルゴリズム (3/5)
𝐸(𝐴8, 𝑥8)
𝐸(𝐴', 𝑥')
𝐸(𝐴', 𝑥')
𝐸(𝐴7, 𝑥7)
P
P
同じ操作を繰り返す。
{𝑧|𝑎8
$
𝑧 = 𝑎8
$
𝑥}
{𝑧|𝑎'
$
𝑧 = 𝑎'
$
𝑥}
𝑥8 𝑥'
𝑥'
𝑥7
43
楕円体法のアルゴリズム (4/5)
𝐸(𝐴7, 𝑥7)
P
楕円体の中心がpolyhedronの中に入った!!
(不等式に中心のベクトルを代入してfeasible solution
かどうか確かめれば判定可能)
→ polyhedron Pは空でないことがわかる!
𝑥7
{𝑧|𝑎7
$ 𝑧 = 𝑎7
$ 𝑥}
44
楕円体法のアルゴリズム (5/5)
𝐸(𝐴7, 𝑥7)
Pが空の時は何回楕円を切っても中心がPに入らない
→ 判定できないのでは?? → 実は判定できる!
[Lemma 4.15]
𝑣𝑜𝑙𝑢𝑚𝑒(𝐸(𝐴59', 𝑥59'))
𝑣𝑜𝑙𝑢𝑚𝑒(𝐸 𝐴5, 𝑥5 )
< 𝑒,
'
:#
→ 切断するごとに楕円の体積はほんの少しずつ減る。
→ これを使うことで以下が言える。
[Theorem 4.18]
P ≠ ∅ ⟹ 𝑣𝑜𝑙𝑢𝑚𝑒 𝑃 > 𝑣𝑜𝑙𝑢𝑚𝑒(𝐸;)
(𝑁 ≔ 10𝑛7(2 log 𝑛 + 5(𝑠𝑖𝑧𝑒 𝐴 + 𝑠𝑖𝑧𝑒(𝑏))) )
→ 有限回(N回)の切断で中心がPに入らないならPは空であることが言える。
→ 楕円の更新(多項式時間)がO(n^2)回なので全体で多項式時間
𝑥7
{𝑧|𝑎7
$
𝑧 = 𝑎7
$
𝑥}
45
LPを解く多公式時間アルゴリズム
仕様: max{𝑐$
𝑥|𝐴𝑥 ≤ 𝑏}を解く。あれば最適解を返す。
𝑥 𝐴𝑥 ≤ 𝑏 = ∅?
{𝑦|𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0} = ∅?
LPとdual LPの関係により最適解なし
最適解がある。
双対性定理より求めるものはpolyhedron
{(𝑥, 𝑦)|𝐴𝑥 ≤ 𝑏, 𝐴$
𝑦 = 𝑐, 𝑦 ≥ 0, 𝑐$
𝑥 = 𝑏$
𝑦}
の点。Polyhedronの不等式の本数をk本とする。
(i) k=0の時
ガウスの消去法を用いて線形不等式を解くことで(x,y)が求まる。
(ii) k>0の時
不等式を一本等式に変えてpolyhedronが空かどうか判定する。
空ならその不等式は等式で成立していないので削除する。
非空なら等式で成立しているということなのでそのままにする。
この操作により不等式の本数が一本減る。
k=0になるまでこれを繰り返す。
どちらかが空
ともに空でない
46
5. IP導入
IPとは何かについて理解し、LPとの違いを整理しよう
47
IPとは
u IPとは、整数計画問題(Integer Programming)のことで、以下の様に定式化される
問題
𝐴 ∈ ℤ!×#
, 𝑏 ∈ ℤ!
, 𝑐 ∈ ℤ#
に対し、
max 𝑐$
𝑥 𝐴𝑥 ≤ 𝑏, 𝑥 ∈ ℤ#
の最大を達成する𝑥 ∈ ℤ#
を見つける
超平面(hyperplane)
{𝑥|𝑐$
𝑥 = 𝛿}
最大!
最適解(optimal solution)
多面体(polyhedron)
𝑃 ≔ {𝑥|𝐴𝑥 ≤ 𝑏}
整数格子点
48
IPの例
u IPは、LPに比べて遥かに広範囲な組み合わせ最適化問題を簡単に定式化できる。
(例) ナップザック問題 (NP-hard)
n個の荷物があり、これをナップザックに詰めて売りに行きたい。
それぞれの荷物は𝑐', … , 𝑐#円で売ることができる。
一方で、ナップザックには容量制限があり、𝑊kgまでしか荷物を入れることができない。
それぞれの荷物の重さを𝑤', … , 𝑤#kgとしたとき、売値の合計を最大にするような荷物の
詰め方はどうなるか?
(Exercise 3) これをLPで定式化してみよう
multi-objectiveな最適化問題の代表格
DPで解け、Pareto最適性を用いて高速化が可能。
詳しくはKorte本の17章へ!!
49
Exercise 3の答え
それぞれの荷物に対し、0か1のいずれかの値をとる変数𝑥', … , 𝑥#を導入する。
𝑥% = 0なら荷物iは詰めて持っていかず、 𝑥% = 1なら荷物iはナップザックに詰めて持って
いくとする。
このとき、売値は
4
%&'
#
𝑐% 𝑥%
円となる。ナップザックの容量制限を超過していない必要があるので、
4
%&'
#
𝑤% 𝑥% ≤ 𝑊
が条件となる。
これで、IPとして定式化することができた。
50
整数包(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
IPに対するアプローチ
u 整数包(integer hull)と元の多面体が一致する時
u LPと同じように解けば最適整数解が求まる。
u どんな時に一致するか -> スライドの6節へ
u 整数包(integer hull)と元の多面体が異なる時
u 整数包は元の多面体の一部
u 整数包は有理多面体なので、有理多面体の不等式系が得られればそれをLPと同じように
解けば最適整数解が求まる。
u 元の多面体を超平面で切断して整数包(interger hull)の部分だけをむき出しにするという
アプローチが有名 -> スライドの7節へ
52
6. TDI性(total dual integrality)と
完全単模性(totally unimodularity)
IPのLP緩和が整数解を持つ条件について理解しよう
53
Integralな多面体
u 𝑃 = 𝑃<(整数包と元の多面体が一致) が成り立つ時、Pはintegralであるという。
u 最大値は頂点で達成される & 頂点は全て整数格子点
u max{𝑐' 𝑥|𝑥 ∈ 𝑃}を解けば良い
IPのLP緩和という。
54
多面体が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
多面体が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
多面体が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
多面体が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
多面体が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
多面体が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
多面体がintegralかどうかの確認法
u 同値条件はどれも確認が難しい
u もう少し扱いやすい性質はないか?
u 今回は有名な以下の二つの性質を取り扱う。
1. 完全双対整数性(total dual integrality, TDI)
2. 完全単模性(totally unimodularity)
実用的なのはこちらの性質!!
61
完全双対整数性(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
完全単模性(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
完全単模(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
完全単模(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
完全単模(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として解ける!!
7. 切除平面法
(cutting plane method)
一般のIPに対する解法である切除平面法の概要を理解しよう
67
一般の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
切除平面法のアルゴリズム (1/5)
Supporting hyperplane
{𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃}}
アフィン半空間
𝐻 ≔ {𝑥|𝑐$
𝑥 ≤ max{𝑐$
𝑥*
|𝑥*
∈ 𝑃}}
アフィン半空間Hのinteger hull 𝐻<
(ステップ1)
LP max{𝑐. 𝑥|𝑥 ∈ 𝑃}を解く。
(ステップ2)
Supporting hyperplaneで空間を半分に分ける。
Pを含む方のアフィン半空間をHとする。
(ステップ3)
アフィン半空間Hのinteger hull 𝐻/を求める。
69
切除平面法のアルゴリズム (2/5)
Supporting hyperplane
{𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃}}
(ステップ4)
𝐻/でpolyhedron Pを切り取る。
残ったpolyhedronをP’とすると、
𝑃0 ≔ 𝑃⋂𝐻/
とすれば良い。
切除後のpolyhedron P’
アフィン半空間
𝐻 ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥*|𝑥* ∈ 𝑃}}
アフィン半空間Hのinteger hull 𝐻<
取り除かれた部分
70
切除平面法のアルゴリズム (3/5)
Supporting hyperplane
{𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃′}}
アフィン半空間
𝐻′ ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥*|𝑥* ∈ 𝑃}}
アフィン半空間Hのinteger hull 𝐻′<
polyhedron P’
切除後のpolyhedron P’’
取り除かれた部分
LPの最適解が整数ベクトルになるまで
同じ操作を繰り返す。
𝐻′/でpolyhedron P’を切り取る。
残ったpolyhedronをP’’とすると、
𝑃0 ≔ 𝑃⋂𝐻/
となる。
71
切除平面法のアルゴリズム (4/5)
Supporting hyperplane
{𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃′}}
アフィン半空間
𝐻′ ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥*|𝑥* ∈ 𝑃}}
アフィン半空間Hのinteger hull 𝐻′<
polyhedron P’
切除後のpolyhedron P’’
取り除かれた部分
LPの最適解が整数ベクトルになるまで
同じ操作を繰り返す。
𝐻′/でpolyhedron P’を切り取る。
残ったpolyhedronをP’’とすると、
𝑃00 ≔ 𝑃′⋂𝐻′/
となる。
72
切除平面法のアルゴリズム (5/5)
切断を繰り返し、LPの最適解が整
数ベクトルとなったら終了!!
Supporting hyperplane
73
切除平面法(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
切除平面法(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
参考文献
u Korte, Bernhard, et al. Combinatorial optimization. Vol. 2. Heidelberg:
Springer, 2012.
76
Thank you for listening !!
※ 拙いですが、一応実装してみたりしてます
→ https://github.com/CombOptAlgos 77

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

LPマスターへの道

  • 2. はじめに 本スライドはCombinatorial Optimization (Korte) (左の写真) の輪読会の3~5章のまとめとなっている。 LPからIPについて主に取り扱う。 証明の詳細については本書を参照されたい。 2
  • 3. 目次 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
  • 5. LPとは u LPとは、線形計画問題(Linear Programming)のことで、以下の様に定式化される 問題 𝐴 ∈ ℝ!×# , 𝑏 ∈ ℝ! , 𝑐 ∈ ℝ# に対し、 max 𝑐$ 𝑥 𝐴𝑥 ≤ 𝑏 の最大を達成する𝑥 ∈ ℝ# を見つける 多面体(polyhedron) 𝑃 ≔ {𝑥|𝐴𝑥 ≤ 𝑏} 超平面(hyperplane) {𝑥|𝑐$ 𝑥 = 𝛿} ※最大値を達成する超平面を 支持超平面(supporting hyperplane) という 最大! 最適解(optimal solution) 実行可能解 (feasible solution) 5
  • 6. LPの例 u 様々な組み合わせ最適化問題がLPにより定式化できる (例) 売り上げの最大化 ある会社はn個の製品(𝑝!, … , 𝑝"としよう)を売っている。 会社は製品の材料としてm個の資源(𝑠!, … , 𝑠#としよう)を仕⼊れており、製品𝑝$を1グラ ム作るためには資源𝑠%が𝑎%,$ ∈ ℝグラムだけ必要である。 製品𝑝$を1グラム作ることで、利益が𝑐$ ∈ ℝドル出る。 ある⽇、この会社はそれぞれの資源を𝑏% ∈ ℝグラムだけ仕⼊れた。 この⽇の利益を最⼤にするにはどの製品を何グラム製造するのが良いだろうか︖ (Exercise 1) これをLPで定式化してみよう 6
  • 7. Exercise 1の答え 製品𝑝%を𝑥%グラム作るとすると、利益は 4 %&' # 𝑐% 𝑥% ドル得られる。 使う資源の量が仕入れた資源の量以内となっている必要があるため、各資源𝑠(について、 4 %&' # 𝑎(,% 𝑥% ≤ 𝑏( を満たす必要がある。 よって、𝑏 𝑗 ≔ 𝑏(, 𝐴 𝑗, 𝑖 : = 𝑎(,%, 𝑐 𝑖 ≔ 𝑐%なる𝐴 ∈ ℝ!×#, 𝑏 ∈ ℝ!, 𝑐 ∈ ℝ#を用いて 𝑚𝑎𝑥 𝑐$ 𝑥 𝐴𝑥 ≤ 𝑏 の最大を達成するxを見つけるLPとして定式化できる。 7
  • 8. LPの分類 Polyhedronは空か? 𝑥 𝐴𝑥 ≤ 𝑏 = ∅? 実行可能でない (infeasible) Polyhedronはhyperplaneの 法線方向について有界か? max 𝑐$ 𝑥 𝐴𝑥 ≤ 𝑏 < ∞? 実行可能 (feasible) 非有界 (unbouded) Yes Yes No No 𝑃 = ∅ Supporting hyperplane 8
  • 10. 単体法とは u 実行可能(feasible)なLPを高速にとく手法として、単体法(simplex algorithm)、内点法 (interior point method)などが知られている。 u ここでは単体法のみを取り扱う。 u 単体法は平均的には高速だが、worst caseでは指数時間かかるので、LPが多項式時間で解け る証明にはならないことに注意。内点法は多項式時間のアルゴリズム u [事実] 実行可能(feasible)なLPの最大値はいずれかの頂点(vertex)にて達成される → 隣接頂点を巡回していけば解が求まる!! → これが単体法のidea 多面体(polyhedron) 𝑃 ≔ {𝑥|𝐴𝑥 ≤ 𝑏} 最大! 10
  • 11. 弱双対性定理(weak duality theorem) 𝑥をLP max{𝑐$ 𝑥|𝐴𝑥 ≤ 𝑏} の実行可能解(feasible solution), 𝑦をLP min 𝑏$ 𝑦 𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0 の実行可能解(feasible solution)とする。 この時、𝑐$ 𝑥 ≤ 𝑏$ 𝑦が成り立つ。 (証明) 𝑐$ 𝑥 = (𝐴$ 𝑦)$ 𝑥 = 𝑦$ 𝐴𝑥 ≤ 𝑦$ 𝑏 ∎ 単体法の正当性は弱双対性定理に準拠している。 11
  • 12. 単体法のアルゴリズム 𝐴 ∈ ℝ!×#, 𝑏 ∈ ℝ!, 𝑐 ∈ ℝ#, 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 に戻る。 12
  • 13. 単体法のアルゴリズムの正当性 (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はmininalにとる) 7. 𝑥 ≔ 𝑥 + 𝜆𝑤と更新する。これによって𝑥は𝑎( 𝑥 = 𝑏(を満たす。𝐽 ≔ (𝐽{𝑖}) ∪ {𝑗}と更新して2に戻 る。 xはvertexなので必ず等式を満たす部分不等式系が存在する(Proposition 3.9) → この様な行の部分集合Jは必ず取れることが保証される 13
  • 14. 単体法のアルゴリズムの正当性 (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
  • 15. 単体法のアルゴリズムの正当性 (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
  • 16. 単体法のアルゴリズムの正当性 (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
  • 17. 単体法のアルゴリズムの正当性 (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はmininalにとる) 7. 𝑥 ≔ 𝑥 + 𝜆𝑤と更新する。これによって𝑥は𝑎( 𝑥 = 𝑏(を満たす。𝐽 ≔ (𝐽{𝑖}) ∪ {𝑗}と更新して2に戻 る。 𝐴𝑤 ≤ 0であるとき、任意の𝜇 ≥ 0に対し、 𝐴 𝑥 + 𝜇𝑤 ≤ 𝑏 + 𝜇𝐴𝑤 ≤ 𝑏 となるので、xをどれだけ動かしてもfeasible solutionとなる。 xを動かせば動かすほど𝑐$ 𝑥は大きくなるので、確かにこれは𝑐$ 𝑥の値が 発散しうる、つまりLPがunboudedであることを意味する。 17
  • 18. 単体法のアルゴリズムの正当性 (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はmininalにとる) 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
  • 19. 単体法のアルゴリズムの正当性 (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はmininalにとる) 7. 𝑥 ≔ 𝑥 + 𝜆𝑤と更新する。これによって𝑥は𝑎( 𝑥 = 𝑏(を満たす。𝐽 ≔ (𝐽{𝑖}) ∪ {𝑗}と更新して2 に戻る。 x, Jの更新後もアルゴリズムが回ることを確認する。 𝐴+{%} 𝑥 + 𝜆𝑤 = 𝐴+{%} 𝑥 = 𝑏+{%} 𝑎( 𝑥 + 𝜆𝑤 = 𝑎( 𝑥 + 𝑎( Y 𝑏( − 𝑎( 𝑥 𝑎( 𝑤 Y 𝑤 = 𝑏( より、更新後も𝐴+ 𝑥 = 𝑏+を満たしている。また、 𝐴+ % 𝑤 = 0, 𝑎( 𝑤 > 0 より、𝐴+の正則性も保たれる。 以上により、アルゴリズムが回る。 19
  • 20. 単体法の効率の良い実装 単体法の効率の良い実装としてタブロー法がある。 W.l.o.g max{𝑐$ 𝑥|𝐴𝑥 ≤ 𝑏, 𝑥 ≥ 0}という形のLPを考える。 計算の過程をタブローと呼ばれるデータ構造を保持することで簡略化 𝑇6 ≔ 𝑄6 (𝐴𝐼) 𝑄6 𝑏 ̅𝑐6 𝑄6 𝐴𝐼 − ̅𝑐 𝑐$ 𝑥 ただし、 𝐴* ≔ −𝐼 𝐴 , 𝑏* ≔ 0 𝑏 , ̅𝑐 ≔ 𝑐$, 0 であり、J ∈ {1, … , 𝑛 + 𝑚}!は𝐴′+ 𝑥 = 𝑏′+となるようにとる。 𝐵 ≔ 残りの𝑖𝑛𝑑𝑒𝑥集合, 𝑄6 ≔ ((𝐴𝐼)6),' である。 ※max{𝑐' 𝑥| −𝐼 𝐴 𝑥 ≤ ( 0 𝑏 )}と変形できるので これまで考えてきたLPと等価 20
  • 21. タブローの意味 𝑇c ≔ 𝑄c (𝐴𝐼) 𝑄c 𝑏 ̅𝑐c 𝑄c 𝐴𝐼 − ̅𝑐 𝑐d 𝑥 𝐴′( 𝑥 = 𝑏′(であり、 𝑏 = 𝐴𝑥 + 𝐼 𝑏 − 𝐴𝑥 = 𝐴𝐼 𝑏) − 𝐴) 𝑥 = 𝐴𝐼 *(𝑏) − 𝐴) 𝑥)* より 𝑄* 𝑏 = (𝑏) − 𝐴) 𝑥)* となる。つまり等式が成立していない部分の残差が格納されている。 最大化しようとしている値そのもの𝐴′' 𝑦 = 𝑐を満たす𝑦で、𝑦* = 0となるものがこれ。 (転置されている) 実際、 ( ̅𝑐* 𝑄* 𝐴𝐼 − ̅𝑐)*= ̅𝑐* 𝑄*(𝐴𝐼)*− ̅𝑐* = 0 𝐴′' 𝑦 = 𝐴)' (𝐴𝐼)*' 𝑄* ' ̅𝑐*' + 𝐼𝑐 = 𝑐 となる。 𝑦 ≥ 0の判定はここを見れば良い。 21
  • 22. タブローの更新 𝑇! ≔ 𝑄! (𝐴𝐼) 𝑄! 𝑏 ̅𝑐! 𝑄! 𝐴𝐼 − ̅𝑐 𝑐" 𝑥 𝜆 ≔ min (𝑄* 𝑏)% (𝑄*(𝐴𝐼)$ )% |𝑗 ∈ 1, … , 𝑚 , 𝑄*(𝐴𝐼)$ % > 0 とすれば、単体法のλと対応する。 𝐵) ≔ 𝐵{𝑗} ∪ {𝑖} と更新される。 jの候補が複数あるときは添字最小のものを選ぶ。(添字最小の規則) まず、j行目の要素をi列目の要素で割る。 次にj行目を使ってi列目がj行目以外全て0になるまで掃き出す。 この操作をピボッティングという。 これでタブローの更新が完了。 B’に対応していることはTheorem 3.17を参照。 ここでは照明を省略する。 掃き出しによって𝑐' 𝑥は −𝜆𝑦$ = 𝜆𝑐' 𝑤 増えているので、確かに 𝑥 ≔ 𝑥 + 𝜆𝑤 という更新と増分が対応している!!22
  • 23. タブローの使用例 (Exercise 2) 以下のLPをタブローを使用した単体法でとけ。 max𝑖𝑚𝑖𝑧𝑒 2𝑥' + 3𝑥7 𝑠𝑢𝑏𝑗𝑒𝑐𝑡 𝑡𝑜 𝑥' + 2𝑥7 ≤ 3 2𝑥' + 𝑥7 ≤ 3 𝑥', 𝑥7 ≥ 0 頂点はx=(0,0)からスタート 23
  • 24. 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 𝑏 ̅𝑐6 𝑄6 𝐴𝐼 − ̅𝑐 𝑐$ 𝑥 = 𝐴𝐼 𝑏 ̅𝑐 𝑐$ 𝑥 = 24
  • 25. Exercise 2の答え (2/5) 25 1. λを計算する。 𝜆 = min (𝑄! 𝑏)" (𝑄!(𝐴𝐼)# )" |𝑗 ∈ 1, … , 𝑚 , 𝑄!(𝐴𝐼)# " > 0 = 3 2
  • 26. Exercise 2の答え (3/5) 26 𝜆 = 3 22. (j,i)要素でj行目を割る。
  • 27. Exercise 2の答え (4/5) 27 3. ピボッティングを行う。 i列目のj行目以外が0になるまで掃き出しをする。
  • 29. 単体法の問題点 単体法は入力として頂点を与える必要があった。 𝑥 ≥ 0の制約があるので原点をはじめの頂点とすれば良い??? → polyhedron Pが原点を含まない可能性があるため → 2段階単体法を用いる。(次のスライド) 29
  • 30. 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
  • 32. 双対問題 LP max 𝑐$ 𝑥 𝐴𝑥 ≤ 𝑏 に対し、min 𝑏$ 𝑦 𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0} を双対問題という。 [Proposition 3.19] LPの双対の双対は元のLPと等価である。 (証明) min 𝑏$ 𝑦 𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0 = −max −𝑏$ 𝑦| 𝐴$ −𝐴$ −𝐼 𝑦 ≤ 𝑐 −𝑐 0 である。この双対問題は、 −min 𝑐$ 𝑧 − 𝑐$ 𝑧*| 𝐴 − 𝐴 − 𝐼 𝑧 𝑧* 𝑤 = −𝑏, 𝑧, 𝑧*, 𝑤 ≥ 0 となる。𝑥 ≔ 𝑧* − 𝑧と置き換えると、元のLPと一致する。∎ primal LPという。 dual LPという。 32
  • 33. (強)双対性定理 (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
  • 34. 相補性条件 (complementary slackness conditions) 強双対性定理(duality theorem)より以下の3条件の同値性が言える。 1. 𝑥, 𝑦がそれぞれprimal LP, dual LPの最適解(optimum solution) 2. 𝑐$ 𝑥 = 𝑏$ 𝑦 (最適値(optimum value)が一致する) 3. 𝑦$ 𝑏 − 𝐴𝑥 = 0 (相補性条件という) 3つ目の同値条件を相補性条件という。 →最適解がもとまった時に検算に使える (e.g.単体法のプログラムのデバッグ) (相補性条件の証明) 𝑦$ 𝑏 − 𝐴𝑥 = 𝑦$ 𝑏 − 𝑦$ 𝐴𝑥 = 𝑏$ 𝑦 − 𝑐$ 𝑥より、2つ目の条件と同値。∎ 34
  • 35. 違う形の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
  • 36. 実行可能かどうかの判定法 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
  • 37. 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
  • 40. 楕円体法(ellipsoid method) u Khachiyanによる証明では楕円体法という手法を利用する。 u 多項式時間ではあるが、係数が大きすぎるため実用的なアルゴリズムではない。 u 𝑂( 𝑚 + 𝑛 + 𝑠𝑖𝑧𝑒 𝐴 + 𝑠𝑖𝑧𝑒 𝑏 + 𝑠𝑖𝑧𝑒 𝑐 , )-time u 実際の計算には単体法や内点法が用いられる。 u n次元の楕円体(ellipsoid)は以下のように表すことだできる。 𝐸 𝐴, 𝑥 ≔ {𝑧 ∈ ℝ#| 𝑧 − 𝑥 $ 𝐴,'(𝑧 − 𝑥) ≤ 1} 40
  • 42. 楕円体法のアルゴリズム (2/5) 𝐸(𝐴8, 𝑥8) 𝐸(𝐴', 𝑥') P ステップ2 適当な角度𝑎8を用いて楕円の中心を通る超平面{𝑧|𝑎8 $ 𝑧 = 𝑎8 $ 𝑥} で楕円体を切断する。 polyhedron Pを含む半分を選択し、その半分を覆うような楕円体 を次の楕円体𝐸(𝐴', 𝑥')とする。 𝐴', 𝑥'は以下のように近似的に計算できる。 𝑏8 ≔ 𝐴8 𝑎8 𝑎8 $ 𝐴8 𝑎8 𝑥' ≈ 𝑥8 + 𝑏8 𝑛 + 1 𝐴' ≈ 2𝑛7 + 3 2𝑛7 𝐴8 − 2𝑏8 𝑏8 $ 𝑛 + 1 {𝑧|𝑎8 $ 𝑧 = 𝑎8 $ 𝑥} 𝑥8 𝑥' 42
  • 43. 楕円体法のアルゴリズム (3/5) 𝐸(𝐴8, 𝑥8) 𝐸(𝐴', 𝑥') 𝐸(𝐴', 𝑥') 𝐸(𝐴7, 𝑥7) P P 同じ操作を繰り返す。 {𝑧|𝑎8 $ 𝑧 = 𝑎8 $ 𝑥} {𝑧|𝑎' $ 𝑧 = 𝑎' $ 𝑥} 𝑥8 𝑥' 𝑥' 𝑥7 43
  • 44. 楕円体法のアルゴリズム (4/5) 𝐸(𝐴7, 𝑥7) P 楕円体の中心がpolyhedronの中に入った!! (不等式に中心のベクトルを代入してfeasible solution かどうか確かめれば判定可能) → polyhedron Pは空でないことがわかる! 𝑥7 {𝑧|𝑎7 $ 𝑧 = 𝑎7 $ 𝑥} 44
  • 45. 楕円体法のアルゴリズム (5/5) 𝐸(𝐴7, 𝑥7) Pが空の時は何回楕円を切っても中心がPに入らない → 判定できないのでは?? → 実は判定できる! [Lemma 4.15] 𝑣𝑜𝑙𝑢𝑚𝑒(𝐸(𝐴59', 𝑥59')) 𝑣𝑜𝑙𝑢𝑚𝑒(𝐸 𝐴5, 𝑥5 ) < 𝑒, ' :# → 切断するごとに楕円の体積はほんの少しずつ減る。 → これを使うことで以下が言える。 [Theorem 4.18] P ≠ ∅ ⟹ 𝑣𝑜𝑙𝑢𝑚𝑒 𝑃 > 𝑣𝑜𝑙𝑢𝑚𝑒(𝐸;) (𝑁 ≔ 10𝑛7(2 log 𝑛 + 5(𝑠𝑖𝑧𝑒 𝐴 + 𝑠𝑖𝑧𝑒(𝑏))) ) → 有限回(N回)の切断で中心がPに入らないならPは空であることが言える。 → 楕円の更新(多項式時間)がO(n^2)回なので全体で多項式時間 𝑥7 {𝑧|𝑎7 $ 𝑧 = 𝑎7 $ 𝑥} 45
  • 46. LPを解く多公式時間アルゴリズム 仕様: max{𝑐$ 𝑥|𝐴𝑥 ≤ 𝑏}を解く。あれば最適解を返す。 𝑥 𝐴𝑥 ≤ 𝑏 = ∅? {𝑦|𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0} = ∅? LPとdual LPの関係により最適解なし 最適解がある。 双対性定理より求めるものはpolyhedron {(𝑥, 𝑦)|𝐴𝑥 ≤ 𝑏, 𝐴$ 𝑦 = 𝑐, 𝑦 ≥ 0, 𝑐$ 𝑥 = 𝑏$ 𝑦} の点。Polyhedronの不等式の本数をk本とする。 (i) k=0の時 ガウスの消去法を用いて線形不等式を解くことで(x,y)が求まる。 (ii) k>0の時 不等式を一本等式に変えてpolyhedronが空かどうか判定する。 空ならその不等式は等式で成立していないので削除する。 非空なら等式で成立しているということなのでそのままにする。 この操作により不等式の本数が一本減る。 k=0になるまでこれを繰り返す。 どちらかが空 ともに空でない 46
  • 48. IPとは u IPとは、整数計画問題(Integer Programming)のことで、以下の様に定式化される 問題 𝐴 ∈ ℤ!×# , 𝑏 ∈ ℤ! , 𝑐 ∈ ℤ# に対し、 max 𝑐$ 𝑥 𝐴𝑥 ≤ 𝑏, 𝑥 ∈ ℤ# の最大を達成する𝑥 ∈ ℤ# を見つける 超平面(hyperplane) {𝑥|𝑐$ 𝑥 = 𝛿} 最大! 最適解(optimal solution) 多面体(polyhedron) 𝑃 ≔ {𝑥|𝐴𝑥 ≤ 𝑏} 整数格子点 48
  • 49. IPの例 u IPは、LPに比べて遥かに広範囲な組み合わせ最適化問題を簡単に定式化できる。 (例) ナップザック問題 (NP-hard) n個の荷物があり、これをナップザックに詰めて売りに行きたい。 それぞれの荷物は𝑐', … , 𝑐#円で売ることができる。 一方で、ナップザックには容量制限があり、𝑊kgまでしか荷物を入れることができない。 それぞれの荷物の重さを𝑤', … , 𝑤#kgとしたとき、売値の合計を最大にするような荷物の 詰め方はどうなるか? (Exercise 3) これをLPで定式化してみよう multi-objectiveな最適化問題の代表格 DPで解け、Pareto最適性を用いて高速化が可能。 詳しくはKorte本の17章へ!! 49
  • 50. Exercise 3の答え それぞれの荷物に対し、0か1のいずれかの値をとる変数𝑥', … , 𝑥#を導入する。 𝑥% = 0なら荷物iは詰めて持っていかず、 𝑥% = 1なら荷物iはナップザックに詰めて持って いくとする。 このとき、売値は 4 %&' # 𝑐% 𝑥% 円となる。ナップザックの容量制限を超過していない必要があるので、 4 %&' # 𝑤% 𝑥% ≤ 𝑊 が条件となる。 これで、IPとして定式化することができた。 50
  • 51. 整数包(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
  • 52. IPに対するアプローチ u 整数包(integer hull)と元の多面体が一致する時 u LPと同じように解けば最適整数解が求まる。 u どんな時に一致するか -> スライドの6節へ u 整数包(integer hull)と元の多面体が異なる時 u 整数包は元の多面体の一部 u 整数包は有理多面体なので、有理多面体の不等式系が得られればそれをLPと同じように 解けば最適整数解が求まる。 u 元の多面体を超平面で切断して整数包(interger hull)の部分だけをむき出しにするという アプローチが有名 -> スライドの7節へ 52
  • 53. 6. TDI性(total dual integrality)と 完全単模性(totally unimodularity) IPのLP緩和が整数解を持つ条件について理解しよう 53
  • 54. Integralな多面体 u 𝑃 = 𝑃<(整数包と元の多面体が一致) が成り立つ時、Pはintegralであるという。 u 最大値は頂点で達成される & 頂点は全て整数格子点 u max{𝑐' 𝑥|𝑥 ∈ 𝑃}を解けば良い IPのLP緩和という。 54
  • 55. 多面体が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
  • 56. 多面体が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
  • 57. 多面体が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
  • 58. 多面体が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
  • 59. 多面体が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
  • 60. 多面体が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
  • 61. 多面体がintegralかどうかの確認法 u 同値条件はどれも確認が難しい u もう少し扱いやすい性質はないか? u 今回は有名な以下の二つの性質を取り扱う。 1. 完全双対整数性(total dual integrality, TDI) 2. 完全単模性(totally unimodularity) 実用的なのはこちらの性質!! 61
  • 62. 完全双対整数性(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
  • 63. 完全単模性(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
  • 64. 完全単模(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
  • 65. 完全単模(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
  • 66. 完全単模(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として解ける!!
  • 67. 7. 切除平面法 (cutting plane method) 一般のIPに対する解法である切除平面法の概要を理解しよう 67
  • 68. 一般の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
  • 69. 切除平面法のアルゴリズム (1/5) Supporting hyperplane {𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃}} アフィン半空間 𝐻 ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥* |𝑥* ∈ 𝑃}} アフィン半空間Hのinteger hull 𝐻< (ステップ1) LP max{𝑐. 𝑥|𝑥 ∈ 𝑃}を解く。 (ステップ2) Supporting hyperplaneで空間を半分に分ける。 Pを含む方のアフィン半空間をHとする。 (ステップ3) アフィン半空間Hのinteger hull 𝐻/を求める。 69
  • 70. 切除平面法のアルゴリズム (2/5) Supporting hyperplane {𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃}} (ステップ4) 𝐻/でpolyhedron Pを切り取る。 残ったpolyhedronをP’とすると、 𝑃0 ≔ 𝑃⋂𝐻/ とすれば良い。 切除後のpolyhedron P’ アフィン半空間 𝐻 ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥*|𝑥* ∈ 𝑃}} アフィン半空間Hのinteger hull 𝐻< 取り除かれた部分 70
  • 71. 切除平面法のアルゴリズム (3/5) Supporting hyperplane {𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃′}} アフィン半空間 𝐻′ ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥*|𝑥* ∈ 𝑃}} アフィン半空間Hのinteger hull 𝐻′< polyhedron P’ 切除後のpolyhedron P’’ 取り除かれた部分 LPの最適解が整数ベクトルになるまで 同じ操作を繰り返す。 𝐻′/でpolyhedron P’を切り取る。 残ったpolyhedronをP’’とすると、 𝑃0 ≔ 𝑃⋂𝐻/ となる。 71
  • 72. 切除平面法のアルゴリズム (4/5) Supporting hyperplane {𝑥|𝑐$ 𝑥 = max{𝑐$ 𝑥*|𝑥′ ∈ 𝑃′}} アフィン半空間 𝐻′ ≔ {𝑥|𝑐$ 𝑥 ≤ max{𝑐$ 𝑥*|𝑥* ∈ 𝑃}} アフィン半空間Hのinteger hull 𝐻′< polyhedron P’ 切除後のpolyhedron P’’ 取り除かれた部分 LPの最適解が整数ベクトルになるまで 同じ操作を繰り返す。 𝐻′/でpolyhedron P’を切り取る。 残ったpolyhedronをP’’とすると、 𝑃00 ≔ 𝑃′⋂𝐻′/ となる。 72
  • 74. 切除平面法(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
  • 75. 切除平面法(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
  • 76. 参考文献 u Korte, Bernhard, et al. Combinatorial optimization. Vol. 2. Heidelberg: Springer, 2012. 76
  • 77. Thank you for listening !! ※ 拙いですが、一応実装してみたりしてます → https://github.com/CombOptAlgos 77