An Improved FPTAS for 0-1 Knapsack Ce Jin Tsinghua University 0-1 - - PowerPoint PPT Presentation
An Improved FPTAS for 0-1 Knapsack Ce Jin Tsinghua University 0-1 - - PowerPoint PPT Presentation
An Improved FPTAS for 0-1 Knapsack Ce Jin Tsinghua University 0-1 Knapsack Problem Given: Knapsack capacity > 0 items Each item has weight 0 < and profit > 0 Find a subset of items
π items Each item π has weight 0 < π₯π β€ π and profit ππ > 0
Given:
- π₯ π½ β Οπβπ½ π₯π β€ π
- π π½ β Οπβπ½ ππ is maximized
Find a subset of items π½ β π such that:
0-1 Knapsack Problem
Knapsack capacity π > 0
π items Each item π has weight 0 < π₯π β€ π and profit ππ > 0
Given:
- π₯ π½ β Οπβπ½ π₯π β€ π
- π π½ β Οπβπ½ ππ is maximized
Find a subset of items π½ β π such that: A well-known NP-hard problem
0-1 Knapsack Problem
Knapsack capacity π > 0
FPTAS for 0-1 Knapsack
OPT = optimal total profit π(π½) For π > 0, find a subset π½ β π such that:
- π₯ π½ β€ π
- π π½ β₯
OPT 1+π
Solvable in poly π,
1 π time
Prior Work
- ΰ·¨
π(π3/π) (textbook algorithm)
- ΰ·¨
π(π + πβ4) [Ibarra and Kim, 1975]
- ΰ·¨
π(π + πβ3) [Kellerer and Pferschy, 2004]
- ΰ·¨
π(π + πβ2.5) [Rhee, 2015]
- ΰ·©
π·(π + π»βπ.π) [Chan, 2018]
FPTAS for 0-1 Knapsack:
Prior Work
- ΰ·¨
π(π3/π) (textbook algorithm)
- ΰ·¨
π(π + πβ4) [Ibarra and Kim, 1975]
- ΰ·¨
π(π + πβ3) [Kellerer and Pferschy, 2004]
- ΰ·¨
π(π + πβ2.5) [Rhee, 2015]
- ΰ·©
π·(π + π»βπ.π) [Chan, 2018]
- ΰ·©
π·(π + π»βπ.ππ) (this work) FPTAS for 0-1 Knapsack:
No π π + πβ1 2βπ time algorithm,
unless π§π£π¨, + convolution has truly subquadratic algo [Cygan, Mucha, WΔgrzycki, and WΕodarczyk, 2017]
Conditional Lower Bound:
A Special Case
FPTAS for Subset Sum (ππ = π₯π):
- ΰ·¨
π min π + π»βπ, ππβ1 [Kellerer, Mansini, Pferschy, and Speranza, 2003]
A Special Case
FPTAS for Subset Sum (ππ = π₯π):
- ΰ·¨
π min π + π»βπ, ππβ1 [Kellerer, Mansini, Pferschy, and Speranza, 2003]
Our 0-1 Knapsack algorithm utilizes this result
- Our ΰ·©
π·(π + π»βπ.ππ) algorithm builds on Chanβs ΰ·© π·(π + π»βπ.π) algorithm
- Two new ideas
- 1. Extending Chanβs number-theoretic
technique from two levels to multiple levels.
- Our ΰ·©
π·(π + π»βπ.ππ) algorithm builds on Chanβs ΰ·© π·(π + π»βπ.π) algorithm
- Two new ideas
- 1. Extending Chanβs number-theoretic
technique from two levels to multiple levels.
- 2. A greedy argument β less computation
spent on cheap items (small unit profit ππ/π₯π)
- Our ΰ·©
π·(π + π»βπ.ππ) algorithm builds on Chanβs ΰ·© π·(π + π»βπ.π) algorithm
- Two new ideas
- 1. Extending Chanβs number-theoretic
technique from two levels to multiple levels.
- 2. A greedy argument β less computation
spent on cheap items (small unit profit ππ/π₯π)
This talk
- Our ΰ·©
π·(π + π»βπ.ππ) algorithm builds on Chanβs ΰ·© π·(π + π»βπ.π) algorithm
- Two new ideas
- 1. Extending Chanβs number-theoretic
technique from two levels to multiple levels.
- 2. A greedy argument β less computation
spent on cheap items (small unit profit ππ/π₯π)
This talk
Using Chanβs Lemmas as blackboxes
ΰ·© π·(π + π»βπ.πππ) algo
Preliminaries (based
- n [Chan, 2018])
Preliminaries
- Assume π β€ poly πβ1 .
- Too cheap items (ππ <
π π max π
ππ) are discarded at the beginning (loss β€ π β OPT) So
max ππ min ππ β€ poly πβ1
π items, capacity = π weight 0 < π₯π β€ π and profit ππ > 0
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π
- βProfit functionβ (defined over real π¦ β₯ 0)
π
π½ π¦ = max π πΎ : πΎ β π½, π₯ πΎ β€ π¦
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π
- βProfit functionβ (defined over real π¦ β₯ 0)
π
π½ π¦ = max π πΎ : πΎ β π½, π₯ πΎ β€ π¦
- Task: compute a 1 + π -approximation of profit
function π
π½,
ΰ·© π
π½ π¦ β€ π π½ π¦ β€ 1 + π ΰ·©
π
π½ π¦ , βπ¦ β₯ 0
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π
- βProfit functionβ (defined over real π¦ β₯ 0)
π
π½ π¦ = max π πΎ : πΎ β π½, π₯ πΎ β€ π¦
- Task: compute a 1 + π -approximation of profit
function π
π½,
ΰ·© π
π½ π¦ β€ π π½ π¦ β€ 1 + π ΰ·©
π
π½ π¦ , βπ¦ β₯ 0
- For disjoint sets π½, πΎ of items,
π
π½βͺπΎ π¦ = π π½ β π πΎ
π¦ β max
0β€π§β€π¦ π π½ π§ + π πΎ π¦ β π§
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π
- βProfit functionβ (defined over real π¦ β₯ 0)
π
π½ π¦ = max π πΎ : πΎ β π½, π₯ πΎ β€ π¦
- Task: compute a 1 + π -approximation of profit
function π
π½,
ΰ·© π
π½ π¦ β€ π π½ π¦ β€ 1 + π ΰ·©
π
π½ π¦ , βπ¦ β₯ 0
- For disjoint sets π½, πΎ of items,
π
π½βͺπΎ π¦ = π π½ β π πΎ
π¦ β max
0β€π§β€π¦ π π½ π§ + π πΎ π¦ β π§
- ΰ·©
π
π½ β ΰ·©
π
πΎ is a 1 + π -approximation of π π½βͺπΎ
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1
- A nondecreasing step function π has a
(1 + π)-approx. with only ΰ·¨ π 1/π steps (by rounding down to powers of (1 + π))
Preliminaries
- A nondecreasing step function π has a
(1 + π)-approx. with only ΰ·¨ π 1/π steps (by rounding down to powers of (1 + π))
- βMerging Lemmaβ: Computing (a 1 + π -
- approx. of) π
1 β β― β π π takes ΰ·¨
π π/π2 time. (log π depth binary tree. πβ² β π/ log π)
π β π β max
0β€π§β€π¦ π π§ + π π¦ β π§
- Divide items into π log 1/π groups
(group π: ππ β [2π, 2π+1])
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π Merging π
1 β β― β π π: ΰ·¨
π π/π2 time.
- Divide items into π log 1/π groups
(group π: ππ β [2π, 2π+1])
- Compute all π
π and merge them in
ΰ·¨ π(1/π2) time
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π Merging π
1 β β― β π π: ΰ·¨
π π/π2 time.
- Divide items into π log 1/π groups
(group π: ππ β [2π, 2π+1])
- Compute all π
π and merge them in
ΰ·¨ π(1/π2) time
- Now assume ππ β [1,2]
Preliminaries
π β€ poly πβ1 items profit max ππ/min ππ β€ poly πβ1 weight 0 < π₯π β€ π Merging π
1 β β― β π π: ΰ·¨
π π/π2 time.
- Simple greedy (sort by unit profit
π1 π₯1 β₯ π2 π₯2 β₯ β―)
approximates with additive error π β€ max ππ = π(1)
profit ππ β 1,2 weight 0 < π₯π β€ π
Preliminaries
- Simple greedy (sort by unit profit
π1 π₯1 β₯ π2 π₯2 β₯ β―)
approximates with additive error π β€ max ππ = π(1)
- For π π₯ β₯ Ξ©(πβ1), this is 1 + π(π)
multiplicative approx.
profit ππ β 1,2 weight 0 < π₯π β€ π
Preliminaries
- Simple greedy (sort by unit profit
π1 π₯1 β₯ π2 π₯2 β₯ β―)
approximates with additive error π β€ max ππ = π(1)
- For π π₯ β₯ Ξ©(πβ1), this is 1 + π(π)
multiplicative approx.
- Only need to 1 + π(π) approximate
π§π£π¨ πͺ, ππ± for πͺ = π· π»βπ !
profit ππ β 1,2 weight 0 < π₯π β€ π
Preliminaries
- Round ππ down to 1,1 + π, 1 + 2π, β¦ , 2 β π
1 + π multiplicative error
- Only π = π(1/π) different ππβs!
Preliminaries
ππ β 1,2
- Round ππ down to 1,1 + π, 1 + 2π, β¦ , 2 β π
1 + π multiplicative error
- Only π = π(1/π) different ππβs!
- Collect all items with the same profit π.
Then π
π can be computed by simple
greedy (sort π₯1 β€ π₯2 β€ β―)
Preliminaries
ππ β 1,2
Recap
ππ β 1,2 Profit functions π
1, β¦ , π π obtained by simple
greedy (one for every ππ) (π = π(1/π) ) Task: 1 + π π approximate min πΆ, π
1 β β― β π π
(πΆ = π(πβ1)) Lemma: Merging π
1 β β― β π π in ΰ·¨
π π/π2 time.
(Immediately gives ΰ·¨
π(π + πβ3) algo)
π items with π = π(πβ1) distinct profit values ππ β 1,2 Task: 1 + π π approximate min πΆ, π
1 β β― β π π
(πΆ = π(πβ1))
ΰ·¨ π πβ1 πΆπ algo
(faster when πͺ small)
ΰ·¨ π(πβ4/3π + πβ2) algo
(faster when π small)
Chanβs results
A Greedy Lemma
- the items can be divided into two groups
πΌ, π with a large enough gap between their unit profits, max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
- and group πΌ is large enough,
ΟββπΌ π₯β > π
ππ β 1,2 capacity = π
If Then
- In an optimal solution, π-items contribute
total profit β€ 2/π½
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π
- Suppose the optimal solution is
π
πΌβͺπ π = π πΌ π β π π + π π π π
π β π
π
π
π
πΌ π
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π
- Remove all π-items, and insert more πΌ-items
(denoted by πΏ) to fill in the π
π space
π β π
π
π
π
πΌ π
π β π
π
π
π
π
πΏ
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
Οπβπ° ππ > πΏ
- Remove all π-items, and insert more πΌ-items
(denoted by πΏ) to fill in the π
π space
- Until π
π β π πΏ < maxββπΌ π₯β
πΌ π
π β π
π
π
π
π
πΏ
ππ β π, π capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β π§π£π¨ πβπ° ππ/ππ = 1 β π½ β π
ΟββπΌ π₯β > π
- Remove all π-items, and insert more πΌ-items
(denoted by πΏ) to fill in the π
π space
- Until π
π β π πΏ < maxββπΌ π₯β β€ π/π
πΌ π
π β π
π
π
π
π
πΏ
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β π§π£π¨ πβπ° ππ/ππ = 1 β π½ β π
ΟββπΌ π₯β > π π
π β π πΏ < 2/π
π β π
π
π
π
- ptimal sol:
π
πΌβͺπ π = π πΌ π β π π + π π π π
tot profit β₯ π
πΌ π β π π + ππ πΏ
π β π
π
π
π
π
πΏ
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β π§π£π¨ πβπ° ππ/ππ = 1 β π½ β π
ΟββπΌ π₯β > π π
π β π πΏ < 2/π
π β π
π
π
π
- ptimal sol:
π
πΌβͺπ π = π πΌ π β π π + π π π π
tot profit β₯ π
πΌ π β π π + ππ πΏ
ππΏπ³ β€ ππ΄ πΏπ΄
π β π
π
π
π
π
πΏ
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β π§π£π¨ πβπ° ππ/ππ = 1 β π½ β π
ΟββπΌ π₯β > π πΏπ΄ β πΏπ³ < π/π π β π
π
π
π
- ptimal sol:
π
πΌβͺπ π = π πΌ π β π π + π π π π
tot profit β₯ π
πΌ π β π π + ππ πΏ
ππΏπ³ β€ ππ΄ πΏπ΄
1 β π½ β π β π
π β₯ π π π π
π
π π π β₯ ππ πΏ
ππ
πΏ > ππ π β 2
β 1 β π½ β ππ
π > ππ π β 2
π½ππ
π < 2
π
π π π < 2/π½
π β π
π
π
π
π
πΏ
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β π§π£π¨ πβπ° ππ/ππ = 1 β π½ β π
ΟββπΌ π₯β > π πΏπ΄ β πΏπ³ < π/π π β π
π
π
π
- ptimal sol:
π
πΌβͺπ π = π πΌ π β π π + π π π π
tot profit β₯ π
πΌ π β π π + ππ πΏ
ππΏπ³ β€ ππ΄ πΏπ΄
1 β π½ β π β π
π β₯ π π π π
π
π π π β₯ ππ πΏ
ππ
πΏ > ππ π β 2
β 1 β π½ β ππ
π > ππ π β 2
β π½ππ
π < 2
π
π π π < 2/π½
π β π
π
π
π
π
πΏ
ππ β 1,2 capacity = π max
ββπ πβ/π₯β β€ 1 β π½ β π§π£π¨ πβπ° ππ/ππ = 1 β π½ β π
ΟββπΌ π₯β > π πΏπ΄ β πΏπ³ < π/π π β π
π
π
π
- ptimal sol:
π
πΌβͺπ π = π πΌ π β π π + π π π π
tot profit β₯ π
πΌ π β π π + ππ πΏ
ππΏπ³ β€ ππ΄ πΏπ΄
π β π· β π β πΏπ΄ β₯ ππ΄ πΏπ΄
π
π π π β₯ ππ πΏ
ππ
πΏ > ππ π β 2
β 1 β π½ β ππ
π > ππ π β 2
β π·ππΏπ΄ < π β
ππ΄ πΏπ΄ < π/π·
Recap
If: max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π Then: In optimal solution of π
πΌβͺπ(π), π-items
contribute total profit β€ 2/π½
Task: 1 + π π approximate min πΆ, π
π½ , πΆ = π(πβ1)
π = π(πβ1) distinct values ππ β 1,2
ΰ·¨ π πβ1 πΆπ algo (Chan)
(faster when πͺ small)
ΰ·¨ π(πβ4/3π + πβ2) algo (Chan)
(faster when π small)
Improved Algorithm
- Sort the items by ππ/π₯π, and divide into
three groups
ππ β 1,2
Improved Algorithm
- Sort the items by ππ/π₯π, and divide into
three groups πΌ: top Ξ πβ1 items
ππ β 1,2
Improved Algorithm
- Sort the items by ππ/π₯π, and divide into
three groups πΌ: top Ξ πβ1 items π: (1 β π½) multiplicative gap
π (π β π·)π ππ β 1,2
Improved Algorithm
- Sort the items by ππ/π₯π, and divide into
three groups πΌ: top Ξ πβ1 items π: (1 β π½) multiplicative gap
π (1 β π½)π
π: items in between
ππ β 1,2
Improved Algorithm
π (1 β π½)π πΌ = Ξ(πβ1) πΌ π π
If: max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π Then: In optimal solution of π
πΌβͺπ(π), π-items
contribute total profit β€ 2/π½ Task: 1 + π π approximate min π(πβ1), π
π½
ππ β 1,2
If: max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π Then: In optimal solution of π
πΌβͺπ(π), π-items
contribute total profit β€ 2/π½
Improved Algorithm
π (1 β π½)π πΌ = Ξ(πβ1) πΌ π π ππ β 1,2
Task: 1 + π π approximate min π(πβ1), π
π½
Improved Algorithm
π (1 β π½)π π° = π°(π»βπ) πΌ π π
(If ππ± πΏ < π·(π»βπ) then πΏ < π(π°)) Task: 1 + π π approximate π§π£π¨ π·(π»βπ), ππ± If: max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π Then: In optimal solution of π
πΌβͺπ(π), π-items
contribute total profit β€ 2/π½
ππ β π, π
Improved Algorithm
π (1 β π½)π πΌ = Ξ(πβ1) πΌ π π
Task: 1 + π π approximate min π(πβ1), π
π½
If: max
ββπ πβ/π₯β β€ 1 β π½ β min ββπΌ πβ/π₯β
ΟββπΌ π₯β > π Then: In optimal solution of π
πΌβͺπ(π), π-items
contribute total profit β€ 2/π½
ππ β 1,2 π§π£π¨{ππ΄ , π/π·}
Improved Algorithm
π (1 β π½)π πΌ = Ξ(πβ1)
πΌ
π
π΄
min{π
π , 2/π½}
ΰ·¨ π πβ1 πΆπ algo (Chan)
(faster when πͺ small)
ΰ·¨ π(πβ4/3π + πβ2) algo (Chan)
(faster when π small)
Let π· = π»π/π ΰ·© π·(π»βπ/π) ΰ·© π·(π»βπ/π)
π β π° β π/π» πͺ β π/π· π β π πβ1
Improved Algorithm
π (1 β π½)π
πΌ
π
π΄
Let π· = π»π/π
ΰ·¨ π πβ7/3 -time ΰ·¨ π(πβ7/3)-time
Group π: Round ππ/π₯π down to powers of (1 + π)
Improved Algorithm
π (1 β π½)π
πΌ
π
π΄
Let π· = π»π/π
ΰ·¨ π πβ7/3 -time ΰ·¨ π(πβ7/3)-time
Group π: Round ππ/π₯π down to powers of (1 + π) Only log1+π
1 1βπ½ β π½/π = π»βπ/π
distinct values of ππ/π₯π
Improved Algorithm
π (1 β π½)π
πΌ
π
π΄
Let π· = π»π/π
ΰ·¨ π πβ7/3 -time ΰ·¨ π(πβ7/3)-time
Group π: Round ππ/π₯π down to powers of (1 + π) Only log1+π
1 1βπ½ β π½/π = π»βπ/π
distinct values of ππ/π₯π Items with the same ππ/π₯π (profit β weight ): a Subset Sum instance
ΰ·¨ π(π + πβ2) time [KMPS03]
Improved Algorithm
π (1 β π½)π
πΌ
π
π΄
Let π· = π»π/π
ΰ·¨ π πβ7/3 -time ΰ·¨ π(πβ7/3)-time
Group π: Round ππ/π₯π down to powers of (1 + π) Only log1+π
1 1βπ½ β π½/π = π»βπ/π
distinct values of ππ/π₯π Items with the same ππ/π₯π (profit β weight ): a Subset Sum instance
ΰ·¨ π(π + πβ2) time [KMPS03]
Merge π»βπ/π groups
Improved Algorithm
π (1 β π½)π
πΌ
π
π΄
Let π· = π»π/π
ΰ·¨ π πβ7/3 -time ΰ·¨ π(πβ7/3)-time
Group π: Round ππ/π₯π down to powers of (1 + π) Only log1+π
1 1βπ½ β π½/π = π»βπ/π
distinct values of ππ/π₯π Items with the same ππ/π₯π (profit β weight ): a Subset Sum instance
ΰ·¨ π(π + πβ2) time [KMPS03] π + π»βπ/π β πβ2
Merge π»βπ/π groups
Improved Algorithm
π (1 β π½)π
πΌ
π
π΄
Let π· = π»π/π
ΰ·¨ π πβ7/3 -time ΰ·¨ π(πβ7/3)-time
Group π: Round ππ/π₯π down to powers of (1 + π) Only log1+π
1 1βπ½ β π½/π = π»βπ/π
distinct values of ππ/π₯π Items with the same ππ/π₯π (profit β weight ): a Subset Sum instance
ΰ·¨ π(π + πβ2) time [KMPS03] π + π»βπ/π β πβ2
Merge π»βπ/π groups
Total time: ΰ·© π· π + π»βπ/π
Further improvement
ΰ·¨ π πβ1 πΆπ (Chan)
(faster when πͺ small)
ΰ·¨ π(πβ4/3π + πβ2) (Chan)
(faster when π small)
ΰ·¨ π(πβ3/2π3/4 + π + πβ2)
(faster when π small)
ΰ·¨ π πβ4/3πΆ1/3π2/3
(π2 β« πβ2/πΆ)
(faster when πͺ small)