Definition
Value-scaling FPTAS for Max-value 0-1-Knapsack
Let be an an instance of 0-1-knapsack, and choose
Create a new rescaled instance with
For a rescaled instance , return the value
of an rescaled optimal solution . Note that uses the original value rather than , i.e., is the original value of the rescaled optimal solution .
Rescaled-DP Algorithm
Rescaled-DP
Let be the knapsack capacity and let
For each and each , define
where if no such subset exists. Thus, is the smallest total size of a subset of the first items whose rescaled value is exactly .
Initialise the table by
For , compute
The maximum feasible rescaled value is
Backtracking through the table recovers a corresponding rescaled optimal solution . Return its original value
The table has entries, each computed in constant time. Hence, Rescaled-DP runs in
time.
Approximation Scheme
The value found by the Rescale-DP algorithm is at least for some .
Let be an optimal solution for an instance . We want to investigate the loss between the optimum and value , i.e.,
We already know that is the value of the solution and we already defined , hence
We want to find an upper bound for that loss, i.e., we want to find an upper bound for the first sum and a lower bound for the second sum.
We already know that , for the reals, thus
Further, we know that
We conclude that the following chain holds:
Amazing. Next, rewrite the middle part as
We found an upper bound for the first sum, i.e.,
for some .
Further, we already found a lower bound for the second sum, i.e.,
for some .
Therefore, the loss has an upper bound
Consider the two new sums. We know that is optimal w.r.t. , i.e.,
Therefore
We found an upper bound for the inner difference. We conclude
We can go further. We know that the optimum is at least the maximum value , i.e.,
Further, the optimal and thus feasible cannot pick more items than . Another upper bound is found:
Rearrange:
FPTAS
The algorithm is an FPTAS for Max-Value Knapsack.
For every , the value-scaling Rescale-DP algorithm returns a feasible solution with original value
and runs in time.
The algorithm is an FPTAS for Max-Value Knapsack.
We must show two facts: the algorithm achieves the required approximation guarantee, and its running time is polynomial in both and .
Approximation guarantee. By the previous lemma, the returned solution has original value
Thus, the algorithm is a -approximation for every .
Running time. The running time of Rescaled-DP depends on
the sum of all rescaled values. We first bound each rescaled value. Since and ,
There are items, so summing this bound gives
As shown in the algorithm section, the dynamic programme has entries and computes each entry in constant time. Substituting the bound above yields
Computing the rescaled values and recovering the selected items each take additional time, which does not change this bound. Therefore, the algorithm has the required approximation guarantee and runs in time polynomial in and . Hence, it is an FPTAS.