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

PTAS FOR SCHEDULING PROBLEM

Lemma299
August 29, 2019

PTAS FOR SCHEDULING PROBLEM

JOIss2019

使用素材
・紲星あかり ロゴマーク(https://commons.nicovideo.jp/material/nc177401

Lemma299

August 29, 2019
Tweet

Other Decks in Science

Transcript

  1. Scheduling Problem • P = {1, 2, 3, 4, 5,

    6} • N = #P = 6 • M = 2 4
  2. Scheduling Problem • P = {1, 2, 3, 4, 5,

    6} • N = #P = 6 • M = 2 • M[1] = {1, 6, 3} • M[2] = {2, 5, 4} 最小終了時刻 = 11 5
  3. Bin Packing Problem • P = {1, 2, 3, 4,

    5, 6} • N = #P = 6 • T = 7 16
  4. Bin Packing Problem • P = {1, 2, 3, 4,

    5, 6} • N = #P = 6 • T = 7 • B = {{1, 6}, {2, 5}, {3, 4}} 最小本数 = 3 17
  5. Reduction • bins(I, T) := 入力 I, ビンの容量 T のときの解

    • bins(I, T) ≤ M のとき終了時刻 T 以下の解が存在 • 最悪でも終了時刻 2LB 以下の解が存在する • 区間 [LB, 2LB] を二分探索することで最小終了時 刻を求めることができる 19
  6. (2) Algorithm • 入力を書き換える • サイズごとの個数 = {1 , 2

    , ⋯ , } を入力とする • サイズの昇順にしても一般性を失わないのでそうす る • P = {9, 9, 8, 2, 4, 4, 3, 5, 3} • I = {1, 2, 2, 1, 1, 2} • K = #I = 6 21
  7. (2) Algorithm • BINS(I, T) := 書き換えられた入力 I と容量 T

    の ビンに対するビンパッキングの最小本数 22
  8. (2) Algorithm • BINS(I, T) := 書き換えられた入力 I と容量 T

    の ビンに対するビンパッキングの最小本数 • ビン一本分取る方法全体の集合 • # = () 23
  9. PTAS Algorithm • サイズの種類数が定数個になるように丸める • サイズが [ 1 + ,

    1 + +1) のとき 1 + に丸める • K = [ log1+ ] = [ log1+ 1 ] • 高々 1 + しか丸められない • 未満の荷物は一旦無視 28
  10. PTAS Algorithm • サイズを丸めたものについて最適解を求める • BINS(I, T) を用いる • ビンの容量を

    T(1 + ) に増やしてから荷物の大 きさをもとに戻す • 一旦無視していた 未満の荷物を貪欲に詰め込 む,必要ならビンを増やす • このアルゴリズムを (, , ) と呼ぶ 30
  11. PTAS Algorithm • , , ≤ (, ) • 未満の荷物を貪欲に詰め込むとき,最後に

    増えたビン以外の全てのビンについて T より も多くの荷物が入っている,よって容量 T で はそれ以上の本数が必要 31
  12. PTAS Algorithm • , , ≤ , • ただし ,

    , ではビンの容量を T 1 + に 拡大しているので実際に求まる近似終了時刻 は T 1 + ≤ 1 + 32
  13. PTAS Algorithm • , , を二分探索することで近似解を求め ていたが,T は実数を取るので一点に定まる ことはない •

    よってどこかで打ち切る必要がある • 近似保証を維持したまま打ち切りたい 33
  14. PTAS Algorithm • , , がビンの容量を (1 + ) 倍していた

    ことを思い出すと • 近似最小終了時刻は T∗ 1 + ≤ 1 + 2 ≤ (1 + 3) • 計算量は (2[log1+ 1 ][log2 1 ]) 38
  15. PTAS Algorithm • , , がビンの容量を (1 + ) 倍していたこと

    を思い出すと • 近似最小終了時刻は T∗ 1 + ≤ 1 + 2 ≤ (1 + 3) • 計算量は (2[log(1+) 1 ][log2 1 ]) • 多項式時間! 39
  16. Experiment • ランダムケース • N = 100000 • M =

    1000 • = 0.02 • 割と早い • が,これ以上 M や を良くすると無限時間かかってしまった 40