Successfully reported this slideshow.

双対性

33

Share

Loading in …3
×
1 of 89
1 of 89

双対性

33

Share

Download to read offline

Description

JOI春合宿2018講義資料

Transcript

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

Description

JOI春合宿2018講義資料

Transcript

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

More Related Content

Related Audiobooks

Free with a 30 day trial from Scribd

See all

×