Class: KnapsackSolver::Fptas
- Inherits:
-
Object
- Object
- KnapsackSolver::Fptas
- Defined in:
- lib/knapsack_solver/solving_methods/fptas.rb
Overview
This class implements methods for solving 0/1 knapsack problem using Fully Polynomial Time Approximation Scheme.
Instance Method Summary collapse
-
#initialize(instance, epsilon) ⇒ Fptas
constructor
Initializes 0/1 knapsack FPTAS solver.
-
#run ⇒ Hash
Solve the instance of 0/1 knapsack problem using FPTAS.
Constructor Details
#initialize(instance, epsilon) ⇒ Fptas
Initializes 0/1 knapsack FPTAS solver.
11 12 13 14 15 |
# File 'lib/knapsack_solver/solving_methods/fptas.rb', line 11 def initialize(instance, epsilon) @instance = instance @epsilon = epsilon.to_f @orig_prices = @instance.things.map(&:price) end |
Instance Method Details
#run ⇒ Hash
Solve the instance of 0/1 knapsack problem using FPTAS.
20 21 22 23 24 25 |
# File 'lib/knapsack_solver/solving_methods/fptas.rb', line 20 def run modify_prices_for_epsilon! r = DynamicProgramming.new(@instance).run p = get_normal_price_from_fptas(r[:config]) { price: p, config: r[:config] } end |