Polynomiality for Bin Packing with a Constant Number of Item Types - - PowerPoint PPT Presentation
Polynomiality for Bin Packing with a Constant Number of Item Types - - PowerPoint PPT Presentation
Polynomiality for Bin Packing with a Constant Number of Item Types Michel X. Goemans & Thomas Rothvo MIP 2013, Madison Bin Packing / Cutting Stock Input: item 1 . . . item d Bin Packing / Cutting Stock Input: Item sizes s 1 , . . .
Bin Packing / Cutting Stock
Input: item 1 . . . item d
Bin Packing / Cutting Stock
Input:
◮ Item sizes s1, . . . , sd ∈ [0, 1]
Input: item 1 . . . item d s1
Bin Packing / Cutting Stock
Input:
◮ Item sizes s1, . . . , sd ∈ [0, 1] ◮ Multiplicities a1, . . . , ad ∈ N
Input: item 1 . . . item d a1 many s1
Bin Packing / Cutting Stock
Input:
◮ Item sizes s1, . . . , sd ∈ [0, 1] ◮ Multiplicities a1, . . . , ad ∈ N
Goal: Pack items into minimum number of bins of size 1. Input: Solution: item 1 . . . item d a1 many s1 1 bin 1 . . .
Bin Packing / Cutting Stock
Input:
◮ Item sizes s1, . . . , sd ∈ [0, 1] ◮ Multiplicities a1, . . . , ad ∈ N
Goal: Pack items into minimum number of bins of size 1. Input: Solution: item 1 . . . item d a1 many s1 1 bin 1 . . .
Bin Packing / Cutting Stock
Input:
◮ Item sizes s1, . . . , sd ∈ [0, 1] ◮ Multiplicities a1, . . . , ad ∈ N
Goal: Pack items into minimum number of bins of size 1. Input: Solution: item 1 . . . item d a1 many s1 1 bin 1 . . .
Bin Packing / Cutting Stock
Input:
◮ Item sizes s1, . . . , sd ∈ [0, 1] ◮ Multiplicities a1, . . . , ad ∈ N
Goal: Pack items into minimum number of bins of size 1. Input: Solution: item 1 . . . item d a1 many s1 1 bin 1 . . .
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ Asymptotic FPTAS
OPT + O(log2 d) [Karmarkar & Karp ’82] OPT + O(log d · log log d) [R. ’13] (running time poly(d
i=1 ai))
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ Asymptotic FPTAS
OPT + O(log2 d) [Karmarkar & Karp ’82] OPT + O(log d · log log d) [R. ’13] (running time poly(d
i=1 ai)) ◮ ∈ NP [Eisenbrand & Shmonin ’06]
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ Asymptotic FPTAS
OPT + O(log2 d) [Karmarkar & Karp ’82] OPT + O(log d · log log d) [R. ’13] (running time poly(d
i=1 ai)) ◮ ∈ NP [Eisenbrand & Shmonin ’06]
For constant d:
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ Asymptotic FPTAS
OPT + O(log2 d) [Karmarkar & Karp ’82] OPT + O(log d · log log d) [R. ’13] (running time poly(d
i=1 ai)) ◮ ∈ NP [Eisenbrand & Shmonin ’06]
For constant d:
◮ Polytime for d = 2 [McCormick, Smallwood, Spieksma ’97]
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ Asymptotic FPTAS
OPT + O(log2 d) [Karmarkar & Karp ’82] OPT + O(log d · log log d) [R. ’13] (running time poly(d
i=1 ai)) ◮ ∈ NP [Eisenbrand & Shmonin ’06]
For constant d:
◮ Polytime for d = 2 [McCormick, Smallwood, Spieksma ’97] ◮ OPT + 1 in time 22O(d) · poly [Jansen & Solis-Oba ’10]
Polynomial time algorithms
For general d:
◮ NP-hard to distinguish OPT ≤ 2 or OPT ≥ 3
[Garey & Johnson ’79]
◮ Asymptotic FPTAS
OPT + O(log2 d) [Karmarkar & Karp ’82] OPT + O(log d · log log d) [R. ’13] (running time poly(d
i=1 ai)) ◮ ∈ NP [Eisenbrand & Shmonin ’06]
For constant d:
◮ Polytime for d = 2 [McCormick, Smallwood, Spieksma ’97] ◮ OPT + 1 in time 22O(d) · poly [Jansen & Solis-Oba ’10]
Open problem [ES’06, MSS’97, F’07]
Solvable in poly-time for d = 3?
A geometric view
◮ Define P = {x ∈ Rd ≥0 | sTx ≤ 1}
P
b b b b b b b b b b b b b b b b b b b b b b b b b
Rd sTx ≤ 1 a
A geometric view
◮ Define P = {x ∈ Rd ≥0 | sTx ≤ 1}
P
b b b b b b b b b b b b b b b b b b b b b b b b b
Rd sTx ≤ 1 2 1 a
A geometric view
◮ Define P = {x ∈ Rd ≥0 | sTx ≤ 1}
P
b b b b b b b b b b b b b b b b b b b b b b b b b
Rd sTx ≤ 1 2 1 a
A geometric view
◮ Define P = {x ∈ Rd ≥0 | sTx ≤ 1}
P
b b b b b b b b b b b b b b b b b b b b b b b b b
Rd sTx ≤ 1 2 1 a
A geometric view
◮ Define P = {x ∈ Rd ≥0 | sTx ≤ 1}
P
b b b b b b b b b b b b b b b b b b b b b b b b b
Rd sTx ≤ 1 2 1 a Problems:
◮ Points in P exponentially many
A geometric view
◮ Define P = {x ∈ Rd ≥0 | sTx ≤ 1}
P
b b b b b b b b b b b b b b b b b b b b b b b b b
Rd sTx ≤ 1 2 1 a Problems:
◮ Points in P exponentially many ◮ Weights can be exponential
Main results
Theorem (Goemans, R. ’13)
Bin Packing with d = O(1) item sizes can be solved in poly-time. Solves question by
◮ [McCormick, Smallwood, Spieksma ’97]:
“might be NP-hard for d = 3”
◮ [Eisenbrand & Shmonin ’06] ◮ [Filippi ’07]: “hard open problem for general d”
Main results (2)
◮ Def.: int.cone(X) := { x∈X λx · x | λx ∈ Z≥0}
Main results (2)
◮ Def.: int.cone(X) := { x∈X λx · x | λx ∈ Z≥0}
Theorem (Goemans, R. ’13)
For fixed-dim. polytopes P, Q ⊆ Rd, testing int.cone(P ∩ Zd) ∩ Q = ∅ is doable in poly-time (actually inputlength2O(d)). P
b b b b b
Q
b b b b b b
Main results (2)
◮ Def.: int.cone(X) := { x∈X λx · x | λx ∈ Z≥0}
Theorem (Goemans, R. ’13)
For fixed-dim. polytopes P, Q ⊆ Rd, testing int.cone(P ∩ Zd) ∩ Q = ∅ is doable in poly-time (actually inputlength2O(d)). P
b b b b b
Q
b b b b b b
2 1
Main results (2)
◮ Def.: int.cone(X) := { x∈X λx · x | λx ∈ Z≥0}
Theorem (Goemans, R. ’13)
For fixed-dim. polytopes P, Q ⊆ Rd, testing int.cone(P ∩ Zd) ∩ Q = ∅ is doable in poly-time (actually inputlength2O(d)). P
b b b b b
Q
b b b b b b
2 1
Main results (2)
◮ Def.: int.cone(X) := { x∈X λx · x | λx ∈ Z≥0}
Theorem (Goemans, R. ’13)
For fixed-dim. polytopes P, Q ⊆ Rd, testing int.cone(P ∩ Zd) ∩ Q = ∅ is doable in poly-time (actually inputlength2O(d)). P
b b b b b
Q
b b b b b b
2 1
Main results (2)
◮ Def.: int.cone(X) := { x∈X λx · x | λx ∈ Z≥0}
Theorem (Goemans, R. ’13)
For fixed-dim. polytopes P, Q ⊆ Rd, testing int.cone(P ∩ Zd) ∩ Q = ∅ is doable in poly-time (actually inputlength2O(d)). P
b b b b b
Q
b b b b b b
2 1
◮ For Bin Packing:
P := { x
1
- | sTx ≤ 1, x ≥ 0} and Q := {
- a
OPT
- }
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points. P
b b b b b b b b b b b b b b
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points.
◮ Suppose |supp(λ)| > 2d
P
b b b b b b b b b b b b b b
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points.
◮ Suppose |supp(λ)| > 2d ◮ Take points x, y ∈ supp(λ) of
same parity P
b b b b b b b b b b b b b b
x y
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points.
◮ Suppose |supp(λ)| > 2d ◮ Take points x, y ∈ supp(λ) of
same parity
◮ Midpoint z = 1 2(x + y) ∈ P ∩ Zd
P
b b b b b b b b b b b b b b
x y z
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points.
◮ Suppose |supp(λ)| > 2d ◮ Take points x, y ∈ supp(λ) of
same parity
◮ Midpoint z = 1 2(x + y) ∈ P ∩ Zd ◮ Move weight from x, y to z
P
b b b b b b b b b b b b b b
x y z −1 +2 −1
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points.
◮ Suppose |supp(λ)| > 2d ◮ Take points x, y ∈ supp(λ) of
same parity
◮ Midpoint z = 1 2(x + y) ∈ P ∩ Zd ◮ Move weight from x, y to z ◮ Potential function x λxf(x)
decreases (f strictly convex) P
b b b b b b b b b b b b b b
x y z −1 +2 −1
- Int. conic combinations
Theorem (Eisenbrand & Shmonin ’06)
If P ⊆ Rd convex, then any integer conic combination a =
- x∈P∩Zd
λx · x needs at most 2d points.
◮ Suppose |supp(λ)| > 2d ◮ Take points x, y ∈ supp(λ) of
same parity
◮ Midpoint z = 1 2(x + y) ∈ P ∩ Zd ◮ Move weight from x, y to z ◮ Potential function x λxf(x)
decreases (f strictly convex) P
b b b b b b b b b b b b b b
x y z −1 +2 −1
◮ Problem: Still don’t know which points to take!
Redistributing weight
P
Redistributing weight
P x
Redistributing weight
◮ Consider parallelepiped Π ∋ x
with integral vertices P
Π
x
Redistributing weight
◮ Consider parallelepiped Π ∋ x
with integral vertices
◮ Let y vertex of Π, in quadrant of x
P
Π
x y
Redistributing weight
◮ Consider parallelepiped Π ∋ x
with integral vertices
◮ Let y vertex of Π, in quadrant of x ◮ Let z ∈ Π ∩ Zd be mirrored point
P
Π
x y z
Redistributing weight
◮ Consider parallelepiped Π ∋ x
with integral vertices
◮ Let y vertex of Π, in quadrant of x ◮ Let z ∈ Π ∩ Zd be mirrored point ◮ If λx ≥ 2 ⇒ redistribute weight
P
Π
x y z +1 −2 +1
Redistributing weight
◮ Consider parallelepiped Π ∋ x
with integral vertices
◮ Let y vertex of Π, in quadrant of x ◮ Let z ∈ Π ∩ Zd be mirrored point ◮ If λx ≥ 2 ⇒ redistribute weight ◮ At most 2d points left inside Π
P
Π
1 1 1
Redistributing weight
Lemma
For x in parallelepiped Π and λx ∈ N, one can write λxx = int.cone(vertices of Π) +
- f 2d points in Π ∩ Zd
◮ Consider parallelepiped Π ∋ x
with integral vertices
◮ Let y vertex of Π, in quadrant of x ◮ Let z ∈ Π ∩ Zd be mirrored point ◮ If λx ≥ 2 ⇒ redistribute weight ◮ At most 2d points left inside Π
P
Π
1 1 1
Covering a polytope with parallelepipeds
Lemma
For fixed-dim P ⊆ Rd, we can cover P ∩ Zd with poly-many parallelepipeds (with int. vertices and ⊆ P). P
b b b b b b b b b b b b b b b b b b b b b b b b b
Covering a polytope with parallelepipeds
Lemma
For fixed-dim P ⊆ Rd, we can cover P ∩ Zd with poly-many parallelepipeds (with int. vertices and ⊆ P). P
b b b b b b b b b b b b b b b b b b b b b b b b b
Covering a polytope w. parallelep. (2)
P
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1} bi − Aix = 0 bi − Aix = (1 + 1
d)Z
P
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1} P cell C
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1}
◮ Consider int.hull CI
(poly many vertices)
b b b b b b b
CI P cell C
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1}
◮ Consider int.hull CI
(poly many vertices)
◮ Extend any d + 1 vertices
- f CI to parallelepiped
b b b b b b b
CI x0 x1 x2 P cell C
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1}
◮ Consider int.hull CI
(poly many vertices)
◮ Extend any d + 1 vertices
- f CI to parallelepiped
b b b b b b b
CI x0 x1 x2 P cell C parallelepiped
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1}
◮ Consider int.hull CI
(poly many vertices)
◮ Extend any d + 1 vertices
- f CI to parallelepiped
b b b b b b b
CI x0 x1 x2 P cell C parallelepiped
◮ Each cell covered with dO(d2)mO(d2)(log ∆)O(d2)
parallelepipeds
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1}
◮ Consider int.hull CI
(poly many vertices)
◮ Extend any d + 1 vertices
- f CI to parallelepiped
b b b b b b b
CI P
◮ Each cell covered with dO(d2)mO(d2)(log ∆)O(d2)
parallelepipeds
◮ Improvement: Approximate CI by polytope with d2
vertices using John’s ellipsoid
Covering a polytope w. parallelep. (2)
◮ Split P = {x | Ax ≤ b}
into poly many cells C = {x | αj(i) ≤ Aix ≤ αj(i)+1}
◮ Consider int.hull CI
(poly many vertices)
◮ Extend any d + 1 vertices
- f CI to parallelepiped
b b b b b b b
CI P
◮ Each cell covered with dO(d2)mO(d2)(log ∆)O(d2)
parallelepipeds
◮ Improvement: Approximate CI by polytope with d2
vertices using John’s ellipsoid
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P P
b b b b b b b b b b b b b b b b b b b b b b b b b
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P P
b b b b b b b b b b b b b b b b b b b b b b b b b
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P (2) Guess the 2d parallelepipeds containing solution P
b b b b b b b b b b b b b b b b b b b b b b b b b
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P (2) Guess the 2d parallelepipeds containing solution P
b b b b b b b b b b b b b b b b b b b b b b b b b
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P (2) Guess the 2d parallelepipeds containing solution → X := vertices P
b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P (2) Guess the 2d parallelepipeds containing solution → X := vertices (3) Solve ILP with 2O(d) variables
- x∈X
λx · x +
- some x∈P∩Zd
1 · x ∈ Q P
b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b
The algorithm
◮ Input: polytopes P, Q in ineq. description ◮ Output: Coefficients for int.cone(P ∩ Zd) ∩ Q = ∅
Algorithm: (1) Compute poly many parallelepipeds covering P (2) Guess the 2d parallelepipeds containing solution → X := vertices (3) Solve ILP with 2O(d) variables
- x∈X
λx · x +
- some x∈P∩Zd
1 · x ∈ Q variables P
b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b
A Structure Theorem
Structure Theorem
For polytope P P
b b b b b b b b b b b b b b b b b b b b b b b b b
A Structure Theorem
Structure Theorem
For polytope P P
b b b b b b b b b b b b b b b b b b b b b b b b b
A Structure Theorem
Structure Theorem
For polytope P, ∃ poly-time comp. set X ⊆ P ∩ Zd P
b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b
A Structure Theorem
Structure Theorem
For polytope P, ∃ poly-time comp. set X ⊆ P ∩ Zd P
b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b
A Structure Theorem
Structure Theorem
For polytope P, ∃ poly-time comp. set X ⊆ P ∩ Zd s.t. for all a ∈ int.cone(P ∩ Zd) one can express a = int.cone(22d points in X) +
- f 22d points in P ∩ Zd
P
b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b
a
More applications (1)
Theorem
Cutting stock with d = O(1) item types and m = O(1) of bin types can be solved in polytime. item 1 . . . item d a1 many s1 w1 bin type 1 bin type m . . . cost c1 Items: Bins:
More applications (1)
Theorem
Cutting stock with d = O(1) item types and m = O(1) of bin types can be solved in polytime. item 1 . . . item d a1 many s1 w1 bin type 1 bin type m . . . cost c1 Items: Bins:
◮ P = P1 × . . . × Pm with Pj := {
x
cj
- | sTx ≤ wj}
More applications (2)
High Multiplicity Scheduling:
◮ Input: d job types, each with release time, deadline,
processing time, multiplicity
◮ Goal: Schedule jobs to minimize number of used machines
More applications (2)
High Multiplicity Scheduling:
◮ Input: d job types, each with release time, deadline,
processing time, multiplicity
◮ Goal: Schedule jobs to minimize number of used machines