An algorithm for the disjunctively constrained knapsack problem | Synapse