Skip to main content More Related Content
PDF
PDF
PDF
PPTX
PDF
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~ PDF
PDF
What's hot
PDF
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~ PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
AtCoder Regular Contest 039 解説 PDF
PDF
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方 PDF
PDF
AtCoder Regular Contest 042 解説 PDF
PDF
PDF
PDF
PDF
AtCoder Regular Contest 030 解説 Similar to 双対性
PPTX
PDF
PDF
PDF
PDF
PDF
[DL輪読会]Control as Inferenceと発展 PDF
PDF
PDF
1次式とノルムで構成された最適化問題とその双対問題 PPT
Introduction to Algorithms#24 Shortest-Paths Problem PDF
PPT
PDF
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会) PDF
PDF
Casual learning machine learning with_excel_no4 PDF
PDF
Infomation geometry(overview) PDF
はじめてのパターン認識 第8章 サポートベクトルマシン PPTX
PDF
双対性
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
P ⊆ NP∩ co-NP
Noを示すもっと簡単な証明はないだろうか?
8
P
NP co-NP
s t
1本は不可能?
最小値を計算したら
2だったので無理です
多項式時間で解ける(P)ならば
アルゴリズムの実行自体が効率
的に検証可能な証明といえる。
- 9.
- 10.
双対問題
min
𝑥∈𝑃
𝑓 𝑥 =max
𝑦∈𝑄
𝑔(𝑦)
となるように 𝑄, 𝑔 を設計出来れば、𝑦を与えることでNo
が証明可能!
10
min
𝑥∈𝑃
𝑓(𝑥)
𝑃の範囲で𝑓(𝑥)を最小化せよ
max
𝑦∈𝑄
𝑔(𝑦)
𝑄の範囲で𝑔(𝑦)を最大化せよ
一致
𝑓(𝑥)の範囲
𝑔(𝑦)の範囲
- 11.
よくあるパターン
1. 𝑓 𝑥≥ 𝑔(𝑦) (∀𝑥 ∈ 𝑃, ∀𝑦 ∈ 𝑄) が簡単に示せる
2. アルゴリズムの停止時に 𝑓 𝑥 = 𝑔(𝑦) となる 𝑥 ∈ 𝑃
と 𝑦 ∈ 𝑄 が得られることが示せる
→ 強双対定理とアルゴリズムの正当性が導かれる
11
(強)双対定理
min
𝑥∈𝑃
𝑓(𝑥) = max
𝑦∈𝑄
𝑔(𝑦)
- 12.
- 13.
更に勉強したい人向け参考書
ネットワークフロー入門(JOI 2014-2015春合宿)
保坂和宏、http://hos.ac/slides/20150319_flow.pdf
• 最大流・最小費用流の入門に
プログラミングコンテストチャレンジブック
秋葉拓哉、岩田陽一、北川宜稔
• 競プロ向け最大流・最小費用流の基礎と応用例
離散凸解析と最適化アルゴリズム
室田一雄、塩浦昭義
• 最適化アルゴリズムを離散凸という観点から一般化
Graphs, Networks and Algorithms
D. Jungnickel
• フローの色々なアルゴリズムが載ってる
Combinatorial Optimization
A. Schrijver
• 3部からなる超大作(オススメ)
13
- 14.
- 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.
- 21.
強双対性
21
maximize 𝒄𝒙
subject to𝐴𝒙 ≤ 𝒃
𝒙 ≥ 𝟎
minimize 𝒃𝒚
subject to 𝐴T 𝒚 ≥ 𝒄
𝒚 ≥ 𝟎
=
双対LPの意味(制約の線形和で出来るだけ良い上
界・下界を示す)さえ理解すれば簡単に双対が取れ
るので標準形を暗記する必要はない。
双対LPの作り方から ≤ は明らかだが、実は常に等号
が成立する (強双対性)
もしくは (∞, 解なし)、(解なし、 − ∞)
ただし、等号が成立する整数解があるとは限らない
標準形
- 22.
- 23.
- 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.
- 29.
- 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 ∀𝑢𝑣 ∈ 𝐸
- 33.
- 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.
- 42.
- 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.
- 49.
解ける問題
49
minimize 𝑝 σ𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
「二変数の差に関する下に凸な折れ線」の和
の最小化は最小費用流で解ける。
折れ線を分解して上の形にしてからグラフを構築すれば
良い
σ 𝑣 𝑏 𝑣 = 0 なことを考えると、σ 𝑣 𝑏 𝑣 𝑝 𝑣の部分もこの形
最短路のときの「二変数の差」を作る頻出テクがこっちで
も役に立つ
途中で−1倍したので、最小値 = −最小費用流なことに
注意
- 50.
例題: How toCreate 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 toCreate a Good Game (出典: JAG Summer 2010)
最短路の双対から、Longest Pathの長さが𝐷以下
⇔ 以下を満たす𝑝が存在。
𝑝 𝑁−1 − 𝑝0 ≤ 𝐷
𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣
よって、解きたい問題は
max
𝑎,𝑝
σ 𝑒 𝑎 𝑒
𝑝 𝑁−1 − 𝑝0 ≤ 𝐷
𝑝 𝑣 − 𝑝 𝑢 ≥ 𝑤 𝑢𝑣 + 𝑎 𝑢𝑣
𝑎 𝑒 ≥ 0
51
- 52.
例題: How toCreate 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.
- 60.
- 61.
- 62.
- 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.
- 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.
- 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.
- 76.
- 77.
例題: Longest ShortestPath (出典: JAG Asia 2015)
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2736
𝑁(≤ 200)点𝑀(≤ 2000)辺の重み付き有向グラフが与
えられる。各辺𝑒について、コスト𝑥 ⋅ 𝑐 𝑒(非負実数)支払う
ことで重みを𝑤𝑒から𝑤𝑒 + 𝑥に増加させることが出来る。
予算𝑃の範囲内で𝑠-𝑡最短路の長さを最大化せよ。
77
max
𝑥
(重み𝑤 + 𝑥での𝑠−𝑡距離)
σ 𝑒 𝑐 𝑒 𝑥 𝑒 ≤ 𝑃
𝑥 𝑒 ≥ 0
- 78.
例題: Longest ShortestPath (出典: JAG Asia 2015)
ラグランジュ双対を取ると、
双対最小費用流で内側の最大化が可能
σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃の符号で二分探索すれば外側の最小化
が可能
78
min
𝜆≥0
max
𝑥
(𝑤 + 𝑥での𝑠−𝑡距離) − 𝜆 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃
𝑥 𝑒 ≥ 0
min
𝜆≥0
max
𝑥,𝑝
𝑝𝑡 − 𝑝𝑠 − 𝜆 σ 𝑒 𝑐 𝑒 𝑥 𝑒 − 𝑃
𝑝 𝑣 − 𝑝 𝑢 ≤ 𝑤 𝑢𝑣 + 𝑥 𝑢𝑣
𝑥 𝑒 ≥ 0
=
𝑠-𝑡最短路の双対
- 79.
例題: Longest ShortestPath (出典: 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 (ICPCAsia 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 (ICPCAsia 2017)
𝑓𝑒 ≔ 𝑒をマッチングに含めるか
𝜆 𝑣 ≔ 𝑣 を 𝑉1に含めるか
と定義し、min max ~ の形で書くと
84
min
𝜆∈ 0,1 𝑉
max
𝑓
𝑢𝑣∈𝐸1
𝜆 𝑣 𝑓𝑢𝑣 +
𝑢𝑣∈𝐸2
(1 − 𝜆 𝑣)𝑓𝑢𝑣
𝑓: 𝐺1, 𝐺2のマッチング
𝜆 𝑣 = 0なら𝑢𝑣を使っても意味なし
- 85.
例題: Homework (ICPCAsia 2017)
85
min
𝜆∈ 0,1 𝑉
max
𝑓
𝑒∈𝐸2
𝑓𝑒 +
𝑣
𝜆 𝑣
𝑢∈𝑈1
𝑓𝑢𝑣 −
𝑢∈𝑈2
𝑓𝑢𝑣
𝑓: 𝐺1, 𝐺2のマッチング
max
𝑓
σ 𝑒∈𝐸2
𝑓𝑒
𝑓: 𝐺1, 𝐺2のマッチング
σ 𝑢∈𝑈1
𝑓𝑢𝑣 − σ 𝑢∈𝑈2
𝑓𝑢𝑣 = 0 ∀𝑣 ∈ 𝑉
≥
𝜆 ∈ 0,1 𝑉となる最適解があれば等号成立
- 86.
例題: Homework (ICPCAsia 2017)
𝐺1で𝑣を使うなら𝐺2でも𝑣を使うような最大マッチングを
求める、最大流の基礎的な応用問題 (Dining@POJ
3281 と同じ問題)
最大流の双対解=最小カットは0,1の値を取るので
等号成立
他にも色々な方法で同じ解法に至れる(マトロイド交
差の双対など)
86
max
𝑓
σ 𝑒∈𝐸2
𝑓𝑒
𝑓: 𝐺1, 𝐺2のマッチング
σ 𝑢∈𝑈1
𝑓𝑢𝑣 − σ 𝑢∈𝑈2
𝑓𝑢𝑣 = 0 ∀𝑣 ∈ 𝑉
- 87.
- 88.
まとめ
min max ~最適化
⇒ ラグランジュ双対とみなして元に戻してみよう
双対LPが最適整数解を持つなら、ラグランジュ乗
数も最適整数解を持つ
88
max
𝑥∈𝑃
𝑓(𝑥) s.t. 𝑔 𝑥 = 0
min
𝜆
max
𝑥∈𝑃
𝑓(𝑥) − 𝜆𝑔 𝑥
≤ LPでは等号成立
解ける問題+邪魔な制約
⇒ ラグランジュ双対をとって𝑔 𝑥 の符号で
二分探索しよう
出来るだけ良い
上界を得たい
- 89.
全体のまとめ
LP双対
制約式の線形和で出来るだけ良い上界(下界)を作る
最短路・負閉路
目的関数・制約が「二変数の差」
最小費用流
「二変数の差に関する下に凸な折れ線」の和の最小化
minimize 𝑝 σ 𝑣 𝑏 𝑣 𝑝 𝑣 + σ 𝑢𝑣 𝑐 𝑢𝑣max(0, 𝑝 𝑣 − 𝑝 𝑢 − 𝑤 𝑢𝑣)
ラグランジュ双対
LP双対の途中段階とみなせる
邪魔な制約の除去
min max ~ 型最適化
89