SlideShare a Scribd company logo
1 of 89
Download to read offline
双対性
JOI春合宿 2018
岩田 陽一 (NII)
2
自己紹介
 東大情報科学科→情報理工(2016年3月博士卒)
 国立情報学研究所 助教
 離散アルゴリズムの研究をしている
世界 1 位 (2010)
世界 2 位 (2011)
世界 3 位 (2009)3回優勝
(2013,2015,2016)
競プロ: wata Twitter: @wata_orz
ICFPC
(最適化問題の)双対性とは?
3
(強)双対性
 「〇〇の最小値=□□の最大値」という形の定理
効率的に解ける様々な組合せ最適化問題の背後に
隠れている
 「〇〇を最小化せよ」という問題を直接解く代わりに、
□□を最大化すれば良い
→解ける問題の範囲が広がる
 ○○と□□の解のペアで値が等しいものを手に入れ
たら、それぞれ最小値・最大値であると確信出来る
→アルゴリズムを考える・正しさの証明に便利
4
最適化問題
例:最小𝑠-𝑡カット問題
最小何本の辺を取り除けば𝑠-𝑡パスが無くなるか?
5
s t
min
𝑥∈𝑃
𝑓(𝑥)
𝑃の範囲で𝑓(𝑥)を最小化せよ
判定問題
Yes の場合には簡単に検証可能な「証明」が存在
(𝑥を実際に与えれば良い)
⇒ NP (Non-deterministic Polynomial time)と言う
6
min
𝑥∈𝑃
𝑓(𝑥) ≤ 𝑘?
𝑓 𝑥 ≤ 𝑘 となる 𝑥 ∈ 𝑃 があるか
s t
2本は可能?
はい。この2本を取
り除けば良いです。
補問題
No の場合に簡単に検証可能な「証明」は存在?
⇒ 存在するような問題は co-NP と言う
7
min
𝑥∈𝑃
𝑓(𝑥) ≤ 𝑘?
𝑓 𝑥 ≤ 𝑘 となる 𝑥 ∈ 𝑃 があるか
s t
1本は不可能?
多分出来ないと思う
けど・・・
P ⊆ NP ∩ co-NP
Noを示すもっと簡単な証明はないだろうか?
8
P
NP co-NP
s t
1本は不可能?
最小値を計算したら
2だったので無理です
多項式時間で解ける(P)ならば
アルゴリズムの実行自体が効率
的に検証可能な証明といえる。
最大流=最小カット
最大𝑠-𝑡フロー問題
最大何個の辺を共有しない𝑠-𝑡パスを選べるか?
任意の 𝑠-𝑡フロー 𝐹 = {𝑃1, … , 𝑃𝑓} と 𝑠-𝑡 カット 𝐶 に対し、
|𝐹| ≤ |𝐶| が成り立つ。(∵ 𝐸 𝑃𝑖 ∩ 𝐶 ≠ ∅)
実は、max |𝐹| = min |𝐶| が成り立つ。
9
s t
1本は不可能?
この2本のパスがあ
るので無理です。
双対問題
min
𝑥∈𝑃
𝑓 𝑥 = max
𝑦∈𝑄
𝑔(𝑦)
となるように 𝑄, 𝑔 を設計出来れば、𝑦を与えることでNo
が証明可能!
10
min
𝑥∈𝑃
𝑓(𝑥)
𝑃の範囲で𝑓(𝑥)を最小化せよ
max
𝑦∈𝑄
𝑔(𝑦)
𝑄の範囲で𝑔(𝑦)を最大化せよ
一致
𝑓(𝑥)の範囲
𝑔(𝑦)の範囲
よくあるパターン
1. 𝑓 𝑥 ≥ 𝑔(𝑦) (∀𝑥 ∈ 𝑃, ∀𝑦 ∈ 𝑄) が簡単に示せる
2. アルゴリズムの停止時に 𝑓 𝑥 = 𝑔(𝑦) となる 𝑥 ∈ 𝑃
と 𝑦 ∈ 𝑄 が得られることが示せる
→ 強双対定理とアルゴリズムの正当性が導かれる
11
(強)双対定理
min
𝑥∈𝑃
𝑓(𝑥) = max
𝑦∈𝑄
𝑔(𝑦)
扱う内容
1. 双対LP
2. 最短路・負閉路
3. 最小費用流
4. ラグランジュ双対
 最小費用流などのアルゴリズムの解説はしない
 双対を考えることでどんな問題が解けるようになる
のかの解説がメイン
12
更に勉強したい人向け参考書
 ネットワークフロー入門(JOI 2014-2015 春合宿)
 保坂和宏、http://hos.ac/slides/20150319_flow.pdf
• 最大流・最小費用流の入門に
 プログラミングコンテストチャレンジブック
 秋葉拓哉、岩田陽一、北川宜稔
• 競プロ向け最大流・最小費用流の基礎と応用例
 離散凸解析と最適化アルゴリズム
 室田一雄、塩浦昭義
• 最適化アルゴリズムを離散凸という観点から一般化
 Graphs, Networks and Algorithms
 D. Jungnickel
• フローの色々なアルゴリズムが載ってる
 Combinatorial Optimization
 A. Schrijver
• 3部からなる超大作(オススメ)
13
双対LP
14
線形計画問題(LP: Linear Programming)
 目的関数と制約が全て一次式な連続最適化問題
 整数性条件は無し
 多項式時間で解ける
maximize 𝑥1 + 2𝑥2
subject to 𝑥1 + 𝑥2 ≤ 4
−2𝑥1 + 𝑥2 ≤ 2
𝑥1 ≤ 3
𝑥1, 𝑥2 ≥ 0
15
Max =
22
3
𝒙 =
2
3
,
10
3
本当に最大?
解の上界を示す
maximize 𝑥1 + 2𝑥2
subject to 𝑥1 + 𝑥2 ≤ 4 (1)
−2𝑥1 + 𝑥2 ≤ 2 (2)
𝑥1 ≤ 3 (3)
𝑥1, 𝑥2 ≥ 0
(1) + (2) + 2(3): 𝑥1 + 2𝑥2 ≤ 12
2 1 : 𝑥1 + 2𝑥2 ≤ 2𝑥1 + 2𝑥2 ≤ 8
5
3
1 +
1
3
(2): 𝑥1 + 2𝑥2 ≤
22
3
16
22
3
より大は無理
解の上界を示す
maximize 𝑥1 + 2𝑥2
subject to 𝑥1 + 𝑥2 ≤ 4 (1)
−2𝑥1 + 𝑥2 ≤ 2 (2)
𝑥1 ≤ 3 (3)
𝑥1, 𝑥2 ≥ 0
より一般に、(1)を𝑦1倍、(2)を𝑦2倍、(3)を𝑦3倍して足すと、
𝑦1 − 2𝑦2 + 𝑦3 𝑥1 + 𝑦1 + 𝑦2 𝑥2 ≤ 4𝑦1 + 2𝑦2 + 3𝑦3
17
解の上界を示す
maximize 𝑥1 + 2𝑥2
subject to 𝑥1 + 𝑥2 ≤ 4 (1)
−2𝑥1 + 𝑥2 ≤ 2 (2)
𝑥1 ≤ 3 (3)
𝑥1, 𝑥2 ≥ 0
より一般に、(1)を𝑦1倍、(2)を𝑦2倍、(3)を𝑦3倍して足すと、
𝑦1 − 2𝑦2 + 𝑦3 𝑥1 + 𝑦1 + 𝑦2 𝑥2 ≤ 4𝑦1 + 2𝑦2 + 3𝑦3
目的関数: 1𝑥1 + 2𝑥2
18
≥
≥
2つの ≥ が成り立てば、
右辺が最大値の上界
双対LP
出来るだけ良い上界を示す問題もLPとなる。
19
maximize 𝑥1 + 2𝑥2
subject to 𝑥1 + 𝑥2 ≤ 4 (× 𝑦1)
−2𝑥1 + 𝑥2 ≤ 2 (× 𝑦2)
𝑥1 ≤ 3 (× 𝑦3)
𝑥1, 𝑥2 ≥ 0
minimize 4𝑦1 + 2𝑦2 + 3𝑦3
subject to 𝑦1 − 2𝑦2 + 𝑦3 ≥ 1
𝑦1 + 𝑦2 ≥ 2
𝑦1, 𝑦2, 𝑦3 ≥ 0
双対
主問題
双対問題
双対LP
出来るだけ良い上界を示す問題もLPとなる。
もう一回双対を取ると元に戻る。
20
maximize 𝑥1 + 2𝑥2
subject to 𝑥1 + 𝑥2 ≤ 4 (× 𝑦1)
−2𝑥1 + 𝑥2 ≤ 2 (× 𝑦2)
𝑥1 ≤ 3 (× 𝑦3)
𝑥1, 𝑥2 ≥ 0
minimize 4𝑦1 + 2𝑦2 + 3𝑦3
subject to 𝑦1 − 2𝑦2 + 𝑦3 ≥ 1 (× 𝑥1)
𝑦1 + 𝑦2 ≥ 2 (× 𝑥2)
𝑦1, 𝑦2, 𝑦3 ≥ 0
双対 双対
主問題
双対問題
強双対性
21
maximize 𝒄𝒙
subject to 𝐴𝒙 ≤ 𝒃
𝒙 ≥ 𝟎
minimize 𝒃𝒚
subject to 𝐴T 𝒚 ≥ 𝒄
𝒚 ≥ 𝟎
=
 双対LPの意味(制約の線形和で出来るだけ良い上
界・下界を示す)さえ理解すれば簡単に双対が取れ
るので標準形を暗記する必要はない。
 双対LPの作り方から ≤ は明らかだが、実は常に等号
が成立する (強双対性)
 もしくは (∞, 解なし)、(解なし、 − ∞)
 ただし、等号が成立する整数解があるとは限らない
標準形
他の標準形
(標準形を暗記するより意味を理解しよう)
→: 等号なので、負の係数をかけて足しても良い
 𝒂𝒙 ≤ 𝑏 を −1 倍したら −𝒂𝒙 ≥ −𝑏 で不等号が逆に
←: 非負制約がないので、係数は一致させないとダメ
 𝒚 ≥ 𝟎 ならば、𝒃′ ≤ 𝒃 から 𝒃′ 𝒚 ≤ 𝒃𝒚 が言える
22
maximize 𝒄𝒙
subject to 𝐴𝒙 = 𝒃
𝒙 ≥ 𝟎
minimize 𝒃𝒚
subject to 𝐴T 𝒚 ≥ 𝒄
𝒚 ≥ 𝟎
=
LP双対ゲーの解き方
二通りの方針
1. とりあえずLPで書いてみてから双対を取り、知ってる
問題じゃないか考える
 ダメなLPを書くとうまくいかないので結構試行錯誤が必要
2. 双対問題の形を予め覚えておいて、その形になるよ
うに定式化
 多くの場合こっちの方が簡単
23
例題: Min-Max (出典: POJ Monthly)
𝑛 (≤ 50000)次元の非負実数ベクトル (𝜇1, … , 𝜇 𝑛) が
あり、 σ𝑖 𝜇𝑖 = 1 を満たしている。2つのベクトル 𝑝, 𝑞 と
実数𝐶が与えられる。σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 であるとき、σ𝑞𝑖 𝜇𝑖 の
取りうる値の最小値・最大値を求めよ。
24
http://poj.org/problem?id=2595
例題: Min-Max (出典: POJ Monthly)
最小値を求める問題をLPで書くと、
min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖
σ𝑖 𝜇𝑖 = 1
σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶
𝜇𝑖 ≥ 0
双対LPを作ってみると、
25
例題: Min-Max (出典: POJ Monthly)
最小値を求める問題をLPで書くと、
min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖
σ𝑖 𝜇𝑖 = 1
σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶
𝜇𝑖 ≥ 0
双対LPを作ってみると、
max
𝑥,𝑦
𝑥 + 𝐶𝑦
𝑥 + 𝑝𝑖 𝑦 ≤ 𝑞𝑖 (× 𝜇𝑖)
26
× 𝑥
(× 𝑦)
例題: Min-Max (出典: POJ Monthly)
max
𝑥,𝑦
𝑥 + 𝐶𝑦
𝑥 + 𝑝𝑖 𝑦 ≤ 𝑞𝑖
これは、二次元の多角形内部で、(1, 𝐶)方向に一番遠
い点を求める問題。多角形を𝑂(𝑛 log 𝑛)で構築して端
点を全て調べれば良い。
27
実は定数次元のLPは線形時間で
解けることが知られている。
(Seidel’s LP algorithm など)
まとめ
 双対LPを構築出来るようになろう
 制約式の線形和で出来るだけ良い上界(下界)を
作る、ということだけ覚えておけば自然に作れる
 LPでは強双対性が成り立ち、双対LPを解くことで元の
LPも解ける
 ただし、整数解で成り立つとは限らないので注意
 LPで書ける問題は、そのままだと解き方が分からなく
ても、双対を取ってみると知ってる問題になるかも
28
最短路・負閉路
29
𝒔-𝒕最短路問題をLPで書いてみる
辺 𝑒 を通る回数を表す変数 𝑓𝑒
𝑤𝑒 ≔ 辺𝑒の長さ
𝛿+ 𝑣 ≔ 𝑣から出る辺集合、𝛿− 𝑣 ≔ 𝑣へ入る辺集合
𝑓 𝐹 ≔ σ 𝑒∈𝐹 𝑓𝑒
minimize σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒
subject to 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = ൞
−1 (𝑣 = 𝑠)
1 (𝑣 = 𝑡)
0 (otherwise)
𝑓𝑒 ≥ 0 (∀𝑒 ∈ 𝐸)
(注意:負の閉路があると最小値は − ∞になる)
30
𝑣
𝛿−
(𝑣) 𝛿+(𝑣)
双対LP
minimize 𝑓 σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒
s.t. 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = ൞
−1 𝑣 = 𝑠 (× 𝑝𝑠)
1 𝑣 = 𝑡 (× 𝑝𝑡)
0 otherwise (× 𝑝 𝑣)
𝑓𝑒 ≥ 0
maximize 𝑝 𝑝𝑡 − 𝑝𝑠
s.t. 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 (× 𝑓𝑢𝑣)
31
= ただし、整数解で一致するとは
まだ言っていない
目的関数・制約ともに「二変数の差」の形
二変数の差が現れたら双対ゲーを疑おう!
距離関数
𝑠から𝑣への最短距離を𝑝 𝑣とすると、
1. 𝑝𝑡 − 𝑝𝑠 = 𝑠−𝑡最短路の長さ
2. ∀𝑢𝑣 ∈ 𝐸に対して、𝑝 𝑣 ≤ 𝑝 𝑢 + 𝑤 𝑢𝑣
が成り立つので、𝑝は双対LPの最適解である。つまり、
 最短路アルゴリズムで双対LPが解ける。
 𝑤が整数なら整数解が求まる。
ただし、負閉路がある場合に注意
32
maximize 𝑝 𝑝𝑡 − 𝑝𝑠
s.t. 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 for ∀𝑢𝑣 ∈ 𝐸
負閉路検出
負閉路にそって𝑓𝑒を増やすことで、主問題の解は幾らで
も小さくなるので、双対問題は解なしとなる。つまり、
を満たす𝑝が存在する⇔負閉路が存在しない。
そのような𝑝は「ポテンシャル」と呼ばれる。
 最適化の場合も、通常の最短路アルゴリズムだと𝑠から到
達不能な負閉路を見逃すので注意が必要。
 Bellman-Fordで𝑑 𝑠 = 0, 𝑑 𝑣 = 𝐷(十分大きな値)から開始す
れば良い。
33
𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 for ∀𝑢𝑣 ∈ 𝐸
解ける問題
 目的関数が 𝑝𝑡 − 𝑝𝑠 の形
 𝑠 から 𝑡 への最短距離を求める
 制約が全て 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 の形
 𝑢 から 𝑣 へ長さ 𝑤 𝑢𝑣 の辺を張る
 𝑤 𝑢𝑣 ≤ 𝑝 𝑣 − 𝑝 𝑢 の形も 𝑝 𝑢 − 𝑝 𝑣 ≤ −𝑤 𝑢𝑣 と書けるので 𝑣 か
ら 𝑢 へ長さ −𝑤 𝑢𝑣 の辺を張れば良い
Bellman-Fordの更新式を思い出せばグラフは自然に作れる
𝑑 𝑣 ← min(𝑑 𝑣, 𝑑 𝑢 + 𝑤 𝑢𝑣) だから停止時に 𝑑 𝑣 ≤ 𝑑 𝑢 + 𝑤 𝑢𝑣 が成立
34
maximize 𝑝 𝑝𝑡 − 𝑝𝑠
s.t. 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 for ∀𝑢𝑣 ∈ 𝐸
「二変数の差」を作る頻出テク
1. 絶対値上限制約: 𝑝 𝑢 − 𝑝 𝑣 ≤ 𝑤 𝑢𝑣
 −𝑤 𝑢𝑣 ≤ 𝑝 𝑢 − 𝑝 𝑣 ≤ 𝑤 𝑢𝑣
2. 一変数制約: 𝑝𝑖 ≤ 𝑤𝑖
 新しい変数 𝑝0 を導入し、全ての変数𝑝𝑗を𝑝𝑗 − 𝑝0
で置き換えると、𝑝𝑖 − 𝑝0 ≤ 𝑤𝑖 となる
 既存の二変数制約 𝑝𝑗 − 𝑝𝑖 ≤ 𝑤𝑖𝑗 は変化しない
3. 二部グラフ
 𝑥𝑖 + 𝑦𝑗 型のときは、全ての𝑦の符号を反転させる
ことで、𝑥𝑖 − 𝑦𝑗型になる
 グリッドグラフとかで頻出
35
「二変数の差」を作る頻出テク
4. 区間の和: 𝑥𝑖 + 𝑥𝑖+1 + ⋯ + 𝑥𝑗 ≤ 𝑤𝑖𝑗
 𝑝𝑖 − 𝑝0 ≔ 𝑥1 + ⋯ + 𝑥𝑖 とおくと、𝑝𝑗 − 𝑝𝑖−1 ≤ 𝑤𝑖𝑗
5. 円形区間和: 𝑥𝑖 + 𝑥𝑖+1 + ⋯ + 𝑥 𝑛 + 𝑥1 + ⋯ + 𝑥𝑗
 総和 𝑆 ≔ 𝑥1 + ⋯ + 𝑥 𝑛 を全通り試す・二分探索
などにより固定し、制約 𝑥1 + ⋯ + 𝑥 𝑛 = 𝑆 を追加
 𝑆 − (𝑥𝑗+1 + ⋯ + 𝑥𝑖−1) と通常の区間和になる
(𝑆は変数でなく定数なことに注意)
36
= −
例題: Asteroids2 (出典: UTPC 2013)
https://utpc2013.contest.atcoder.jp/tasks/utpc2013_08
𝑁次元ベクトル𝑝, 𝑞と 𝑁 × 𝑁行列𝐴, 𝐵 が与えられるので
0 ≤ 𝑢𝑖 ≤ 𝑝𝑖 𝑖 ∈ 𝑁
0 ≤ 𝑣𝑗 ≤ 𝑞 𝑗 (𝑗 ∈ [𝑁])
𝐴𝑖𝑗 ≤ 𝑢𝑖 + 𝑣𝑗 ≤ 𝐵𝑖𝑗 𝑖, 𝑗 ∈ N
を満たす整数ベクトル 𝑢, 𝑣 が存在するか判定せよ。
37
∞
−∞
3
2
1
1
7
5
3
1 2
4
No
例題: Asteroids2 (出典: UTPC 2013)
新たに変数𝑠を導入し、𝑢𝑖 → 𝑢𝑖 − 𝑠, 𝑣𝑖 → 𝑠 − 𝑣𝑖 と置き
直すと、
0 ≤ 𝑢𝑖 − 𝑠 ≤ 𝑝𝑖 𝑖 ∈ 𝑁
0 ≤ 𝑠 − 𝑣𝑗 ≤ 𝑞 𝑗 (𝑗 ∈ [𝑁])
𝐴𝑖𝑗 ≤ 𝑢𝑖 − 𝑣𝑗 ≤ 𝐵𝑖𝑗 𝑖, 𝑗 ∈ N
全て差の形になったので負閉路検出して終了
38
例題: Cashier Employment (出典: Tehran 2000)
http://poj.org/problem?id=1275
24時間営業のスーパーが店員を募集している。𝑖 時か
ら 𝑖 + 8 時までの8時間働く(日を跨ぐ可能性あり)こと
を希望する応募者が𝑐𝑖人居る。𝑖 時から 𝑖 + 1 時の間は
少なくとも 𝑟𝑖 人の店員が必要である。最小何人の店員
を雇えばよいか?
𝑖 時から 𝑖 + 8 時希望の応募者から 𝑥𝑖 人を雇うとすると、
σ 𝑗=0
7
𝑥(𝑖−𝑗) mod 24 ≥ 𝑟𝑖 が満たされる必要がある。
 円形区間和
39
例題: Cashier Employment (出典: Tehran 2000)
雇う人数の最小値を二分探索で求めよう。
𝑝𝑖 − 𝑝0 ≔ 𝑥0 + ⋯ + 𝑥𝑖−1 とすると、𝑘 人で可能かは以
下のLPで判定できる。
𝑝24 − 𝑝0 = 𝑘
0 ≤ 𝑝𝑖+1 − 𝑝𝑖 ≤ 𝑐𝑖 (𝑖 = 0, … , 23)
𝑝𝑖+1 − 𝑝𝑖−7 ≥ 𝑟𝑖 (𝑖 = 7, … , 23)
𝑘 − 𝑝17+𝑖 − 𝑝𝑖+1 ≥ 𝑟𝑖 𝑖 = 0, … , 6
全て差の形になったので負閉路検出して終了
40
類題: YamanoteLine (SRM553Hard)
円形区間和の上限・下限制約で総和の取りうる値の総数を求める
まとめ
 目的関数・制約が全て「二変数の差」 (𝑥 − 𝑦) の形
⇒ 最短路・負閉路検出の双対
 辺の向きに迷ったらBellmanFordの更新式を思い出そう
 「二変数の差」を作る頻出テクを覚えておこう
41
最小費用流
42
フロー
各辺𝑒に容量𝑐 𝑒(≥ 0)のある有向グラフと供給需要関数
𝑏: 𝑉 → ℝ に対して、以下を満たす𝑓: 𝐸 → ℝ≥0 を「許容
フロー」という。
𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = −𝑏 𝑣
0 ≤ 𝑓𝑒 ≤ 𝑐 𝑒 ∀𝑒 ∈ 𝐸
43
𝑣
𝛿−
(𝑣) 𝛿+(𝑣)
𝑏 𝑣 > 0な点では
𝑏 𝑣湧き出る
𝑏 𝑣 = 0な点では
入る量=出る量
𝑒を通して最大𝑐 𝑒
まで流せる
𝑏 𝑣 < 0な点では
−𝑏 𝑣消費する
最小費用流問題
最小重みの許容フローを求める問題
 最短路(𝑏𝑠 = 1, 𝑏𝑡 = −1, 𝑏 𝑣 = 0)の自然な拡張
minimize 𝑓 σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒
subject to 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = −𝑏 𝑣
0 ≤ 𝑓𝑒 ≤ 𝑐 𝑒 (∀𝑒 ∈ 𝐸)
多項式時間で解ける
 アルゴリズムの解説は省略
 他の資料で勉強してね
44
双対LP
minimize 𝑓 σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒
s.t. 𝑓 𝛿−
𝑣 − 𝑓 𝛿+
𝑣 = −𝑏 𝑣 (× 𝑝 𝑣)
0 ≤ 𝑓𝑒 ≤ 𝑐 𝑒 (× 𝑧 𝑒)
maximize 𝑝,𝑧 − σ 𝑣 𝑏 𝑣 𝑝 𝑣 − σ 𝑒 𝑐 𝑒 𝑧 𝑒
s.t. 𝑝 𝑣 − 𝑝 𝑢 − 𝑧 𝑢𝑣 ≤ 𝑤 𝑢𝑣 (× 𝑓𝑢𝑣)
𝑧 𝑒 ≥ 0
𝑤が整数なら、𝑝も整数最適解が存在
 最短路反復法で使うポテンシャル𝑝が実は双対最適解
45
=
もう少し整理
maximize 𝑝,𝑧 − σ 𝑣 𝑏 𝑣 𝑝 𝑣 − σ 𝑒 𝑐 𝑒 𝑧 𝑒
s.t. 𝑝 𝑣 − 𝑝 𝑢 − 𝑧 𝑢𝑣 ≤ 𝑤 𝑢𝑣
𝑧 𝑒 ≥ 0
minimize 𝑝,𝑧 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑒 𝑐 𝑒 𝑧 𝑒
s.t. 𝑝 𝑣 − 𝑝 𝑢 − 𝑧 𝑢𝑣 ≤ 𝑤 𝑢𝑣
𝑧 𝑒 ≥ 0
minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
46
−1倍
=
𝑧 𝑢𝑣 の値は 𝑝 𝑢, 𝑝 𝑣 から定まる
解ける問題
47
minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
 線形関数とmax(0, 二変数の差 − 定数)の和
𝑝 𝑣 − 𝑝 𝑢
0 𝑤 𝑢𝑣
傾き = 𝑐 𝑢𝑣 > 0
解ける問題
実は任意の下に凸な折れ線が表現可能
 傾き負と正に分け、傾きの変化を係数とすれば良い
−1 + max 0, −𝑥 + max 0, 𝑥 − 1 + 2 max(0, 𝑥 − 3)
48
𝑥 = 𝑝 𝑣 − 𝑝 𝑢
0
−1
傾き3
−1 1
1
3
傾き1
傾き0
傾き−1
解ける問題
49
minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
「二変数の差に関する下に凸な折れ線」の和
の最小化は最小費用流で解ける。
 折れ線を分解して上の形にしてからグラフを構築すれば
良い
 σ 𝑣 𝑏 𝑣 = 0 なことを考えると、σ 𝑣 𝑏 𝑣 𝑝 𝑣の部分もこの形
 最短路のときの「二変数の差」を作る頻出テクがこっちで
も役に立つ
 途中で−1倍したので、最小値 = −最小費用流なことに
注意
例題: How to Create a Good Game (出典: JAG Summer 2010)
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2230
𝑁(≤ 100)点𝑀(≤ 1000)辺のDAGが与えられる。点0か
ら点𝑁 − 1へのLongest Pathの長さを変えないように、
出来るだけ辺の重みを増やしたい。増やす重みの和の
最大値を求めよ。
Longest Pathの長さを𝐷、辺𝑒の重みを𝑤𝑒、増やす量を
𝑎 𝑒とすると、
max
𝑎≥0
σ 𝑒 𝑎 𝑒
s.t. Longest Pathの長さが𝐷
50
例題: How to Create a Good Game (出典: JAG Summer 2010)
最短路の双対から、Longest Pathの長さが𝐷以下
⇔ 以下を満たす𝑝が存在。
𝑝 𝑁−1 − 𝑝0 ≤ 𝐷
𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣
よって、解きたい問題は
max
𝑎,𝑝
σ 𝑒 𝑎 𝑒
𝑝 𝑁−1 − 𝑝0 ≤ 𝐷
𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣
𝑎 𝑒 ≥ 0
51
例題: How to Create a Good Game (出典: JAG Summer 2010)
52
min
𝑎,𝑝
σ −𝑎 𝑒
𝑝 𝑁−1 − 𝑝0 ≤ 𝐷
𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣
𝑎 𝑒 ≥ 0
𝑝 𝑣 − 𝑝 𝑢
0 𝑤 𝑢𝑣
傾き−1
∞
−𝑎 𝑢𝑣
下に凸なので分解して最小費用流で終了
−1倍して
= ∞ max 0, 𝑝 𝑢 − 𝑝 𝑣 + 𝑤 𝑢𝑣
+ 𝑝 𝑢 − 𝑝 𝑣 + 𝑤 𝑢𝑣
例題: じょうしょうツリー (出典: UTPC 2012)
https://utpc2012.contest.atcoder.jp/tasks/utpc2012_12
各頂点𝑣が値𝑐𝑖を持つ𝑁(≤ 105)点の根付き木が与えら
れる。コストを1払うことで一つの頂点の値を±1変更で
きる。各点𝑢とその子供𝑣について、𝑐 𝑢 > 𝑐 𝑣が成り立つ
ように変更する最小コストを求めよ。
53
コスト8
例題: じょうしょうツリー (出典: UTPC 2012)
簡単な変形で、 𝑐 𝑢 > 𝑐 𝑣ではなく 𝑐 𝑢 ≥ 𝑐 𝑣 を目指す問題に出来る。
𝑝 𝑣 ≔ 変更後の𝑣の値、とすると
min
𝑝
σ 𝑣 |𝑝 𝑣 − 𝑐 𝑣|
s.t. 𝑝 𝑢 ≥ 𝑝 𝑣
|𝑝 𝑣 − 𝑐 𝑣|が一変数なので𝑝 𝑣 → 𝑝 𝑣 − 𝑝0と置き直すと
min 𝑝 σ 𝑣 |𝑝 𝑣 − 𝑝0 − 𝑐 𝑣|
s.t. 𝑝 𝑢 ≥ 𝑝 𝑣
54
𝑝 𝑣 − 𝑝0
0 𝑐 𝑣
|𝑝 𝑣 − 𝑝0 − 𝑐 𝑣|
下に凸なので分解して最小費用流で終了
…と言いたいところだが𝑁が大きいのでTLE
例題: じょうしょうツリー (出典: UTPC 2012)
min 𝑝 σ 𝑣 |𝑝 𝑣 − 𝑝0 − 𝑐 𝑣|
s.t. 𝑝 𝑢 ≥ 𝑝 𝑣
分解すると、
min
𝑝
σ 𝑣 max(0, 𝑝 𝑣 − 𝑝0 − 𝑐 𝑣)
0から𝑣へ容量1重み𝑐 𝑣
+ σ 𝑣 max(0, 𝑝0 − 𝑝 𝑣 + 𝑐 𝑣)
𝑣から0へ容量1重み−𝑐 𝑣
+ σ 𝑢𝑣 ∞max(0, 𝑝 𝑣 − 𝑝 𝑢)
𝑢から𝑣へ容量∞重み0
55
𝑣
𝑢
0 0
𝑐 𝑢
−𝑐 𝑢
𝑐 𝑣
−𝑐 𝑣
例題: じょうしょうツリー (出典: UTPC 2012)
需要供給無しなので、負閉路を詰め込む問題。
グラフの形から全ての負閉路は0 → 𝑢 → 子供 → ⋯ → 𝑣 → 0という形をして
おり、葉から根に向かって以下の貪欲法で解ける。
𝑢 … 𝑣0というパスでまだ使えるものの長さをヒープで管理する。
𝑢を以下のようにして処理する
1. 子供のヒープを全てマージ
2. ヒープにパス𝑢0の長さ−𝑐 𝑢を突っ込む
3. 𝑐 𝑢 + ヒープの最小値 < 0 ならばヒープからpopして貪欲に使う
データ構造をマージする一般的テクで𝑂(𝑛 log2
𝑛)
マージ可能ヒープを用いると𝑂(𝑛 log 𝑛)
56
𝑣
𝑢
0 0
𝑐 𝑢
−𝑐 𝑢
𝑐 𝑣
−𝑐 𝑣
例題: じょうしょうツリー (出典: UTPC 2012)
𝑢 … 𝑣0というパスでまだ使えるものの長さをヒープで管理する。
𝑢を以下のようにして処理する
1. 子供のヒープを全てマージ
2. ヒープにパス𝑢0の長さ−𝑐 𝑢を突っ込む
3. 𝑐 𝑢 + ヒープの最小値 < 0 ならばヒープからpopして貪欲に使う
57
6
2 10
3 5 8
9 5
−9 −5
−3 −5
−9, −8, −5 → −8, −5
−5, −3, −2 → −3, −2 −10, −8, −5
−10, −8, −5, −3, −2
答え: 9 − 8 + 5 − 2 + 10 − 6 = 8
例題: じょうしょうツリー (出典: UTPC 2012)
貪欲の証明:
𝐷 𝑢 ≔ 𝑢以下の頂点集合(𝑢を含む)とすると、𝑢を処理し終えた段
階で𝐺[ 0 ∪ 𝐷 𝑢]の最小費用流が求まっていることを示す。
𝐺[ 0 ∪ 𝐷 𝑢 ∖ 𝑢 ]の最小費用流は、グラフの形から各子供𝑣につ
いて𝐺[ 0 ∪ 𝐷𝑣]の最小費用流の和と等しい。
𝑢を追加したことで生じる新たな閉路は0𝑢 … 𝑣0という形のものだ
けであり、0𝑢の容量が1であることから、この中で最小のものを1
つ選べば最小費用流になる。
58
類題: 花火 (第二回ドワンゴからの挑戦状予選)
Farm Village (JAG Asia 2017)
特殊なグラフの最小費用流
まとめ
 「二変数の差に関する下に凸な折れ線」の和の最小化
⇒ 最小費用流の双対
 下に凸な折れ線を分解して下の形にすればよい
 𝑏 𝑣 ≔ 供給 − 需要
 𝑢 → 𝑣 へ重み𝑤 𝑢𝑣、容量𝑐 𝑢𝑣の辺
 𝑤 𝑢𝑣は負になる場合あり
 特殊なグラフのフローは速く解ける可能性あり
59
minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
ラグランジュ双対
60
ラグランジュ緩和
61
𝑔 𝑥 = 0 の制約がなければ
解けるんだけど・・・
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 = 0
ラグランジュ緩和
邪魔な制約を「ペナルティ」として目的関数に移動させ
よう。(この操作をラグランジュ緩和という)
任意の 𝜆 (ラグランジュ乗数という) に対して次の不等式
が成り立つ。
62
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 = 0
max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥
≤
これなら
解ける!max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥 s.t. 𝑔 𝑥 = 0
=
∵ 𝑔 𝑥 = 0 なら 𝜆𝑔 𝑥 = 0
∵ 制約が減った
ラグランジュ双対
出来るだけ良い上界を求める問題を考えよう。
(この問題をラグランジュ双対という)
𝐿 𝜆 ≔ max
𝑥∈𝑃
𝑓 𝑥 − 𝜆𝑔(𝑥) とすると、𝐿(𝜆)は下に凸となるので、
(三分探索などで)最小化出来る。
𝐿 𝛼𝜆1 + 1 − 𝛼 𝜆2 = 𝑓 𝑥∗ − 𝛼𝜆1 + 1 − 𝛼 𝜆2 𝑔(𝑥∗)
= 𝛼 𝑓 𝑥∗ − 𝜆1 𝑔 𝑥∗ + 1 − 𝛼 𝑓 𝑥∗ − 𝜆2 𝑔 𝑥∗
≤ 𝛼𝐿 𝜆1 + 1 − 𝛼 𝐿(𝜆2)
63
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 = 0
min
𝜆
max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥≤
強双対性
𝑓 𝑥 − 𝜆𝑔(𝑥) を最大化する𝑥の集合を𝑋(𝜆)と定義する。もし、
𝑥 ∈ 𝑋(𝜆)であって、𝑔 𝑥 = 0 となるものが存在すれば、等号が
成立する。𝜆 を小さくすれば𝑔(𝑥)は大きくなり、大きくすれば𝑔(𝑥)
は小さくなるので、二分探索すればちょうど0になるものが見つか
り元の問題が解けるのでは?
 等号が成立しても全ての 𝑥 ∈ 𝑋(𝜆) で𝑔 𝑥 = 0 となるとは限らないの
で、実際に𝑥を構築する方法は少し考えないといけない
 最適値を求めるだけなら二分探索して終了
64
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 = 0
min
𝜆
max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥
=
?
一般には成り立たない
が、LPでは成り立つ
強双対性(LPの場合)
𝐴𝒙 ≤ 𝒃 の多面体中で、(𝒄 − 𝜆𝒅)方向に一番遠い点を
求める問題。
𝜆 を動かすと、𝑋(𝜆)の範囲も連続的に動くので、ちょう
ど𝒅𝒙 = 𝑘 となる点が存在する。
65
max
𝒙
𝒄𝒙
s.t. 𝐴𝒙 ≤ 𝒃
𝒅𝒙 = 𝑘
min
𝜆
max
𝒙
𝒄𝒙 − 𝜆(𝒅𝒙 − 𝑘)
s.t. 𝐴𝒙 ≤ 𝒃
=
𝐴𝒙 ≤ 𝒃 𝒄 − 𝜆𝒅
𝒅𝒙 = 𝑘 𝑋(𝜆)
整数解に限定したら飛び越すかも
𝒈 𝒙 ≤ 𝟎 の場合
LPの場合は等号成立
66
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 ≤ 0
min
𝜆≥0
max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥
≤
∵ 𝑔 𝑥 ≤ 0, 𝜆 ≥ 0 なら −𝜆𝑔 𝑥 ≥ 0
複数個邪魔な場合
LPの場合は等号成立
67
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔𝑖 𝑥 = 0 (𝑖 ∈ [𝑛])
min
𝜆1,…,𝜆 𝑛
max
𝑥∈𝑃
𝑓(𝑥) − σ𝑖 𝜆𝑖 𝑔𝑖(𝑥)
≤
双対LPとの関係
全部の制約をラグランジュ緩和すれば双対LPになる。
𝑥𝑖の係数は 𝑐𝑖 − 𝐴∗𝑖 𝒚 (𝐴∗𝑖 ≔ 𝐴の𝑖列ベクトル)
もし、ある 𝑖 で 𝑐𝑖 − 𝐴∗𝑖 𝒚 > 0 なら、max
𝒙
⋯ = ∞
逆に、全ての 𝑖 で 𝑐𝑖 − 𝐴∗𝑖 𝒚 ≤ 0 なら、max
𝒙
⋯ = 𝒃𝒚
68
max
𝒙
𝒄𝒙 s.t. 𝐴𝒙 ≤ 𝒃, 𝒙 ≥ 0
min
𝒚≥0
max
𝒙
𝒄𝒙 − 𝒚T(𝐴𝒙 − 𝒃) s.t. 𝒙 ≥ 0
=
min
𝒚
𝒃𝒚 s.t. 𝐴T 𝒚 ≥ 𝒄, 𝒚 ≥ 0
=
双対LPとの関係
LPのラグランジュ双対は「双対LPを作る途中段階」だと
思うと、双対変数とラグランジュ乗数が同じものである
ことがわかる。
 𝒂𝒙 ≤ 𝑏 に対応する双対変数が最適双対解で取る
値と 𝒂𝒙 ≤ 𝑏を消すラグランジュ双対の最適解でラ
グランジュ乗数が取る値は同じ
 特に、双対LPが整数解を持つLPに対してラグラン
ジュ双対を作れば、ラグランジュ乗数の最適値も
整数になる
69
ラグランジュゲーの解き方
タイプ1: 解ける問題+邪魔な制約
⇒ ラグランジュ緩和で制約を消し、二分探索などで双
対問題を解く
タイプ2: min max ~ という形の最適化問題(ゲームとか)
⇒ ラグランジュ双対問題だとみなして元の max ~ の
形に戻して解く
 等号が成り立つことを確認しよう(特に整数解が必
要な場合)
70
例題: Min-Max (出典: POJ Monthly) の別解
𝑛 (≤ 50000)次元の非負実数ベクトル (𝜇1, … , 𝜇 𝑛) が
あり、 σ𝑖 𝜇𝑖 = 1 を満たしている。2つのベクトル 𝑝, 𝑞 と
実数𝐶が与えられる。σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 であるとき、σ𝑞𝑖 𝜇𝑖 の
取りうる値の最小値・最大値を求めよ。
71
http://poj.org/problem?id=2595
min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖
σ𝑖 𝜇𝑖 = 1
σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶
𝜇𝑖 ≥ 0
←この制約がなければ非常に簡単
(一番小さい𝑞𝑖に対して𝜇𝑖 = 1とすればよい)
例題: Min-Max (出典: POJ Monthly) の別解
ラグランジュ双対を取ると、
max
𝜆
min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖 + 𝜆(σ𝑖 𝑝𝑖 𝜇𝑖 − 𝐶)
σ𝑖 𝜇𝑖 = 1
𝜇𝑖 ≥ 0
 (𝑞𝑖 + 𝜆𝑝𝑖) が一番小さい 𝑖 に対して、𝜇𝑖 = 1 とすれば
内側の最小化可能。
 𝑝𝑖 − 𝐶 の符号で二分探索すれば外側の最大化が出
来る。
双対LPで幾何の問題にするより、かなり簡単!
72
例題: Skyland (出典: JAG Spring 2012)
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2396
𝑛 (≤ 100)個の浮遊島がある。各島の高度は0以上の
任意の実数値に設定できる。𝑖 番目の島を高度ℎにする
にはコストが𝑑𝑖ℎかかる。島𝑖と島𝑗の高度差が𝑥あるとコ
ストが𝑐𝑖𝑗 𝑥かかる。高度の合計を𝐻以上にする最小コス
トを求めよ。(本来はそのようなℎを求める問題)
73
min
ℎ
σ𝑖 𝑑𝑖ℎ𝑖 + σ𝑖𝑗 𝑐𝑖𝑗|ℎ𝑖 − ℎ𝑗|
σ𝑖 ℎ𝑖 ≥ 𝐻
ℎ𝑖 ≥ 0
←この制約がなければ
双対最小費用流の形
例題: Skyland (出典: JAG Spring 2012)
ラグランジュ双対を取ると、
 双対最小費用流で内側の最小化が可能
 よく眺めると全ての重みが0なので、供給需要を満
たすフローがあるか判定問題→最大流
 許容フローがあるかどうかで二分探索すれば外側の
最大化が可能
 解の構築はこの方針だともう少し考察が必要
74
max
𝜆≥0
min
ℎ
σ𝑖 𝑑𝑖ℎ𝑖 + σ𝑖𝑗 𝑐𝑖𝑗|ℎ𝑖 − ℎ𝑗| −𝜆(σ𝑖 ℎ𝑖 − 𝐻)
ℎ𝑖 ≥ 0
解の構築方法(プロ向け補足)
解の構築がしたい場合は?
重み0の最小費用流の双対なので、単純にはℎ = 0が
解として求まってしまい、σ𝑖 ℎ𝑖 = 𝐻 とならないので、別
の最適解を構築する必要がある。
ℎ𝑖 → ℎ𝑖 − ℎ0 と置き換えてグラフを作ってみると、
75
0
𝑖 𝑗
𝑐𝑖𝑗
∞ ∞
𝑏0 = 𝜆𝑛 − σ𝑖 𝑑𝑖
𝑏𝑖 = 𝑑𝑖 − 𝜆 𝑏𝑗 = 𝑑𝑗 − 𝜆
解の構築方法(プロ向け補足)
最適な𝜆における許容フロー𝑓を固定する。相補性定理
から、ℎが最適解 ⇔ 𝑓の残余グラフにおける全ての容
量正の辺𝑢𝑣で ℎ 𝑣 ≤ ℎ 𝑢。もし0から全ての点が到達可能
なら、𝜆を𝜖増やしても許容フローが存在するので矛盾。
到達出来ない点集合𝑆に対して𝑣 ∈ 𝑆 で ℎ 𝑣 = 𝐻/|𝑆| と
すれば良い。(このような最適解が存在することに先に
気づけば二分探索+最小カットで直接解ける)
76
0
𝑖 𝑗
𝑐𝑖𝑗
∞ ∞
𝑏0 = 𝜆𝑛 − σ𝑖 𝑑𝑖
𝑏𝑖 = 𝑑𝑖 − 𝜆 𝑏𝑗 = 𝑑𝑗 − 𝜆
例題: Longest Shortest Path (出典: JAG Asia 2015)
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2736
𝑁(≤ 200)点𝑀(≤ 2000)辺の重み付き有向グラフが与
えられる。各辺𝑒について、コスト𝑥 ⋅ 𝑐 𝑒(非負実数)支払う
ことで重みを𝑤𝑒から𝑤𝑒 + 𝑥に増加させることが出来る。
予算𝑃の範囲内で𝑠-𝑡最短路の長さを最大化せよ。
77
max
𝑥
(重み𝑤 + 𝑥での𝑠−𝑡距離)
σ 𝑒 𝑐 𝑒 𝑥 𝑒 ≤ 𝑃
𝑥 𝑒 ≥ 0
例題: Longest Shortest Path (出典: JAG Asia 2015)
ラグランジュ双対を取ると、
 双対最小費用流で内側の最大化が可能
 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃の符号で二分探索すれば外側の最小化
が可能
78
min
𝜆≥0
max
𝑥
(𝑤 + 𝑥での𝑠−𝑡距離) − 𝜆 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃
𝑥 𝑒 ≥ 0
min
𝜆≥0
max
𝑥,𝑝
𝑝𝑡 − 𝑝𝑠 − 𝜆 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃
𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 + 𝑥 𝑢𝑣
𝑥 𝑒 ≥ 0
=
𝑠-𝑡最短路の双対
例題: Longest Shortest Path (出典: JAG Asia 2015)
入力が小さいのでこのままでも解けるが、もう少し高速
化が可能。𝜆 → 1/𝐹 と置き換えると、
これは(流量𝐹の最小費用流 + 𝑃)/𝐹 を最小化する問題
⇒ 𝐹 を1ずつ増やしていくことで解ける
79
min
𝐹>0
max
𝑥,𝑝
(𝐹𝑝𝑡 − 𝐹𝑝𝑠 − σ 𝑒 𝑐 𝑒 𝑥 𝑒 + 𝑃)/𝐹
𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 + 𝑥 𝑢𝑣
𝑥 𝑒 ≥ 0
例題: きたまさの逆襲 (出典: UTPC 2012)
https://utpc2012.contest.atcoder.jp/tasks/utpc2012_10
重み付き二部グラフ𝐺 = (𝑈, 𝑉)がある。秋葉さんは大きさ|𝑉|の
マッチングで出来るだけ重みの小さいものが欲しい。きたまささ
んは重みを操作することで秋葉さんの妨害をしたい。𝑈の分割
𝑈 = 𝑈1 ∪ ⋯ ∪ 𝑈 𝑑があり、コスト𝑏𝑖を支払うことで𝑈𝑖に接続する全
ての辺の重みを1増えせる(複数回増やして良い)。(秋葉さんの
マッチングの重み)−(きたまささんのコスト)を最大化せよ。
80
max
𝜆1,…,𝜆 𝑑≥0
min
𝑓
σ𝑖 σ 𝑢∈𝑈 𝑖
σ 𝑣(𝑤 𝑢𝑣 + 𝜆𝑖) 𝑓𝑢𝑣 − σ𝑖 𝑏𝑖 𝜆𝑖
𝑓: 大きさ|𝑉|のマッチング
例題: きたまさの逆襲 (出典: UTPC 2012)
ラグランジュ双対をとった形だと思うと、
81
max
𝜆1,…,𝜆 𝑑≥0
min
𝑓
σ 𝑒 𝑤𝑒 𝑓𝑒 + σ𝑖(σ 𝑢∈𝑈 𝑖
σ 𝑣 𝑓𝑢𝑣 − 𝑏𝑖)𝜆𝑖
𝑓: 大きさ|𝑉|のマッチング
=min
𝑓
σ 𝑒 𝑤𝑒 𝑓𝑒
𝑓: 大きさ|𝑉|のマッチング
σ 𝑢∈𝑈 𝑖
σ 𝑣 𝑓𝑢𝑣 ≤ 𝑏𝑖
例題: きたまさの逆襲 (出典: UTPC 2012)
これは(双対でなく普通の)最小費用流
82
min
𝑓
σ 𝑒 𝑤𝑒 𝑓𝑒
𝑓: 大きさ|𝑉|のマッチング
σ 𝑢∈𝑈 𝑖
σ 𝑣 𝑓𝑢𝑣 ≤ 𝑏𝑖
𝑠 𝑈𝑖 𝑢 𝑣 𝑡
重み
容量
0 0 𝑤 𝑢𝑣 0
𝑏𝑖 1 1 1
この容量制約の双対変数が𝜆𝑖
よって整数解が存在
𝑈𝑖から出る流量
の和が𝑏𝑖以下
例題: Homework (ICPC Asia 2017)
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1385
(意訳) 2つの二部グラフ𝐺1 = (𝑈1 ∪ 𝑉, 𝐸1)と𝐺2 = (𝑈2 ∪
𝑉, 𝐸2)が与えられる。𝑉 = 𝑉1 ∪ 𝑉2と分割し、(𝑈1, 𝑉1)と
(𝑈2, 𝑉2)の最大マッチングの和を最小化せよ。
83
a b c
1 4 6
2 3 5
A B C
2 3 5
1 4 6
𝑈1
𝑉
𝑉
𝑈2
1 + 1 = 2
例題: Homework (ICPC Asia 2017)
𝑓𝑒 ≔ 𝑒をマッチングに含めるか
𝜆 𝑣 ≔ 𝑣 を 𝑉1に含めるか
と定義し、min max ~ の形で書くと
84
min
𝜆∈ 0,1 𝑉
max
𝑓
෍
𝑢𝑣∈𝐸1
𝜆 𝑣 𝑓𝑢𝑣 + ෍
𝑢𝑣∈𝐸2
(1 − 𝜆 𝑣)𝑓𝑢𝑣
𝑓: 𝐺1, 𝐺2のマッチング
𝜆 𝑣 = 0なら𝑢𝑣を使っても意味なし
例題: Homework (ICPC Asia 2017)
85
min
𝜆∈ 0,1 𝑉
max
𝑓
෍
𝑒∈𝐸2
𝑓𝑒 + ෍
𝑣
𝜆 𝑣 ෍
𝑢∈𝑈1
𝑓𝑢𝑣 − ෍
𝑢∈𝑈2
𝑓𝑢𝑣
𝑓: 𝐺1, 𝐺2のマッチング
max
𝑓
σ 𝑒∈𝐸2
𝑓𝑒
𝑓: 𝐺1, 𝐺2のマッチング
σ 𝑢∈𝑈1
𝑓𝑢𝑣 − σ 𝑢∈𝑈2
𝑓𝑢𝑣 = 0 ∀𝑣 ∈ 𝑉
≥
𝜆 ∈ 0,1 𝑉となる最適解があれば等号成立
例題: Homework (ICPC Asia 2017)
𝐺1で𝑣を使うなら𝐺2でも𝑣を使うような最大マッチングを
求める、最大流の基礎的な応用問題 (Dining@POJ
3281 と同じ問題)
 最大流の双対解=最小カットは0,1の値を取るので
等号成立
 他にも色々な方法で同じ解法に至れる(マトロイド交
差の双対など)
86
max
𝑓
σ 𝑒∈𝐸2
𝑓𝑒
𝑓: 𝐺1, 𝐺2のマッチング
σ 𝑢∈𝑈1
𝑓𝑢𝑣 − σ 𝑢∈𝑈2
𝑓𝑢𝑣 = 0 ∀𝑣 ∈ 𝑉
例題: Homework (ICPC Asia 2017)
87
a b c
1 4 6
2 3 5
A B C
2 3 5
1 4 6
𝑈1
𝑉
𝑉
𝑈2
𝑠
𝑡
まとめ
min max ~ 最適化
⇒ ラグランジュ双対とみなして元に戻してみよう
 双対LPが最適整数解を持つなら、ラグランジュ乗
数も最適整数解を持つ
88
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 = 0
min
𝜆
max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥
≤ LPでは等号成立
解ける問題+邪魔な制約
⇒ ラグランジュ双対をとって𝑔 𝑥 の符号で
二分探索しよう
出来るだけ良い
上界を得たい
全体のまとめ
 LP双対
 制約式の線形和で出来るだけ良い上界(下界)を作る
 最短路・負閉路
 目的関数・制約が「二変数の差」
 最小費用流
 「二変数の差に関する下に凸な折れ線」の和の最小化
 minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
 ラグランジュ双対
 LP双対の途中段階とみなせる
 邪魔な制約の除去
 min max ~ 型最適化
89

More Related Content

What's hot

様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)AtCoder Inc.
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Inc.
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Inc.
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Inc.
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端Takuya Akiba
 

What's hot (20)

様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Abc009
Abc009Abc009
Abc009
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
 
Trianguler
TriangulerTrianguler
Trianguler
 
Gurobi python
Gurobi pythonGurobi python
Gurobi python
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 

Similar to 双対性

これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法kenyanonaka
 
University CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valueUniversity CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valuesatanic
 
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
コンピュータビジョン最先端ガイド6 第2章:4~4.2節コンピュータビジョン最先端ガイド6 第2章:4~4.2節
コンピュータビジョン最先端ガイド6 第2章:4~4.2節nonane
 
表現論 ゼミ資料
表現論 ゼミ資料表現論 ゼミ資料
表現論 ゼミ資料HanpenRobot
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)narumikanno0918
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するsleepy_yoshi
 
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へZansa
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5sleepy_yoshi
 
グレブナー基底輪読会 #1 ―準備体操の巻―
グレブナー基底輪読会 #1 ―準備体操の巻―グレブナー基底輪読会 #1 ―準備体操の巻―
グレブナー基底輪読会 #1 ―準備体操の巻―Yutaka Nagahata
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1hirokazutanaka
 
場の量子論
場の量子論場の量子論
場の量子論M M
 
代数方程式とガロア理論
代数方程式とガロア理論代数方程式とガロア理論
代数方程式とガロア理論Junpei Tsuji
 
退化型Keller--Segel系の解の有限時刻爆発について
退化型Keller--Segel系の解の有限時刻爆発について退化型Keller--Segel系の解の有限時刻爆発について
退化型Keller--Segel系の解の有限時刻爆発についてTakahiro Hashira
 
人生を豊かにする線形代数学
人生を豊かにする線形代数学人生を豊かにする線形代数学
人生を豊かにする線形代数学Fumiya Watanabe
 
データ解析3 最適化の復習
データ解析3 最適化の復習データ解析3 最適化の復習
データ解析3 最適化の復習Hirotaka Hachiya
 
Prml 最尤推定からベイズ曲線フィッティング
Prml 最尤推定からベイズ曲線フィッティングPrml 最尤推定からベイズ曲線フィッティング
Prml 最尤推定からベイズ曲線フィッティングtakutori
 
多項式の反復法を使った解き方.pptx
多項式の反復法を使った解き方.pptx多項式の反復法を使った解き方.pptx
多項式の反復法を使った解き方.pptxssuser29d350
 
劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節Hakky St
 

Similar to 双対性 (20)

これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法これならわかる最適化数学8章_動的計画法
これならわかる最適化数学8章_動的計画法
 
University CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valueUniversity CodeSprint 4 - Magic value
University CodeSprint 4 - Magic value
 
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
コンピュータビジョン最先端ガイド6 第2章:4~4.2節コンピュータビジョン最先端ガイド6 第2章:4~4.2節
コンピュータビジョン最先端ガイド6 第2章:4~4.2節
 
表現論 ゼミ資料
表現論 ゼミ資料表現論 ゼミ資料
表現論 ゼミ資料
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
 
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
 
グレブナー基底輪読会 #1 ―準備体操の巻―
グレブナー基底輪読会 #1 ―準備体操の巻―グレブナー基底輪読会 #1 ―準備体操の巻―
グレブナー基底輪読会 #1 ―準備体操の巻―
 
確率解析計算
確率解析計算確率解析計算
確率解析計算
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
 
場の量子論
場の量子論場の量子論
場の量子論
 
代数方程式とガロア理論
代数方程式とガロア理論代数方程式とガロア理論
代数方程式とガロア理論
 
退化型Keller--Segel系の解の有限時刻爆発について
退化型Keller--Segel系の解の有限時刻爆発について退化型Keller--Segel系の解の有限時刻爆発について
退化型Keller--Segel系の解の有限時刻爆発について
 
人生を豊かにする線形代数学
人生を豊かにする線形代数学人生を豊かにする線形代数学
人生を豊かにする線形代数学
 
データ解析3 最適化の復習
データ解析3 最適化の復習データ解析3 最適化の復習
データ解析3 最適化の復習
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
Prml 最尤推定からベイズ曲線フィッティング
Prml 最尤推定からベイズ曲線フィッティングPrml 最尤推定からベイズ曲線フィッティング
Prml 最尤推定からベイズ曲線フィッティング
 
多項式の反復法を使った解き方.pptx
多項式の反復法を使った解き方.pptx多項式の反復法を使った解き方.pptx
多項式の反復法を使った解き方.pptx
 
劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節劣モジュラ最適化と機械学習 2.4節
劣モジュラ最適化と機械学習 2.4節
 

Recently uploaded

My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 

Recently uploaded (20)

My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 

双対性

  • 2. 2 自己紹介  東大情報科学科→情報理工(2016年3月博士卒)  国立情報学研究所 助教  離散アルゴリズムの研究をしている 世界 1 位 (2010) 世界 2 位 (2011) 世界 3 位 (2009)3回優勝 (2013,2015,2016) 競プロ: wata Twitter: @wata_orz ICFPC
  • 6. 判定問題 Yes の場合には簡単に検証可能な「証明」が存在 (𝑥を実際に与えれば良い) ⇒ NP (Non-deterministic Polynomial time)と言う 6 min 𝑥∈𝑃 𝑓(𝑥) ≤ 𝑘? 𝑓 𝑥 ≤ 𝑘 となる 𝑥 ∈ 𝑃 があるか s t 2本は可能? はい。この2本を取 り除けば良いです。
  • 7. 補問題 No の場合に簡単に検証可能な「証明」は存在? ⇒ 存在するような問題は co-NP と言う 7 min 𝑥∈𝑃 𝑓(𝑥) ≤ 𝑘? 𝑓 𝑥 ≤ 𝑘 となる 𝑥 ∈ 𝑃 があるか s t 1本は不可能? 多分出来ないと思う けど・・・
  • 8. P ⊆ NP ∩ co-NP Noを示すもっと簡単な証明はないだろうか? 8 P NP co-NP s t 1本は不可能? 最小値を計算したら 2だったので無理です 多項式時間で解ける(P)ならば アルゴリズムの実行自体が効率 的に検証可能な証明といえる。
  • 9. 最大流=最小カット 最大𝑠-𝑡フロー問題 最大何個の辺を共有しない𝑠-𝑡パスを選べるか? 任意の 𝑠-𝑡フロー 𝐹 = {𝑃1, … , 𝑃𝑓} と 𝑠-𝑡 カット 𝐶 に対し、 |𝐹| ≤ |𝐶| が成り立つ。(∵ 𝐸 𝑃𝑖 ∩ 𝐶 ≠ ∅) 実は、max |𝐹| = min |𝐶| が成り立つ。 9 s t 1本は不可能? この2本のパスがあ るので無理です。
  • 10. 双対問題 min 𝑥∈𝑃 𝑓 𝑥 = max 𝑦∈𝑄 𝑔(𝑦) となるように 𝑄, 𝑔 を設計出来れば、𝑦を与えることでNo が証明可能! 10 min 𝑥∈𝑃 𝑓(𝑥) 𝑃の範囲で𝑓(𝑥)を最小化せよ max 𝑦∈𝑄 𝑔(𝑦) 𝑄の範囲で𝑔(𝑦)を最大化せよ 一致 𝑓(𝑥)の範囲 𝑔(𝑦)の範囲
  • 11. よくあるパターン 1. 𝑓 𝑥 ≥ 𝑔(𝑦) (∀𝑥 ∈ 𝑃, ∀𝑦 ∈ 𝑄) が簡単に示せる 2. アルゴリズムの停止時に 𝑓 𝑥 = 𝑔(𝑦) となる 𝑥 ∈ 𝑃 と 𝑦 ∈ 𝑄 が得られることが示せる → 強双対定理とアルゴリズムの正当性が導かれる 11 (強)双対定理 min 𝑥∈𝑃 𝑓(𝑥) = max 𝑦∈𝑄 𝑔(𝑦)
  • 12. 扱う内容 1. 双対LP 2. 最短路・負閉路 3. 最小費用流 4. ラグランジュ双対  最小費用流などのアルゴリズムの解説はしない  双対を考えることでどんな問題が解けるようになる のかの解説がメイン 12
  • 13. 更に勉強したい人向け参考書  ネットワークフロー入門(JOI 2014-2015 春合宿)  保坂和宏、http://hos.ac/slides/20150319_flow.pdf • 最大流・最小費用流の入門に  プログラミングコンテストチャレンジブック  秋葉拓哉、岩田陽一、北川宜稔 • 競プロ向け最大流・最小費用流の基礎と応用例  離散凸解析と最適化アルゴリズム  室田一雄、塩浦昭義 • 最適化アルゴリズムを離散凸という観点から一般化  Graphs, Networks and Algorithms  D. Jungnickel • フローの色々なアルゴリズムが載ってる  Combinatorial Optimization  A. Schrijver • 3部からなる超大作(オススメ) 13
  • 15. 線形計画問題(LP: Linear Programming)  目的関数と制約が全て一次式な連続最適化問題  整数性条件は無し  多項式時間で解ける maximize 𝑥1 + 2𝑥2 subject to 𝑥1 + 𝑥2 ≤ 4 −2𝑥1 + 𝑥2 ≤ 2 𝑥1 ≤ 3 𝑥1, 𝑥2 ≥ 0 15 Max = 22 3 𝒙 = 2 3 , 10 3 本当に最大?
  • 16. 解の上界を示す maximize 𝑥1 + 2𝑥2 subject to 𝑥1 + 𝑥2 ≤ 4 (1) −2𝑥1 + 𝑥2 ≤ 2 (2) 𝑥1 ≤ 3 (3) 𝑥1, 𝑥2 ≥ 0 (1) + (2) + 2(3): 𝑥1 + 2𝑥2 ≤ 12 2 1 : 𝑥1 + 2𝑥2 ≤ 2𝑥1 + 2𝑥2 ≤ 8 5 3 1 + 1 3 (2): 𝑥1 + 2𝑥2 ≤ 22 3 16 22 3 より大は無理
  • 17. 解の上界を示す maximize 𝑥1 + 2𝑥2 subject to 𝑥1 + 𝑥2 ≤ 4 (1) −2𝑥1 + 𝑥2 ≤ 2 (2) 𝑥1 ≤ 3 (3) 𝑥1, 𝑥2 ≥ 0 より一般に、(1)を𝑦1倍、(2)を𝑦2倍、(3)を𝑦3倍して足すと、 𝑦1 − 2𝑦2 + 𝑦3 𝑥1 + 𝑦1 + 𝑦2 𝑥2 ≤ 4𝑦1 + 2𝑦2 + 3𝑦3 17
  • 18. 解の上界を示す maximize 𝑥1 + 2𝑥2 subject to 𝑥1 + 𝑥2 ≤ 4 (1) −2𝑥1 + 𝑥2 ≤ 2 (2) 𝑥1 ≤ 3 (3) 𝑥1, 𝑥2 ≥ 0 より一般に、(1)を𝑦1倍、(2)を𝑦2倍、(3)を𝑦3倍して足すと、 𝑦1 − 2𝑦2 + 𝑦3 𝑥1 + 𝑦1 + 𝑦2 𝑥2 ≤ 4𝑦1 + 2𝑦2 + 3𝑦3 目的関数: 1𝑥1 + 2𝑥2 18 ≥ ≥ 2つの ≥ が成り立てば、 右辺が最大値の上界
  • 19. 双対LP 出来るだけ良い上界を示す問題もLPとなる。 19 maximize 𝑥1 + 2𝑥2 subject to 𝑥1 + 𝑥2 ≤ 4 (× 𝑦1) −2𝑥1 + 𝑥2 ≤ 2 (× 𝑦2) 𝑥1 ≤ 3 (× 𝑦3) 𝑥1, 𝑥2 ≥ 0 minimize 4𝑦1 + 2𝑦2 + 3𝑦3 subject to 𝑦1 − 2𝑦2 + 𝑦3 ≥ 1 𝑦1 + 𝑦2 ≥ 2 𝑦1, 𝑦2, 𝑦3 ≥ 0 双対 主問題 双対問題
  • 20. 双対LP 出来るだけ良い上界を示す問題もLPとなる。 もう一回双対を取ると元に戻る。 20 maximize 𝑥1 + 2𝑥2 subject to 𝑥1 + 𝑥2 ≤ 4 (× 𝑦1) −2𝑥1 + 𝑥2 ≤ 2 (× 𝑦2) 𝑥1 ≤ 3 (× 𝑦3) 𝑥1, 𝑥2 ≥ 0 minimize 4𝑦1 + 2𝑦2 + 3𝑦3 subject to 𝑦1 − 2𝑦2 + 𝑦3 ≥ 1 (× 𝑥1) 𝑦1 + 𝑦2 ≥ 2 (× 𝑥2) 𝑦1, 𝑦2, 𝑦3 ≥ 0 双対 双対 主問題 双対問題
  • 21. 強双対性 21 maximize 𝒄𝒙 subject to 𝐴𝒙 ≤ 𝒃 𝒙 ≥ 𝟎 minimize 𝒃𝒚 subject to 𝐴T 𝒚 ≥ 𝒄 𝒚 ≥ 𝟎 =  双対LPの意味(制約の線形和で出来るだけ良い上 界・下界を示す)さえ理解すれば簡単に双対が取れ るので標準形を暗記する必要はない。  双対LPの作り方から ≤ は明らかだが、実は常に等号 が成立する (強双対性)  もしくは (∞, 解なし)、(解なし、 − ∞)  ただし、等号が成立する整数解があるとは限らない 標準形
  • 22. 他の標準形 (標準形を暗記するより意味を理解しよう) →: 等号なので、負の係数をかけて足しても良い  𝒂𝒙 ≤ 𝑏 を −1 倍したら −𝒂𝒙 ≥ −𝑏 で不等号が逆に ←: 非負制約がないので、係数は一致させないとダメ  𝒚 ≥ 𝟎 ならば、𝒃′ ≤ 𝒃 から 𝒃′ 𝒚 ≤ 𝒃𝒚 が言える 22 maximize 𝒄𝒙 subject to 𝐴𝒙 = 𝒃 𝒙 ≥ 𝟎 minimize 𝒃𝒚 subject to 𝐴T 𝒚 ≥ 𝒄 𝒚 ≥ 𝟎 =
  • 24. 例題: Min-Max (出典: POJ Monthly) 𝑛 (≤ 50000)次元の非負実数ベクトル (𝜇1, … , 𝜇 𝑛) が あり、 σ𝑖 𝜇𝑖 = 1 を満たしている。2つのベクトル 𝑝, 𝑞 と 実数𝐶が与えられる。σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 であるとき、σ𝑞𝑖 𝜇𝑖 の 取りうる値の最小値・最大値を求めよ。 24 http://poj.org/problem?id=2595
  • 25. 例題: Min-Max (出典: POJ Monthly) 最小値を求める問題をLPで書くと、 min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖 σ𝑖 𝜇𝑖 = 1 σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 𝜇𝑖 ≥ 0 双対LPを作ってみると、 25
  • 26. 例題: Min-Max (出典: POJ Monthly) 最小値を求める問題をLPで書くと、 min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖 σ𝑖 𝜇𝑖 = 1 σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 𝜇𝑖 ≥ 0 双対LPを作ってみると、 max 𝑥,𝑦 𝑥 + 𝐶𝑦 𝑥 + 𝑝𝑖 𝑦 ≤ 𝑞𝑖 (× 𝜇𝑖) 26 × 𝑥 (× 𝑦)
  • 27. 例題: Min-Max (出典: POJ Monthly) max 𝑥,𝑦 𝑥 + 𝐶𝑦 𝑥 + 𝑝𝑖 𝑦 ≤ 𝑞𝑖 これは、二次元の多角形内部で、(1, 𝐶)方向に一番遠 い点を求める問題。多角形を𝑂(𝑛 log 𝑛)で構築して端 点を全て調べれば良い。 27 実は定数次元のLPは線形時間で 解けることが知られている。 (Seidel’s LP algorithm など)
  • 28. まとめ  双対LPを構築出来るようになろう  制約式の線形和で出来るだけ良い上界(下界)を 作る、ということだけ覚えておけば自然に作れる  LPでは強双対性が成り立ち、双対LPを解くことで元の LPも解ける  ただし、整数解で成り立つとは限らないので注意  LPで書ける問題は、そのままだと解き方が分からなく ても、双対を取ってみると知ってる問題になるかも 28
  • 30. 𝒔-𝒕最短路問題をLPで書いてみる 辺 𝑒 を通る回数を表す変数 𝑓𝑒 𝑤𝑒 ≔ 辺𝑒の長さ 𝛿+ 𝑣 ≔ 𝑣から出る辺集合、𝛿− 𝑣 ≔ 𝑣へ入る辺集合 𝑓 𝐹 ≔ σ 𝑒∈𝐹 𝑓𝑒 minimize σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒 subject to 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = ൞ −1 (𝑣 = 𝑠) 1 (𝑣 = 𝑡) 0 (otherwise) 𝑓𝑒 ≥ 0 (∀𝑒 ∈ 𝐸) (注意:負の閉路があると最小値は − ∞になる) 30 𝑣 𝛿− (𝑣) 𝛿+(𝑣)
  • 31. 双対LP minimize 𝑓 σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒 s.t. 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = ൞ −1 𝑣 = 𝑠 (× 𝑝𝑠) 1 𝑣 = 𝑡 (× 𝑝𝑡) 0 otherwise (× 𝑝 𝑣) 𝑓𝑒 ≥ 0 maximize 𝑝 𝑝𝑡 − 𝑝𝑠 s.t. 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 (× 𝑓𝑢𝑣) 31 = ただし、整数解で一致するとは まだ言っていない 目的関数・制約ともに「二変数の差」の形 二変数の差が現れたら双対ゲーを疑おう!
  • 32. 距離関数 𝑠から𝑣への最短距離を𝑝 𝑣とすると、 1. 𝑝𝑡 − 𝑝𝑠 = 𝑠−𝑡最短路の長さ 2. ∀𝑢𝑣 ∈ 𝐸に対して、𝑝 𝑣 ≤ 𝑝 𝑢 + 𝑤 𝑢𝑣 が成り立つので、𝑝は双対LPの最適解である。つまり、  最短路アルゴリズムで双対LPが解ける。  𝑤が整数なら整数解が求まる。 ただし、負閉路がある場合に注意 32 maximize 𝑝 𝑝𝑡 − 𝑝𝑠 s.t. 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 for ∀𝑢𝑣 ∈ 𝐸
  • 34. 解ける問題  目的関数が 𝑝𝑡 − 𝑝𝑠 の形  𝑠 から 𝑡 への最短距離を求める  制約が全て 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 の形  𝑢 から 𝑣 へ長さ 𝑤 𝑢𝑣 の辺を張る  𝑤 𝑢𝑣 ≤ 𝑝 𝑣 − 𝑝 𝑢 の形も 𝑝 𝑢 − 𝑝 𝑣 ≤ −𝑤 𝑢𝑣 と書けるので 𝑣 か ら 𝑢 へ長さ −𝑤 𝑢𝑣 の辺を張れば良い Bellman-Fordの更新式を思い出せばグラフは自然に作れる 𝑑 𝑣 ← min(𝑑 𝑣, 𝑑 𝑢 + 𝑤 𝑢𝑣) だから停止時に 𝑑 𝑣 ≤ 𝑑 𝑢 + 𝑤 𝑢𝑣 が成立 34 maximize 𝑝 𝑝𝑡 − 𝑝𝑠 s.t. 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 for ∀𝑢𝑣 ∈ 𝐸
  • 35. 「二変数の差」を作る頻出テク 1. 絶対値上限制約: 𝑝 𝑢 − 𝑝 𝑣 ≤ 𝑤 𝑢𝑣  −𝑤 𝑢𝑣 ≤ 𝑝 𝑢 − 𝑝 𝑣 ≤ 𝑤 𝑢𝑣 2. 一変数制約: 𝑝𝑖 ≤ 𝑤𝑖  新しい変数 𝑝0 を導入し、全ての変数𝑝𝑗を𝑝𝑗 − 𝑝0 で置き換えると、𝑝𝑖 − 𝑝0 ≤ 𝑤𝑖 となる  既存の二変数制約 𝑝𝑗 − 𝑝𝑖 ≤ 𝑤𝑖𝑗 は変化しない 3. 二部グラフ  𝑥𝑖 + 𝑦𝑗 型のときは、全ての𝑦の符号を反転させる ことで、𝑥𝑖 − 𝑦𝑗型になる  グリッドグラフとかで頻出 35
  • 36. 「二変数の差」を作る頻出テク 4. 区間の和: 𝑥𝑖 + 𝑥𝑖+1 + ⋯ + 𝑥𝑗 ≤ 𝑤𝑖𝑗  𝑝𝑖 − 𝑝0 ≔ 𝑥1 + ⋯ + 𝑥𝑖 とおくと、𝑝𝑗 − 𝑝𝑖−1 ≤ 𝑤𝑖𝑗 5. 円形区間和: 𝑥𝑖 + 𝑥𝑖+1 + ⋯ + 𝑥 𝑛 + 𝑥1 + ⋯ + 𝑥𝑗  総和 𝑆 ≔ 𝑥1 + ⋯ + 𝑥 𝑛 を全通り試す・二分探索 などにより固定し、制約 𝑥1 + ⋯ + 𝑥 𝑛 = 𝑆 を追加  𝑆 − (𝑥𝑗+1 + ⋯ + 𝑥𝑖−1) と通常の区間和になる (𝑆は変数でなく定数なことに注意) 36 = −
  • 37. 例題: Asteroids2 (出典: UTPC 2013) https://utpc2013.contest.atcoder.jp/tasks/utpc2013_08 𝑁次元ベクトル𝑝, 𝑞と 𝑁 × 𝑁行列𝐴, 𝐵 が与えられるので 0 ≤ 𝑢𝑖 ≤ 𝑝𝑖 𝑖 ∈ 𝑁 0 ≤ 𝑣𝑗 ≤ 𝑞 𝑗 (𝑗 ∈ [𝑁]) 𝐴𝑖𝑗 ≤ 𝑢𝑖 + 𝑣𝑗 ≤ 𝐵𝑖𝑗 𝑖, 𝑗 ∈ N を満たす整数ベクトル 𝑢, 𝑣 が存在するか判定せよ。 37 ∞ −∞ 3 2 1 1 7 5 3 1 2 4 No
  • 38. 例題: Asteroids2 (出典: UTPC 2013) 新たに変数𝑠を導入し、𝑢𝑖 → 𝑢𝑖 − 𝑠, 𝑣𝑖 → 𝑠 − 𝑣𝑖 と置き 直すと、 0 ≤ 𝑢𝑖 − 𝑠 ≤ 𝑝𝑖 𝑖 ∈ 𝑁 0 ≤ 𝑠 − 𝑣𝑗 ≤ 𝑞 𝑗 (𝑗 ∈ [𝑁]) 𝐴𝑖𝑗 ≤ 𝑢𝑖 − 𝑣𝑗 ≤ 𝐵𝑖𝑗 𝑖, 𝑗 ∈ N 全て差の形になったので負閉路検出して終了 38
  • 39. 例題: Cashier Employment (出典: Tehran 2000) http://poj.org/problem?id=1275 24時間営業のスーパーが店員を募集している。𝑖 時か ら 𝑖 + 8 時までの8時間働く(日を跨ぐ可能性あり)こと を希望する応募者が𝑐𝑖人居る。𝑖 時から 𝑖 + 1 時の間は 少なくとも 𝑟𝑖 人の店員が必要である。最小何人の店員 を雇えばよいか? 𝑖 時から 𝑖 + 8 時希望の応募者から 𝑥𝑖 人を雇うとすると、 σ 𝑗=0 7 𝑥(𝑖−𝑗) mod 24 ≥ 𝑟𝑖 が満たされる必要がある。  円形区間和 39
  • 40. 例題: Cashier Employment (出典: Tehran 2000) 雇う人数の最小値を二分探索で求めよう。 𝑝𝑖 − 𝑝0 ≔ 𝑥0 + ⋯ + 𝑥𝑖−1 とすると、𝑘 人で可能かは以 下のLPで判定できる。 𝑝24 − 𝑝0 = 𝑘 0 ≤ 𝑝𝑖+1 − 𝑝𝑖 ≤ 𝑐𝑖 (𝑖 = 0, … , 23) 𝑝𝑖+1 − 𝑝𝑖−7 ≥ 𝑟𝑖 (𝑖 = 7, … , 23) 𝑘 − 𝑝17+𝑖 − 𝑝𝑖+1 ≥ 𝑟𝑖 𝑖 = 0, … , 6 全て差の形になったので負閉路検出して終了 40 類題: YamanoteLine (SRM553Hard) 円形区間和の上限・下限制約で総和の取りうる値の総数を求める
  • 41. まとめ  目的関数・制約が全て「二変数の差」 (𝑥 − 𝑦) の形 ⇒ 最短路・負閉路検出の双対  辺の向きに迷ったらBellmanFordの更新式を思い出そう  「二変数の差」を作る頻出テクを覚えておこう 41
  • 43. フロー 各辺𝑒に容量𝑐 𝑒(≥ 0)のある有向グラフと供給需要関数 𝑏: 𝑉 → ℝ に対して、以下を満たす𝑓: 𝐸 → ℝ≥0 を「許容 フロー」という。 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = −𝑏 𝑣 0 ≤ 𝑓𝑒 ≤ 𝑐 𝑒 ∀𝑒 ∈ 𝐸 43 𝑣 𝛿− (𝑣) 𝛿+(𝑣) 𝑏 𝑣 > 0な点では 𝑏 𝑣湧き出る 𝑏 𝑣 = 0な点では 入る量=出る量 𝑒を通して最大𝑐 𝑒 まで流せる 𝑏 𝑣 < 0な点では −𝑏 𝑣消費する
  • 44. 最小費用流問題 最小重みの許容フローを求める問題  最短路(𝑏𝑠 = 1, 𝑏𝑡 = −1, 𝑏 𝑣 = 0)の自然な拡張 minimize 𝑓 σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒 subject to 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = −𝑏 𝑣 0 ≤ 𝑓𝑒 ≤ 𝑐 𝑒 (∀𝑒 ∈ 𝐸) 多項式時間で解ける  アルゴリズムの解説は省略  他の資料で勉強してね 44
  • 45. 双対LP minimize 𝑓 σ 𝑒∈𝐸 𝑤𝑒 𝑓𝑒 s.t. 𝑓 𝛿− 𝑣 − 𝑓 𝛿+ 𝑣 = −𝑏 𝑣 (× 𝑝 𝑣) 0 ≤ 𝑓𝑒 ≤ 𝑐 𝑒 (× 𝑧 𝑒) maximize 𝑝,𝑧 − σ 𝑣 𝑏 𝑣 𝑝 𝑣 − σ 𝑒 𝑐 𝑒 𝑧 𝑒 s.t. 𝑝 𝑣 − 𝑝 𝑢 − 𝑧 𝑢𝑣 ≤ 𝑤 𝑢𝑣 (× 𝑓𝑢𝑣) 𝑧 𝑒 ≥ 0 𝑤が整数なら、𝑝も整数最適解が存在  最短路反復法で使うポテンシャル𝑝が実は双対最適解 45 =
  • 46. もう少し整理 maximize 𝑝,𝑧 − σ 𝑣 𝑏 𝑣 𝑝 𝑣 − σ 𝑒 𝑐 𝑒 𝑧 𝑒 s.t. 𝑝 𝑣 − 𝑝 𝑢 − 𝑧 𝑢𝑣 ≤ 𝑤 𝑢𝑣 𝑧 𝑒 ≥ 0 minimize 𝑝,𝑧 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑒 𝑐 𝑒 𝑧 𝑒 s.t. 𝑝 𝑣 − 𝑝 𝑢 − 𝑧 𝑢𝑣 ≤ 𝑤 𝑢𝑣 𝑧 𝑒 ≥ 0 minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣) 46 −1倍 = 𝑧 𝑢𝑣 の値は 𝑝 𝑢, 𝑝 𝑣 から定まる
  • 47. 解ける問題 47 minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)  線形関数とmax(0, 二変数の差 − 定数)の和 𝑝 𝑣 − 𝑝 𝑢 0 𝑤 𝑢𝑣 傾き = 𝑐 𝑢𝑣 > 0
  • 48. 解ける問題 実は任意の下に凸な折れ線が表現可能  傾き負と正に分け、傾きの変化を係数とすれば良い −1 + max 0, −𝑥 + max 0, 𝑥 − 1 + 2 max(0, 𝑥 − 3) 48 𝑥 = 𝑝 𝑣 − 𝑝 𝑢 0 −1 傾き3 −1 1 1 3 傾き1 傾き0 傾き−1
  • 49. 解ける問題 49 minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣) 「二変数の差に関する下に凸な折れ線」の和 の最小化は最小費用流で解ける。  折れ線を分解して上の形にしてからグラフを構築すれば 良い  σ 𝑣 𝑏 𝑣 = 0 なことを考えると、σ 𝑣 𝑏 𝑣 𝑝 𝑣の部分もこの形  最短路のときの「二変数の差」を作る頻出テクがこっちで も役に立つ  途中で−1倍したので、最小値 = −最小費用流なことに 注意
  • 50. 例題: How to Create a Good Game (出典: JAG Summer 2010) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2230 𝑁(≤ 100)点𝑀(≤ 1000)辺のDAGが与えられる。点0か ら点𝑁 − 1へのLongest Pathの長さを変えないように、 出来るだけ辺の重みを増やしたい。増やす重みの和の 最大値を求めよ。 Longest Pathの長さを𝐷、辺𝑒の重みを𝑤𝑒、増やす量を 𝑎 𝑒とすると、 max 𝑎≥0 σ 𝑒 𝑎 𝑒 s.t. Longest Pathの長さが𝐷 50
  • 51. 例題: How to Create a Good Game (出典: JAG Summer 2010) 最短路の双対から、Longest Pathの長さが𝐷以下 ⇔ 以下を満たす𝑝が存在。 𝑝 𝑁−1 − 𝑝0 ≤ 𝐷 𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣 よって、解きたい問題は max 𝑎,𝑝 σ 𝑒 𝑎 𝑒 𝑝 𝑁−1 − 𝑝0 ≤ 𝐷 𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣 𝑎 𝑒 ≥ 0 51
  • 52. 例題: How to Create a Good Game (出典: JAG Summer 2010) 52 min 𝑎,𝑝 σ −𝑎 𝑒 𝑝 𝑁−1 − 𝑝0 ≤ 𝐷 𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣 𝑎 𝑒 ≥ 0 𝑝 𝑣 − 𝑝 𝑢 0 𝑤 𝑢𝑣 傾き−1 ∞ −𝑎 𝑢𝑣 下に凸なので分解して最小費用流で終了 −1倍して = ∞ max 0, 𝑝 𝑢 − 𝑝 𝑣 + 𝑤 𝑢𝑣 + 𝑝 𝑢 − 𝑝 𝑣 + 𝑤 𝑢𝑣
  • 53. 例題: じょうしょうツリー (出典: UTPC 2012) https://utpc2012.contest.atcoder.jp/tasks/utpc2012_12 各頂点𝑣が値𝑐𝑖を持つ𝑁(≤ 105)点の根付き木が与えら れる。コストを1払うことで一つの頂点の値を±1変更で きる。各点𝑢とその子供𝑣について、𝑐 𝑢 > 𝑐 𝑣が成り立つ ように変更する最小コストを求めよ。 53 コスト8
  • 54. 例題: じょうしょうツリー (出典: UTPC 2012) 簡単な変形で、 𝑐 𝑢 > 𝑐 𝑣ではなく 𝑐 𝑢 ≥ 𝑐 𝑣 を目指す問題に出来る。 𝑝 𝑣 ≔ 変更後の𝑣の値、とすると min 𝑝 σ 𝑣 |𝑝 𝑣 − 𝑐 𝑣| s.t. 𝑝 𝑢 ≥ 𝑝 𝑣 |𝑝 𝑣 − 𝑐 𝑣|が一変数なので𝑝 𝑣 → 𝑝 𝑣 − 𝑝0と置き直すと min 𝑝 σ 𝑣 |𝑝 𝑣 − 𝑝0 − 𝑐 𝑣| s.t. 𝑝 𝑢 ≥ 𝑝 𝑣 54 𝑝 𝑣 − 𝑝0 0 𝑐 𝑣 |𝑝 𝑣 − 𝑝0 − 𝑐 𝑣| 下に凸なので分解して最小費用流で終了 …と言いたいところだが𝑁が大きいのでTLE
  • 55. 例題: じょうしょうツリー (出典: UTPC 2012) min 𝑝 σ 𝑣 |𝑝 𝑣 − 𝑝0 − 𝑐 𝑣| s.t. 𝑝 𝑢 ≥ 𝑝 𝑣 分解すると、 min 𝑝 σ 𝑣 max(0, 𝑝 𝑣 − 𝑝0 − 𝑐 𝑣) 0から𝑣へ容量1重み𝑐 𝑣 + σ 𝑣 max(0, 𝑝0 − 𝑝 𝑣 + 𝑐 𝑣) 𝑣から0へ容量1重み−𝑐 𝑣 + σ 𝑢𝑣 ∞max(0, 𝑝 𝑣 − 𝑝 𝑢) 𝑢から𝑣へ容量∞重み0 55 𝑣 𝑢 0 0 𝑐 𝑢 −𝑐 𝑢 𝑐 𝑣 −𝑐 𝑣
  • 56. 例題: じょうしょうツリー (出典: UTPC 2012) 需要供給無しなので、負閉路を詰め込む問題。 グラフの形から全ての負閉路は0 → 𝑢 → 子供 → ⋯ → 𝑣 → 0という形をして おり、葉から根に向かって以下の貪欲法で解ける。 𝑢 … 𝑣0というパスでまだ使えるものの長さをヒープで管理する。 𝑢を以下のようにして処理する 1. 子供のヒープを全てマージ 2. ヒープにパス𝑢0の長さ−𝑐 𝑢を突っ込む 3. 𝑐 𝑢 + ヒープの最小値 < 0 ならばヒープからpopして貪欲に使う データ構造をマージする一般的テクで𝑂(𝑛 log2 𝑛) マージ可能ヒープを用いると𝑂(𝑛 log 𝑛) 56 𝑣 𝑢 0 0 𝑐 𝑢 −𝑐 𝑢 𝑐 𝑣 −𝑐 𝑣
  • 57. 例題: じょうしょうツリー (出典: UTPC 2012) 𝑢 … 𝑣0というパスでまだ使えるものの長さをヒープで管理する。 𝑢を以下のようにして処理する 1. 子供のヒープを全てマージ 2. ヒープにパス𝑢0の長さ−𝑐 𝑢を突っ込む 3. 𝑐 𝑢 + ヒープの最小値 < 0 ならばヒープからpopして貪欲に使う 57 6 2 10 3 5 8 9 5 −9 −5 −3 −5 −9, −8, −5 → −8, −5 −5, −3, −2 → −3, −2 −10, −8, −5 −10, −8, −5, −3, −2 答え: 9 − 8 + 5 − 2 + 10 − 6 = 8
  • 58. 例題: じょうしょうツリー (出典: UTPC 2012) 貪欲の証明: 𝐷 𝑢 ≔ 𝑢以下の頂点集合(𝑢を含む)とすると、𝑢を処理し終えた段 階で𝐺[ 0 ∪ 𝐷 𝑢]の最小費用流が求まっていることを示す。 𝐺[ 0 ∪ 𝐷 𝑢 ∖ 𝑢 ]の最小費用流は、グラフの形から各子供𝑣につ いて𝐺[ 0 ∪ 𝐷𝑣]の最小費用流の和と等しい。 𝑢を追加したことで生じる新たな閉路は0𝑢 … 𝑣0という形のものだ けであり、0𝑢の容量が1であることから、この中で最小のものを1 つ選べば最小費用流になる。 58 類題: 花火 (第二回ドワンゴからの挑戦状予選) Farm Village (JAG Asia 2017) 特殊なグラフの最小費用流
  • 59. まとめ  「二変数の差に関する下に凸な折れ線」の和の最小化 ⇒ 最小費用流の双対  下に凸な折れ線を分解して下の形にすればよい  𝑏 𝑣 ≔ 供給 − 需要  𝑢 → 𝑣 へ重み𝑤 𝑢𝑣、容量𝑐 𝑢𝑣の辺  𝑤 𝑢𝑣は負になる場合あり  特殊なグラフのフローは速く解ける可能性あり 59 minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
  • 61. ラグランジュ緩和 61 𝑔 𝑥 = 0 の制約がなければ 解けるんだけど・・・ max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔 𝑥 = 0
  • 62. ラグランジュ緩和 邪魔な制約を「ペナルティ」として目的関数に移動させ よう。(この操作をラグランジュ緩和という) 任意の 𝜆 (ラグランジュ乗数という) に対して次の不等式 が成り立つ。 62 max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔 𝑥 = 0 max 𝑥∈𝑃 𝑓(𝑥) − 𝜆𝑔 𝑥 ≤ これなら 解ける!max 𝑥∈𝑃 𝑓(𝑥) − 𝜆𝑔 𝑥 s.t. 𝑔 𝑥 = 0 = ∵ 𝑔 𝑥 = 0 なら 𝜆𝑔 𝑥 = 0 ∵ 制約が減った
  • 63. ラグランジュ双対 出来るだけ良い上界を求める問題を考えよう。 (この問題をラグランジュ双対という) 𝐿 𝜆 ≔ max 𝑥∈𝑃 𝑓 𝑥 − 𝜆𝑔(𝑥) とすると、𝐿(𝜆)は下に凸となるので、 (三分探索などで)最小化出来る。 𝐿 𝛼𝜆1 + 1 − 𝛼 𝜆2 = 𝑓 𝑥∗ − 𝛼𝜆1 + 1 − 𝛼 𝜆2 𝑔(𝑥∗) = 𝛼 𝑓 𝑥∗ − 𝜆1 𝑔 𝑥∗ + 1 − 𝛼 𝑓 𝑥∗ − 𝜆2 𝑔 𝑥∗ ≤ 𝛼𝐿 𝜆1 + 1 − 𝛼 𝐿(𝜆2) 63 max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔 𝑥 = 0 min 𝜆 max 𝑥∈𝑃 𝑓(𝑥) − 𝜆𝑔 𝑥≤
  • 64. 強双対性 𝑓 𝑥 − 𝜆𝑔(𝑥) を最大化する𝑥の集合を𝑋(𝜆)と定義する。もし、 𝑥 ∈ 𝑋(𝜆)であって、𝑔 𝑥 = 0 となるものが存在すれば、等号が 成立する。𝜆 を小さくすれば𝑔(𝑥)は大きくなり、大きくすれば𝑔(𝑥) は小さくなるので、二分探索すればちょうど0になるものが見つか り元の問題が解けるのでは?  等号が成立しても全ての 𝑥 ∈ 𝑋(𝜆) で𝑔 𝑥 = 0 となるとは限らないの で、実際に𝑥を構築する方法は少し考えないといけない  最適値を求めるだけなら二分探索して終了 64 max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔 𝑥 = 0 min 𝜆 max 𝑥∈𝑃 𝑓(𝑥) − 𝜆𝑔 𝑥 = ? 一般には成り立たない が、LPでは成り立つ
  • 65. 強双対性(LPの場合) 𝐴𝒙 ≤ 𝒃 の多面体中で、(𝒄 − 𝜆𝒅)方向に一番遠い点を 求める問題。 𝜆 を動かすと、𝑋(𝜆)の範囲も連続的に動くので、ちょう ど𝒅𝒙 = 𝑘 となる点が存在する。 65 max 𝒙 𝒄𝒙 s.t. 𝐴𝒙 ≤ 𝒃 𝒅𝒙 = 𝑘 min 𝜆 max 𝒙 𝒄𝒙 − 𝜆(𝒅𝒙 − 𝑘) s.t. 𝐴𝒙 ≤ 𝒃 = 𝐴𝒙 ≤ 𝒃 𝒄 − 𝜆𝒅 𝒅𝒙 = 𝑘 𝑋(𝜆) 整数解に限定したら飛び越すかも
  • 66. 𝒈 𝒙 ≤ 𝟎 の場合 LPの場合は等号成立 66 max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔 𝑥 ≤ 0 min 𝜆≥0 max 𝑥∈𝑃 𝑓(𝑥) − 𝜆𝑔 𝑥 ≤ ∵ 𝑔 𝑥 ≤ 0, 𝜆 ≥ 0 なら −𝜆𝑔 𝑥 ≥ 0
  • 67. 複数個邪魔な場合 LPの場合は等号成立 67 max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔𝑖 𝑥 = 0 (𝑖 ∈ [𝑛]) min 𝜆1,…,𝜆 𝑛 max 𝑥∈𝑃 𝑓(𝑥) − σ𝑖 𝜆𝑖 𝑔𝑖(𝑥) ≤
  • 68. 双対LPとの関係 全部の制約をラグランジュ緩和すれば双対LPになる。 𝑥𝑖の係数は 𝑐𝑖 − 𝐴∗𝑖 𝒚 (𝐴∗𝑖 ≔ 𝐴の𝑖列ベクトル) もし、ある 𝑖 で 𝑐𝑖 − 𝐴∗𝑖 𝒚 > 0 なら、max 𝒙 ⋯ = ∞ 逆に、全ての 𝑖 で 𝑐𝑖 − 𝐴∗𝑖 𝒚 ≤ 0 なら、max 𝒙 ⋯ = 𝒃𝒚 68 max 𝒙 𝒄𝒙 s.t. 𝐴𝒙 ≤ 𝒃, 𝒙 ≥ 0 min 𝒚≥0 max 𝒙 𝒄𝒙 − 𝒚T(𝐴𝒙 − 𝒃) s.t. 𝒙 ≥ 0 = min 𝒚 𝒃𝒚 s.t. 𝐴T 𝒚 ≥ 𝒄, 𝒚 ≥ 0 =
  • 69. 双対LPとの関係 LPのラグランジュ双対は「双対LPを作る途中段階」だと 思うと、双対変数とラグランジュ乗数が同じものである ことがわかる。  𝒂𝒙 ≤ 𝑏 に対応する双対変数が最適双対解で取る 値と 𝒂𝒙 ≤ 𝑏を消すラグランジュ双対の最適解でラ グランジュ乗数が取る値は同じ  特に、双対LPが整数解を持つLPに対してラグラン ジュ双対を作れば、ラグランジュ乗数の最適値も 整数になる 69
  • 70. ラグランジュゲーの解き方 タイプ1: 解ける問題+邪魔な制約 ⇒ ラグランジュ緩和で制約を消し、二分探索などで双 対問題を解く タイプ2: min max ~ という形の最適化問題(ゲームとか) ⇒ ラグランジュ双対問題だとみなして元の max ~ の 形に戻して解く  等号が成り立つことを確認しよう(特に整数解が必 要な場合) 70
  • 71. 例題: Min-Max (出典: POJ Monthly) の別解 𝑛 (≤ 50000)次元の非負実数ベクトル (𝜇1, … , 𝜇 𝑛) が あり、 σ𝑖 𝜇𝑖 = 1 を満たしている。2つのベクトル 𝑝, 𝑞 と 実数𝐶が与えられる。σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 であるとき、σ𝑞𝑖 𝜇𝑖 の 取りうる値の最小値・最大値を求めよ。 71 http://poj.org/problem?id=2595 min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖 σ𝑖 𝜇𝑖 = 1 σ𝑖 𝑝𝑖 𝜇𝑖 = 𝐶 𝜇𝑖 ≥ 0 ←この制約がなければ非常に簡単 (一番小さい𝑞𝑖に対して𝜇𝑖 = 1とすればよい)
  • 72. 例題: Min-Max (出典: POJ Monthly) の別解 ラグランジュ双対を取ると、 max 𝜆 min 𝜇 σ𝑖 𝑞𝑖 𝜇𝑖 + 𝜆(σ𝑖 𝑝𝑖 𝜇𝑖 − 𝐶) σ𝑖 𝜇𝑖 = 1 𝜇𝑖 ≥ 0  (𝑞𝑖 + 𝜆𝑝𝑖) が一番小さい 𝑖 に対して、𝜇𝑖 = 1 とすれば 内側の最小化可能。  𝑝𝑖 − 𝐶 の符号で二分探索すれば外側の最大化が出 来る。 双対LPで幾何の問題にするより、かなり簡単! 72
  • 73. 例題: Skyland (出典: JAG Spring 2012) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2396 𝑛 (≤ 100)個の浮遊島がある。各島の高度は0以上の 任意の実数値に設定できる。𝑖 番目の島を高度ℎにする にはコストが𝑑𝑖ℎかかる。島𝑖と島𝑗の高度差が𝑥あるとコ ストが𝑐𝑖𝑗 𝑥かかる。高度の合計を𝐻以上にする最小コス トを求めよ。(本来はそのようなℎを求める問題) 73 min ℎ σ𝑖 𝑑𝑖ℎ𝑖 + σ𝑖𝑗 𝑐𝑖𝑗|ℎ𝑖 − ℎ𝑗| σ𝑖 ℎ𝑖 ≥ 𝐻 ℎ𝑖 ≥ 0 ←この制約がなければ 双対最小費用流の形
  • 74. 例題: Skyland (出典: JAG Spring 2012) ラグランジュ双対を取ると、  双対最小費用流で内側の最小化が可能  よく眺めると全ての重みが0なので、供給需要を満 たすフローがあるか判定問題→最大流  許容フローがあるかどうかで二分探索すれば外側の 最大化が可能  解の構築はこの方針だともう少し考察が必要 74 max 𝜆≥0 min ℎ σ𝑖 𝑑𝑖ℎ𝑖 + σ𝑖𝑗 𝑐𝑖𝑗|ℎ𝑖 − ℎ𝑗| −𝜆(σ𝑖 ℎ𝑖 − 𝐻) ℎ𝑖 ≥ 0
  • 75. 解の構築方法(プロ向け補足) 解の構築がしたい場合は? 重み0の最小費用流の双対なので、単純にはℎ = 0が 解として求まってしまい、σ𝑖 ℎ𝑖 = 𝐻 とならないので、別 の最適解を構築する必要がある。 ℎ𝑖 → ℎ𝑖 − ℎ0 と置き換えてグラフを作ってみると、 75 0 𝑖 𝑗 𝑐𝑖𝑗 ∞ ∞ 𝑏0 = 𝜆𝑛 − σ𝑖 𝑑𝑖 𝑏𝑖 = 𝑑𝑖 − 𝜆 𝑏𝑗 = 𝑑𝑗 − 𝜆
  • 76. 解の構築方法(プロ向け補足) 最適な𝜆における許容フロー𝑓を固定する。相補性定理 から、ℎが最適解 ⇔ 𝑓の残余グラフにおける全ての容 量正の辺𝑢𝑣で ℎ 𝑣 ≤ ℎ 𝑢。もし0から全ての点が到達可能 なら、𝜆を𝜖増やしても許容フローが存在するので矛盾。 到達出来ない点集合𝑆に対して𝑣 ∈ 𝑆 で ℎ 𝑣 = 𝐻/|𝑆| と すれば良い。(このような最適解が存在することに先に 気づけば二分探索+最小カットで直接解ける) 76 0 𝑖 𝑗 𝑐𝑖𝑗 ∞ ∞ 𝑏0 = 𝜆𝑛 − σ𝑖 𝑑𝑖 𝑏𝑖 = 𝑑𝑖 − 𝜆 𝑏𝑗 = 𝑑𝑗 − 𝜆
  • 77. 例題: Longest Shortest Path (出典: JAG Asia 2015) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2736 𝑁(≤ 200)点𝑀(≤ 2000)辺の重み付き有向グラフが与 えられる。各辺𝑒について、コスト𝑥 ⋅ 𝑐 𝑒(非負実数)支払う ことで重みを𝑤𝑒から𝑤𝑒 + 𝑥に増加させることが出来る。 予算𝑃の範囲内で𝑠-𝑡最短路の長さを最大化せよ。 77 max 𝑥 (重み𝑤 + 𝑥での𝑠−𝑡距離) σ 𝑒 𝑐 𝑒 𝑥 𝑒 ≤ 𝑃 𝑥 𝑒 ≥ 0
  • 78. 例題: Longest Shortest Path (出典: JAG Asia 2015) ラグランジュ双対を取ると、  双対最小費用流で内側の最大化が可能  σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃の符号で二分探索すれば外側の最小化 が可能 78 min 𝜆≥0 max 𝑥 (𝑤 + 𝑥での𝑠−𝑡距離) − 𝜆 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃 𝑥 𝑒 ≥ 0 min 𝜆≥0 max 𝑥,𝑝 𝑝𝑡 − 𝑝𝑠 − 𝜆 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 + 𝑥 𝑢𝑣 𝑥 𝑒 ≥ 0 = 𝑠-𝑡最短路の双対
  • 79. 例題: Longest Shortest Path (出典: JAG Asia 2015) 入力が小さいのでこのままでも解けるが、もう少し高速 化が可能。𝜆 → 1/𝐹 と置き換えると、 これは(流量𝐹の最小費用流 + 𝑃)/𝐹 を最小化する問題 ⇒ 𝐹 を1ずつ増やしていくことで解ける 79 min 𝐹>0 max 𝑥,𝑝 (𝐹𝑝𝑡 − 𝐹𝑝𝑠 − σ 𝑒 𝑐 𝑒 𝑥 𝑒 + 𝑃)/𝐹 𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 + 𝑥 𝑢𝑣 𝑥 𝑒 ≥ 0
  • 80. 例題: きたまさの逆襲 (出典: UTPC 2012) https://utpc2012.contest.atcoder.jp/tasks/utpc2012_10 重み付き二部グラフ𝐺 = (𝑈, 𝑉)がある。秋葉さんは大きさ|𝑉|の マッチングで出来るだけ重みの小さいものが欲しい。きたまささ んは重みを操作することで秋葉さんの妨害をしたい。𝑈の分割 𝑈 = 𝑈1 ∪ ⋯ ∪ 𝑈 𝑑があり、コスト𝑏𝑖を支払うことで𝑈𝑖に接続する全 ての辺の重みを1増えせる(複数回増やして良い)。(秋葉さんの マッチングの重み)−(きたまささんのコスト)を最大化せよ。 80 max 𝜆1,…,𝜆 𝑑≥0 min 𝑓 σ𝑖 σ 𝑢∈𝑈 𝑖 σ 𝑣(𝑤 𝑢𝑣 + 𝜆𝑖) 𝑓𝑢𝑣 − σ𝑖 𝑏𝑖 𝜆𝑖 𝑓: 大きさ|𝑉|のマッチング
  • 81. 例題: きたまさの逆襲 (出典: UTPC 2012) ラグランジュ双対をとった形だと思うと、 81 max 𝜆1,…,𝜆 𝑑≥0 min 𝑓 σ 𝑒 𝑤𝑒 𝑓𝑒 + σ𝑖(σ 𝑢∈𝑈 𝑖 σ 𝑣 𝑓𝑢𝑣 − 𝑏𝑖)𝜆𝑖 𝑓: 大きさ|𝑉|のマッチング =min 𝑓 σ 𝑒 𝑤𝑒 𝑓𝑒 𝑓: 大きさ|𝑉|のマッチング σ 𝑢∈𝑈 𝑖 σ 𝑣 𝑓𝑢𝑣 ≤ 𝑏𝑖
  • 82. 例題: きたまさの逆襲 (出典: UTPC 2012) これは(双対でなく普通の)最小費用流 82 min 𝑓 σ 𝑒 𝑤𝑒 𝑓𝑒 𝑓: 大きさ|𝑉|のマッチング σ 𝑢∈𝑈 𝑖 σ 𝑣 𝑓𝑢𝑣 ≤ 𝑏𝑖 𝑠 𝑈𝑖 𝑢 𝑣 𝑡 重み 容量 0 0 𝑤 𝑢𝑣 0 𝑏𝑖 1 1 1 この容量制約の双対変数が𝜆𝑖 よって整数解が存在 𝑈𝑖から出る流量 の和が𝑏𝑖以下
  • 83. 例題: Homework (ICPC Asia 2017) http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1385 (意訳) 2つの二部グラフ𝐺1 = (𝑈1 ∪ 𝑉, 𝐸1)と𝐺2 = (𝑈2 ∪ 𝑉, 𝐸2)が与えられる。𝑉 = 𝑉1 ∪ 𝑉2と分割し、(𝑈1, 𝑉1)と (𝑈2, 𝑉2)の最大マッチングの和を最小化せよ。 83 a b c 1 4 6 2 3 5 A B C 2 3 5 1 4 6 𝑈1 𝑉 𝑉 𝑈2 1 + 1 = 2
  • 84. 例題: Homework (ICPC Asia 2017) 𝑓𝑒 ≔ 𝑒をマッチングに含めるか 𝜆 𝑣 ≔ 𝑣 を 𝑉1に含めるか と定義し、min max ~ の形で書くと 84 min 𝜆∈ 0,1 𝑉 max 𝑓 ෍ 𝑢𝑣∈𝐸1 𝜆 𝑣 𝑓𝑢𝑣 + ෍ 𝑢𝑣∈𝐸2 (1 − 𝜆 𝑣)𝑓𝑢𝑣 𝑓: 𝐺1, 𝐺2のマッチング 𝜆 𝑣 = 0なら𝑢𝑣を使っても意味なし
  • 85. 例題: Homework (ICPC Asia 2017) 85 min 𝜆∈ 0,1 𝑉 max 𝑓 ෍ 𝑒∈𝐸2 𝑓𝑒 + ෍ 𝑣 𝜆 𝑣 ෍ 𝑢∈𝑈1 𝑓𝑢𝑣 − ෍ 𝑢∈𝑈2 𝑓𝑢𝑣 𝑓: 𝐺1, 𝐺2のマッチング max 𝑓 σ 𝑒∈𝐸2 𝑓𝑒 𝑓: 𝐺1, 𝐺2のマッチング σ 𝑢∈𝑈1 𝑓𝑢𝑣 − σ 𝑢∈𝑈2 𝑓𝑢𝑣 = 0 ∀𝑣 ∈ 𝑉 ≥ 𝜆 ∈ 0,1 𝑉となる最適解があれば等号成立
  • 86. 例題: Homework (ICPC Asia 2017) 𝐺1で𝑣を使うなら𝐺2でも𝑣を使うような最大マッチングを 求める、最大流の基礎的な応用問題 (Dining@POJ 3281 と同じ問題)  最大流の双対解=最小カットは0,1の値を取るので 等号成立  他にも色々な方法で同じ解法に至れる(マトロイド交 差の双対など) 86 max 𝑓 σ 𝑒∈𝐸2 𝑓𝑒 𝑓: 𝐺1, 𝐺2のマッチング σ 𝑢∈𝑈1 𝑓𝑢𝑣 − σ 𝑢∈𝑈2 𝑓𝑢𝑣 = 0 ∀𝑣 ∈ 𝑉
  • 87. 例題: Homework (ICPC Asia 2017) 87 a b c 1 4 6 2 3 5 A B C 2 3 5 1 4 6 𝑈1 𝑉 𝑉 𝑈2 𝑠 𝑡
  • 88. まとめ min max ~ 最適化 ⇒ ラグランジュ双対とみなして元に戻してみよう  双対LPが最適整数解を持つなら、ラグランジュ乗 数も最適整数解を持つ 88 max 𝑥∈𝑃 𝑓(𝑥) s.t. 𝑔 𝑥 = 0 min 𝜆 max 𝑥∈𝑃 𝑓(𝑥) − 𝜆𝑔 𝑥 ≤ LPでは等号成立 解ける問題+邪魔な制約 ⇒ ラグランジュ双対をとって𝑔 𝑥 の符号で 二分探索しよう 出来るだけ良い 上界を得たい
  • 89. 全体のまとめ  LP双対  制約式の線形和で出来るだけ良い上界(下界)を作る  最短路・負閉路  目的関数・制約が「二変数の差」  最小費用流  「二変数の差に関する下に凸な折れ線」の和の最小化  minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)  ラグランジュ双対  LP双対の途中段階とみなせる  邪魔な制約の除去  min max ~ 型最適化 89