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

Efficient algorithms for combinatorial optimization problems

D0167b760673d702a06427fb3f878696?s=47 Shunji Umetani
February 08, 2021

Efficient algorithms for combinatorial optimization problems

整数計画問題を含む多くの組合せ最適化問題はNP困難であり,任意の入力データに対して効率的に最適解を求めることは非常に困難です.一方で,最小全域木問題,最短路問題,割当問題など,特殊な構造を持ついくつかの組合せ最適化問題は効率的な多項式時間アルゴリズムが知られています.今回は,貪欲法と動的計画法を中心に,効率的に解ける組合せ最適化問題とそのアルゴリズムを紹介します.

D0167b760673d702a06427fb3f878696?s=128

Shunji Umetani

February 08, 2021
Tweet

Transcript

  1. 貪欲法と動的計画法 ⼤阪⼤学 ⼤学院情報科学研究科 梅⾕ 俊治 2021年1⽉19⽇

  2. 組合せ最適化問題とその応⽤事例 • 組合せ最適化問題︓最適解を含む解の集合(探索領域)が,集合, 順列,割当て,ネットワーク,論理,整数など組合せ的な構造を 持つ最適化問題. 2 多くの現実問題が組合せ最適化問題に定式化できる

  3. 組合せ最適化問題の難しさ • NP困難問題︓厳密な最適解を求めるのに必要な計算時間が最悪で ⼊⼒サイズの指数関数になると多くの研究者が考えている問題. • 都市をちょうど1回ずつ訪問する最短の巡回路を求める巡回セー ルスマン問題の解候補を列挙すると 通り. 3 Newsweek,

    July 26, 1954 PCB3038 D15112 都市数 巡回路の総数 計算時間(秒) 6 60 4.32×10-10 8 2520 3.23×10-8 10 1.81×105 3.63×10-6 15 4.36×1010 1.96 20 6.08×1016 4.87×106 約56⽇ 25 3.10×1023 3.88×1013 約122万年 30 4.42×1030 7.96×1020 約25233億年 100TFlopsのコンピュータを⽤いて 巡回路を列挙したときの計算時間 ⼤規模な巡回セールスマン問題を 解く必要が⽣じることは少なくない 組合せ最適化問題の全ての解を列挙することは⾮常に困難
  4. 効率的に解ける組合せ最適化問題 • 巡回セールスマン問題や整数計画問題など,多くの組合せ最適化 問題はNP困難で効率的なアルゴリズムは期待できない. • 特徴的な構造を持つ⼀部の組合せ最適化問題には効率的なアルゴ リズムが存在する. 4 離散最適化問題 (組合せ最適化問題)

    整数計画問題 資源配分問題,最⼩全域⽊問題など 貪欲法 ナップサック問題*,資源配分問題, 最⼩費⽤弾性マッチング問題など 動的計画法 最⼤流問題,最⼩費⽤流問題, 最⼤マッチング問題,割当問題など 増加路法,負閉路消去法,最短路繰り返し法, (ハンガリー法) 最短路問題 ダイクストラ法,ベルマン・フォード法, フロイド・ウォーシャル法 分枝限定法,切除平⾯法,(分枝カット法) ビンパッキング問題,最⼤カット問題, 巡回セールスマン問題,頂点被覆問題, ナップサック問題など 性能保証付き近似解法 さまざまなNP困難問題 発⾒的解法,局所探索法,メタヒューリスティクス, (分枝カット法) 効率的なアルゴリズム が存在する *⼊⼒データの各要素(荷物の重さ および袋の容量 )が定数⻑の⽂字列で表現できるという仮定が必要.
  5. 資源配分問題の貪欲法 • 貪欲法︓局所的な評価値が最も⾼い要素を選ぶ⼿続きを繰り返し て実⾏可能解を段階的に構築する⼿法. • 個の事業と利⽤可能な総資源量 が与えられる. • 事業 に資源を

    単位配分すると利益 が⽣じる. • 総利益を最⼤化するように資源を各事業に配分するには︖ • が凹関数ならば増分 は変数 について⾮増加*. • 増分 が最⼤となる変数 を1単位増やす⼿続きを繰り返す. 5 費⽤を表す凹関数 *例えば,同じ広告を繰返し配信すると広告1回当たりの効果は徐々に減少する(限界効⽤逓減の法則).
  6. 最⼩全域⽊問題の貪欲法 • グラフ ,各辺 ,の⻑さ が与えられる. • グラフ の全ての頂点をつなぐ最短の辺の部分集合 は︖

    • クラスカル法,プリム法など効率的なアルゴリズムが存在する. 6 最⼩全域⽊ 閉路を持つ辺集合 閉路を持つと距離の 和は最⼩にならない 全点を繋いでいない辺集合
  7. クラスカル法 • ⻑さの⼩さい順に辺を追加する. • 各反復では閉路ができないように⻑さ最⼩の辺を追加する. 7 2 5 7 9

    8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4
  8. プリム法 • 適当な点 を根とし辺を1本ずつ追加して⽊ を成⻑させる. • 各反復では点 と点 をつなぐ⻑さ最⼩の辺を追加する. 8

    2 5 7 9 8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4 2 5 7 9 8 9 4
  9. 動的計画法 • 「元の問題の最適解がある部分問題の最適解を含む」という部分 構造最適性を持つ問題を対象とする. • ⾃明な解を持つ部分問題から始めて,順次⼤きな部分問題を解く. • 重複する部分問題を繰り返し解かないように履歴を記録する. 9 分枝限定法

    問題を独⽴した部分問題に分割 動的計画法 部分問題が独⽴でないときに適⽤ 原問題 原問題 分枝限定法はトップダウン 動的計画法はボトムアップ
  10. ナップサック問題の動的計画法 • 個の荷物と重さ容量 の袋が与えられる. • 荷物 の重さを 価値 とする. •

    価値の合計を最⼤化するような荷物の詰め合わせは︖ • 袋の容量を に,荷物の候補を に制限した部分 問題の最適値を とする. • は以下の漸化式で求められる. 10 ナップサックの容量 荷 物
  11. ナップサック問題の動的計画法 • 袋の重さ容量 • 荷物の重さ • 荷物の価値 11 *問題例の⼊⼒サイズは で,これをkとすると時間計算量は

    となるため,ナップサック問題 に対する動的計画法は多項式時間アルゴリズムではない(擬多項式時間アルゴリズムと呼ばれる) 最適な袋詰め 最適な袋詰めが 時間で得られる*
  12. 資源配分問題の動的計画法 • が凹関数とは限らない資源配分問題について,資源の総量 を に,事業の候補を に制限した部分問題の 最適値を とする. • は以下の漸化式で求められる.

    12 事 業 資源 のみを変数に持つ関数(分離型) 部分問題は 個なので 時間* *問題例の⼊⼒サイズは で,これをkとすると時間計算量は となるため,資源配分問題 に対する動的計画法は擬多項式時間アルゴリズムである.
  13. 最⼩費⽤弾性マッチング問題の動的計画法 • ⽂字列 と を順番が逆転しない 範囲で少なくとも1つの要素に対応付ける. • 要素 と の対応付け費⽤を

    が与えられたとき,対応付け費⽤ の合計を最⼩化する. • の 番⽬までの要素からなる部分列 と の 番 ⽬までの要素からなる部分列 に制限した部分問 題を考えると,その最適値 は以下の通り. 13 弾性マッチング 弾性ではないマッチング 順番の逆転はNG 対応付けがない要素もNG
  14. 最⼩費⽤弾性マッチング問題の動的計画法 • 図の左下端から右上端までの最短路を求める問題とみなせる. • 漸化式は要素の対 にいたる路が直前に左下の , 左の ,下の のいずれか1つの頂点を通ることを

    表す. 14 時間
  15. 最短路問題のラベリング法 • グラフ ,各辺 の⻑さ が与えられる. • 始点 から各頂点 への最短路は︖(単⼀始点最短路問題)

    • 部分構造最適性︓始点 から頂点 への路 の部分路 は,始点 から頂点 への最短路. • 始点 から各頂点 への最短路の⻑さの上界を表すラベル値 を更新する⼿続きを繰り返す. • ダイクストラ法︓各反復でこれまでに選ばれていない頂点の中で最 ⼩のラベル値 を持つ頂点を選ぶ⼿続きを繰り返す. • ベルマン・フォード法︓全ての頂点を適当な順番で1回ずつ選びラベ ル値 を更新する⼿続きを繰り返す. 15 部分構造最適性
  16. ダイクストラ法 16 a b c d e f g 4

    2 2 1 2 6 4 1 3 1 2 2 4 5 a b c d e f g 4 2 1 2 6 4 3 1 2 2 4 5 a b c d e f g 2 1 2 6 4 3 1 2 2 4 5 a b c d e f g 2 1 2 6 3 1 2 2 4 5
  17. ダイクストラ法 17 a b c d e f g 2

    1 2 6 3 1 2 4 5 a b c d e f g 2 1 2 3 1 2 4 5 a b c d e f g 2 1 2 3 1 4 距離 の更新回数は 枝の本数の 回で 時間* 各反復で最短距離を⾒つ けるのに 時間 時間 *各頂点の暫定距離dをヒープに格納する.フィボナッチヒープを⽤いれば 時間に減ら すことができる.
  18. フロイド・ウォーシャル法 18 • 点iから点jへの最短路で,kは中間点の中で最も番号が⼤きい点 • 点iから点kまでの部分路p1 の全ての中間点は{1,2,...,k-1}に含まれる • 点kから点jまでの部分ろp2 の全ての中間点は{1,2,...,k-1}に含まれる

    • 中間点が全て{1,2,...,k}に含まれるような点iから点jへの最短路の距 離を とする • k=0のとき,0より⼤きい番号の付いた中間点を通らないので, となる i k j p1 p2 中間点は全て{1,2,...,k}に含まれる 中間点は全て{1,2,...,k-1} に含まれる 中間点は全て{1,2,...,k-1} に含まれる
  19. フロイド・ウォーシャル法 19 1 2 3 4 5 3 2 -4

    6 7 1 -5 8 4
  20. フロイド・ウォーシャル法 20 全体の計算量は 時間 本の枝しか辿 らないので負の 距離の枝でもOK 1 2 3

    4 5 3 2 -4 6 7 1 -5 8 4
  21. 参考⽂献 • 茨⽊俊秀,Cによるアルゴリズムとデータ構造 改訂第2版,オー ム社,2019. • ⼤槻兼資(著),秋葉拓哉(監修),問題解決⼒を鍛える︕アルゴリ ズムとデータ構造,講談社,2020. • T.H.Cormen,

    C.E.Leiserson, R.L.Rivest, C.Stein, Introduction to Algorithms (3rd edition), MIT Press, 2009. (浅野哲夫,岩野和⽣,梅尾博司,⼭下雅夫,和⽥幸⼀(訳),アル ゴリズムイントロダクション 第3版 総合版,近代科学社, 2013.) • R.Sedgewick, K.Wayne, Algorithms (4th edition), Addison- Wesley, 2011. (野下浩平,星守,佐藤創,⽥⼝東(訳),セジ ウィック︓アルゴリズムC 第1〜4部(第3版),近代科学社, 2018.) 21