A novel dynamic programming heuristic for the quadratic knapsack problem | Synapse