Discrepancy Theory and Applications to Bin Packing
Thomas Rothvoss
Joint work with Becca Hoberg
Discrepancy Theory and Applications to Bin Packing Thomas Rothvoss - - PowerPoint PPT Presentation
Discrepancy Theory and Applications to Bin Packing Thomas Rothvoss Joint work with Becca Hoberg Discrepancy theory Set system S = { S 1 , . . . , S m } , S i [ n ] i S b b b Discrepancy theory 1 Set system S = { S 1 , . . .
Joint work with Becca Hoberg
◮ Set system S = {S1, . . . , Sm}, Si ⊆ [n]
i S
◮ Set system S = {S1, . . . , Sm}, Si ⊆ [n] ◮ Coloring χ : [n] → {−1, +1}
i S
b b
−1
b
+1 −1
◮ Set system S = {S1, . . . , Sm}, Si ⊆ [n] ◮ Coloring χ : [n] → {−1, +1} ◮ Discrepancy
disc(S) = min
χ:[n]→{±1} max S∈S
χ(i)
i S
b b
−1
b
+1 −1
◮ Set system S = {S1, . . . , Sm}, Si ⊆ [n] ◮ Coloring χ : [n] → {−1, +1} ◮ Discrepancy
disc(S) = min
χ:[n]→{±1} max S∈S
χ(i)
i S
b b
−1
b
+1 −1 Known results:
◮ n sets, n elements: disc(S) = O(√n) [Spencer ’85]
◮ Set system S = {S1, . . . , Sm}, Si ⊆ [n] ◮ Coloring χ : [n] → {−1, +1} ◮ Discrepancy
disc(S) = min
χ:[n]→{±1} max S∈S
χ(i)
i S
b b
−1
b
+1 −1 Known results:
◮ n sets, n elements: disc(S) = O(√n) [Spencer ’85] ◮ Every element in ≤ t sets: disc(S) < 2t [Beck & Fiala ’81]
◮ Set system S = {S1, . . . , Sm}, Si ⊆ [n] ◮ Coloring χ : [n] → {−1, +1} ◮ Discrepancy
disc(S) = min
χ:[n]→{±1} max S∈S
χ(i)
i S
b b
−1
b
+1 −1 Known results:
◮ n sets, n elements: disc(S) = O(√n) [Spencer ’85] ◮ Every element in ≤ t sets: disc(S) < 2t [Beck & Fiala ’81]
Main method: Iteratively find a partial coloring.
For a convex symmetric set K ⊆ Rn with Pr[gaussian ∈ K] ≥ e−Θ(n), one can find a y ∈ K ∩ [−1, 1]n with |{i : yi = ±1}| ≥ Θ(n) in poly-time. K y∗ [−1, 1]n
For a convex symmetric set K ⊆ Rn with Pr[gaussian ∈ K] ≥ e−Θ(n), one can find a y ∈ K ∩ [−1, 1]n with |{i : yi = ±1}| ≥ Θ(n) in poly-time. Algorithm: (1) take a random Gaussian x∗ K x∗ [−1, 1]n
For a convex symmetric set K ⊆ Rn with Pr[gaussian ∈ K] ≥ e−Θ(n), one can find a y ∈ K ∩ [−1, 1]n with |{i : yi = ±1}| ≥ Θ(n) in poly-time. Algorithm: (1) take a random Gaussian x∗ (2) compute y∗ = argmin{x∗ − y2 | y ∈ K ∩ [−1, 1]n} K x∗ y∗ [−1, 1]n
K [−1, 1]n
◮ W.h.p. x∗ − y∗2 ≥ 1 5
√n K x∗ y∗ [−1, 1]n
◮ W.h.p. x∗ − y∗2 ≥ 1 5
√n
◮ Fact: For any set Q: Pr[gaussian ∈ Q] ≥ e−o(n) ⇒
E[dist(gaussian, Q)] ≤ o(√n). K x∗ y∗ [−1, 1]n
◮ W.h.p. x∗ − y∗2 ≥ 1 5
√n
◮ Fact: For any set Q: Pr[gaussian ∈ Q] ≥ e−o(n) ⇒
E[dist(gaussian, Q)] ≤ o(√n).
◮ Key observation:
y∗ − x∗2 = min{y − x∗2 | y ∈ K and |yi| ≤ 1 ∀ i} K x∗ y∗ [−1, 1]n
◮ W.h.p. x∗ − y∗2 ≥ 1 5
√n
◮ Fact: For any set Q: Pr[gaussian ∈ Q] ≥ e−o(n) ⇒
E[dist(gaussian, Q)] ≤ o(√n).
◮ Key observation:
y∗ −x∗2 = min{y −x∗2 | y ∈ K and |yi| ≤ 1 ∀ tight i} K ∩ STRIP K x∗ y∗ [−1, 1]n
◮ W.h.p. x∗ − y∗2 ≥ 1 5
√n
◮ Fact: For any set Q: Pr[gaussian ∈ Q] ≥ e−o(n) ⇒
E[dist(gaussian, Q)] ≤ o(√n).
◮ Key observation:
y∗ −x∗2 = min{y −x∗2 | y ∈ K and |yi| ≤ 1 ∀ tight i}
◮ Strip of o(n) coord.: Pr[gaussian ∈ K ∩ STRIP] ≥ e−Ω(n).
K ∩ STRIP K x∗ y∗ [−1, 1]n
◮ W.h.p. x∗ − y∗2 ≥ 1 5
√n
◮ Fact: For any set Q: Pr[gaussian ∈ Q] ≥ e−o(n) ⇒
E[dist(gaussian, Q)] ≤ o(√n).
◮ Key observation:
y∗ −x∗2 = min{y −x∗2 | y ∈ K and |yi| ≤ 1 ∀ tight i}
◮ Strip of o(n) coord.: Pr[gaussian ∈ K ∩ STRIP] ≥ e−Ω(n). ◮ Then E[dist(gaussian, K ∩ STRIP)] ≤ o(√n).
Contradiction! K ∩ STRIP K x∗ y∗ [−1, 1]n
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ First Fit Decreasing [Johnson ’73]: APX ≤ 11 9 OPT + 4
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ First Fit Decreasing [Johnson ’73]: APX ≤ 11 9 OPT + 4 ◮ [de la Vega & L¨
ucker ’81] : APX ≤ (1 + ε)OPT + O(1/ε2) in time O(n) · f(ε)
Input: Items with sizes s1, . . . , sn ∈ [0, 1] Goal: Pack items into minimum number of bins of size 1. bin 1 bin 2 input si 1 1
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ First Fit Decreasing [Johnson ’73]: APX ≤ 11 9 OPT + 4 ◮ [de la Vega & L¨
ucker ’81] : APX ≤ (1 + ε)OPT + O(1/ε2) in time O(n) · f(ε)
◮ [Karmarkar & Karp ’82]: APX ≤ OPT + O(log2 OPT) in
poly-time
◮ bi = #items with size si ◮ Feasible patterns:
P =
≥0 | n
sipi ≤ 1
◮ bi = #items with size si ◮ Feasible patterns:
P =
≥0 | n
sipi ≤ 1
min
xp
pi · xp ≥ bi ∀i ∈ [n] xp ≥ ∀p ∈ P
◮ bi = #items with size si ◮ Feasible patterns:
P =
≥0 | n
sipi ≤ 1
min 1Tx
Ax ≥ b xp ≥ ∀p ∈ P
◮ bi = #items with size si ◮ Feasible patterns:
P =
≥0 | n
sipi ≤ 1
min 1Tx
Ax ≥ b xp ≥ ∀p ∈ P
◮ Can find x with 1Tx ≤ OPTf + δ in time poly(b1, 1 δ)
input si 1 0.44 0.4 0.3 0.26
input si 1 0.44 0.4 0.3 0.26 min 1Tx 2 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 3 1 1 1 1 1 x ≥ 1 1 1 1 x ≥
input si 1 0.44 0.4 0.3 0.26 min 1Tx 2 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 3 1 1 1 1 1 x ≥ 1 1 1 1 x ≥
input si 1 0.44 0.4 0.3 0.26 min 1Tx 2 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 3 1 1 1 1 1 x ≥ 1 1 1 1 x ≥ 1/2× 1/2× 1/2×
input:
input: si ∈ [2, 3]
input: si ∈ [2, 3] new input: 3× 4× 4×
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n)
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n)
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n)
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n)
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n) ◮ row sum · si ≥ 2
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n) ◮ row sum · si ≥ 2
← → column sum (w.r.t si) ≤ 1
input: si ∈ [2, 3] new input: 3× 4× 4×
◮ increases OPT by O(log n) ◮ row sum · si ≥ 2
← → column sum (w.r.t si) ≤ 1
◮ # constraints ≤ 1 2support(x)
b
x
◮ After grouping: # constraints ≤ 1 2|supp(x)|
b
x
◮ After grouping: # constraints ≤ 1 2|supp(x)|
Ax = b
b
x
◮ After grouping: # constraints ≤ 1 2|supp(x)| ◮ Move to basic solution x′ with Ax′ = Ax
Ax = b
b
x
b x′
◮ After grouping: # constraints ≤ 1 2|supp(x)| ◮ Move to basic solution x′ with Ax′ = Ax ◮ |supp(x′ − ⌊x′⌋)| ≤ 1 2|supp(x)|
Ax = b
b
x
b x′
◮ After grouping: # constraints ≤ 1 2|supp(x)| ◮ Move to basic solution x′ with Ax′ = Ax ◮ |supp(x′ − ⌊x′⌋)| ≤ 1 2|supp(x)| ◮ Repeat O(log n) times → O(log2n)
Ax = b
b
x
b x′
Ax = Ax0
b
x0
b x
Karmarkar & Karp
b
x0
b x
Hoberg & R.
One can find a packing with OP T + O(log n) bins in poly-time.
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k]
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k] ◮ OPTf increases whenever glue 2 items
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k] ◮ OPTf increases whenever glue 2 items ⇒ Ai1 ≥ k1/2
and A∞ ≤ k1/4.
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k] ◮ OPTf increases whenever glue 2 items ⇒ Ai1 ≥ k1/2
and A∞ ≤ k1/4. Goal: Replace x with y so that |frac(y)| ≤ n
2.
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k] ◮ OPTf increases whenever glue 2 items ⇒ Ai1 ≥ k1/2
and A∞ ≤ k1/4. Goal: Replace x with y so that |frac(y)| ≤ n
2.
Karmarkar-Karp: Loose O(k) items = O(1) bins
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k] ◮ OPTf increases whenever glue 2 items ⇒ Ai1 ≥ k1/2
and A∞ ≤ k1/4. Goal: Replace x with y so that |frac(y)| ≤ n
2.
Karmarkar-Karp: Loose O(k) items = O(1) bins We: Loose O(k15/16) items = O(k−1/16) bins
Assumptions:
◮ Fractional solution x ∈ [0, 1]n, matrix A is O(n) × n ◮ Item sizes in [ 1 k, 2 k] ◮ OPTf increases whenever glue 2 items ⇒ Ai1 ≥ k1/2
and A∞ ≤ k1/4. Goal: Replace x with y so that |frac(y)| ≤ n
2.
Karmarkar-Karp: Loose O(k) items = O(1) bins We: Loose O(k15/16) items = O(k−1/16) bins
For x ∈ [0, 1]n, vectors vi, parameters λi ≥ 0 with
m
exp(−λ2
i /16) ≤ n
16 can find partial coloring y ∈ [0, 1]n with at least half the entries in {0, 1} and | vi, x − y | ≤ λivi2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
I
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
I + 1 0 2 1 1 1 1 1 ) vI = (
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small ◮ For interval I ⊆ [n]: vI := i∈I Ai
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . . ← level I vI1 = ck17/16
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small ◮ For interval I ⊆ [n]: vI := i∈I Ai
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . . ← level . . . . . . 1 I vI1 = 2−1ck17/16
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small ◮ For interval I ⊆ [n]: vI := i∈I Ai
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . . ← level . . . . . . 1 . . . . . . 2 I vI1 = 2−2ck17/16
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small ◮ For interval I ⊆ [n]: vI := i∈I Ai
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 I vI1 = 2−3ck17/16
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small ◮ For interval I ⊆ [n]: vI := i∈I Ai
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 I vI1 = 2−3ck17/16
◮ Given: x. Find: y with |( j≤i Aj)(x − y)| small ◮ For interval I ⊆ [n]: vI := i∈I Ai , λI := level(I)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3
◮ Run Partial coloring with vI := i∈I Ai and λI := level(I)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3
◮ Run Partial coloring with vI := i∈I Ai and λI := level(I)
sum ≤ k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3
◮ Run Partial coloring with vI := i∈I Ai and λI := level(I)
e−λ2
I/16
sum ≤ k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3
◮ Run Partial coloring with vI := i∈I Ai and λI := level(I)
e−λ2
I/16 ≤
k · n ck17/162−ℓ · e−ℓ2/16
i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3
◮ Bound error for item i:
|(
Aj)(x − y)| ≤
i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 . . .
◮ Bound error for item i:
|(
Aj)(x − y)| ≤
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 . . .
◮ Bound error for item i:
|(
Aj)(x − y)| ≤
ℓ · vI on level ℓ2
vI1 = Θ(k17/16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 I
◮ Bound error for item i:
|(
Aj)(x − y)| ≤
ℓ · vI on level ℓ2 ≤ O(1) · vI2
vI1 = Θ(k17/16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 I
◮ Bound error for item i:
|(
Aj)(x − y)| ≤
ℓ · vI on level ℓ2 ≤ O(1) · vI2
H¨
≤ vI1 ·
k1/2
vI1 = Θ(k17/16) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
n columns . . . . . . ← level . . . . . . 1 . . . . . . 2 . . . . . . 3 I
◮ Bound error for item i:
|(
Aj)(x − y)| ≤
ℓ · vI on level ℓ2 ≤ O(1) · vI2
H¨
≤ vI1 ·
k1/2 ≤ O(k15/16)
Open problems:
Open problems:
1 ≤ additive integrality gap ≤ O(log OPT)
Open problems:
1 ≤ additive integrality gap ≤ O(log OPT)
Open problems:
1 ≤ additive integrality gap ≤ O(log OPT)