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

Efficient algorithms for combinatorial optimization problems

Efficient algorithms for combinatorial optimization problems

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

Shunji Umetani

February 08, 2021
Tweet

More Decks by Shunji Umetani

Other Decks in Research

Transcript

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

    View Slide

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

    View Slide

  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のコンピュータを⽤いて
    巡回路を列挙したときの計算時間
    ⼤規模な巡回セールスマン問題を
    解く必要が⽣じることは少なくない
    組合せ最適化問題の全ての解を列挙することは⾮常に困難

    View Slide

  4. 効率的に解ける組合せ最適化問題
    • 巡回セールスマン問題や整数計画問題など,多くの組合せ最適化
    問題はNP困難で効率的なアルゴリズムは期待できない.
    • 特徴的な構造を持つ⼀部の組合せ最適化問題には効率的なアルゴ
    リズムが存在する.
    4
    離散最適化問題
    (組合せ最適化問題)
    整数計画問題
    資源配分問題,最⼩全域⽊問題など 貪欲法
    ナップサック問題*,資源配分問題,
    最⼩費⽤弾性マッチング問題など
    動的計画法
    最⼤流問題,最⼩費⽤流問題,
    最⼤マッチング問題,割当問題など
    増加路法,負閉路消去法,最短路繰り返し法,
    (ハンガリー法)
    最短路問題
    ダイクストラ法,ベルマン・フォード法,
    フロイド・ウォーシャル法
    分枝限定法,切除平⾯法,(分枝カット法)
    ビンパッキング問題,最⼤カット問題,
    巡回セールスマン問題,頂点被覆問題,
    ナップサック問題など
    性能保証付き近似解法
    さまざまなNP困難問題
    発⾒的解法,局所探索法,メタヒューリスティクス,
    (分枝カット法)
    効率的なアルゴリズム
    が存在する
    *⼊⼒データの各要素(荷物の重さ および袋の容量 )が定数⻑の⽂字列で表現できるという仮定が必要.

    View Slide

  5. 資源配分問題の貪欲法
    • 貪欲法︓局所的な評価値が最も⾼い要素を選ぶ⼿続きを繰り返し
    て実⾏可能解を段階的に構築する⼿法.
    • 個の事業と利⽤可能な総資源量 が与えられる.
    事業 に資源を 単位配分すると利益 が⽣じる.
    総利益を最⼤化するように資源を各事業に配分するには︖
    • が凹関数ならば増分 は変数
    について⾮増加*.
    • 増分 が最⼤となる変数 を1単位増やす⼿続きを繰り返す.
    5
    費⽤を表す凹関数
    *例えば,同じ広告を繰返し配信すると広告1回当たりの効果は徐々に減少する(限界効⽤逓減の法則).

    View Slide

  6. 最⼩全域⽊問題の貪欲法
    • グラフ ,各辺 ,の⻑さ が与えられる.
    • グラフ の全ての頂点をつなぐ最短の辺の部分集合 は︖
    • クラスカル法,プリム法など効率的なアルゴリズムが存在する.
    6
    最⼩全域⽊
    閉路を持つ辺集合
    閉路を持つと距離の
    和は最⼩にならない
    全点を繋いでいない辺集合

    View Slide

  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

    View Slide

  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

    View Slide

  9. 動的計画法
    • 「元の問題の最適解がある部分問題の最適解を含む」という部分
    構造最適性を持つ問題を対象とする.
    • ⾃明な解を持つ部分問題から始めて,順次⼤きな部分問題を解く.
    • 重複する部分問題を繰り返し解かないように履歴を記録する.
    9
    分割統治法
    問題を独⽴した部分問題に分割
    動的計画法
    部分問題の解を繰り返し活⽤*
    原問題 原問題
    分割統治法はトップダウン 動的計画法はボトムアップ
    *競技プログラミングではしばしばメモ化と呼ばれる.

    View Slide

  10. ナップサック問題の動的計画法
    • 個の荷物と重さ容量 の袋が与えられる.
    荷物 の重さを 価値 とする.
    価値の合計を最⼤化するような荷物の詰め合わせは︖
    • 袋の容量を に,荷物の候補を に制限した部分
    問題の最適値を とする.
    • は以下の漸化式で求められる.
    10
    ナップサックの容量


    View Slide

  11. ナップサック問題の動的計画法
    • 袋の重さ容量
    • 荷物の重さ
    • 荷物の価値
    11
    *問題例の⼊⼒サイズは で,これをkとすると時間計算量は となるため,ナップサック問題
    に対する動的計画法は多項式時間アルゴリズムではない(擬多項式時間アルゴリズムと呼ばれる)
    最適な袋詰め
    最適な袋詰めが
    時間で得られる*

    View Slide

  12. 資源配分問題の動的計画法
    • が凹関数とは限らない資源配分問題について,資源の総量
    を に,事業の候補を に制限した部分問題の
    最適値を とする.
    • は以下の漸化式で求められる.
    12


    資源
    のみを変数に持つ関数(分離型)
    部分問題は 個なので
    時間*
    *問題例の⼊⼒サイズは で,これをkとすると時間計算量は となるため,資源配分問題
    に対する動的計画法は擬多項式時間アルゴリズムである.

    View Slide

  13. 最⼩費⽤弾性マッチング問題の動的計画法
    • ⽂字列 と を順番が逆転しない
    範囲で少なくとも1つの要素に対応付ける.
    • 要素 と の対応付け費⽤を が与えられたとき,対応付け費⽤
    の合計を最⼩化する.
    • の 番⽬までの要素からなる部分列 と の 番
    ⽬までの要素からなる部分列 に制限した部分問
    題を考えると,その最適値 は以下の通り.
    13
    弾性マッチング 弾性ではないマッチング
    順番の逆転はNG
    対応付けがない要素もNG

    View Slide

  14. 最⼩費⽤弾性マッチング問題の動的計画法
    • 図の左下端から右上端までの最短路を求める問題とみなせる.
    • 漸化式は要素の対 にいたる路が直前に左下の ,
    左の ,下の のいずれか1つの頂点を通ることを
    表す.
    14
    時間

    View Slide

  15. 最短路問題のラベリング法
    • グラフ ,各辺 の⻑さ が与えられる.
    • 始点 から各頂点 への最短路は︖(単⼀始点最短路問題)
    • 部分構造最適性︓始点 から頂点 への路 の部分路 は,始点
    から頂点 への最短路.
    • 始点 から各頂点 への最短路の⻑さの上界を表すラベル値
    を更新する⼿続きを繰り返す.
    • ダイクストラ法︓各反復でこれまでに選ばれていない頂点の中で最
    ⼩のラベル値 を持つ頂点を選ぶ⼿続きを繰り返す.
    • ベルマン・フォード法︓全ての頂点を適当な順番で1回ずつ選びラベ
    ル値 を更新する⼿続きを繰り返す.
    15
    部分構造最適性

    View Slide

  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

    View Slide

  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 各反復でヒープから最
    ⼩の暫定距離を⾒つけ
    るのに 時間
    各頂点の暫定距離 を
    ヒープに格納する
    時間*
    *各頂点では暫定距離が複数回更新されるが,全頂点では暫定距離の更新は合計で 回しか⽣じない.
    *フィボナッチヒープを⽤いれば 時間に減らせる.
    各頂点の暫定距離の更
    新時にヒープを更新す
    るのに 時間*

    View Slide

  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}
    に含まれる

    View Slide

  19. フロイド・ウォーシャル法
    19
    1
    2
    3
    4
    5
    3
    2
    -4
    6
    7
    1
    -5
    8
    4

    View Slide

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

    View Slide

  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

    View Slide