将多个数据库项最佳地计算到配置中

时间:2018-01-18 15:56:19

标签: javascript mysql arrays algorithm math

早上好!我正在做一些优化的事情......我找不到这个“最好”的答案,所以我想我会问你天才。提前感谢您的想法!永远感谢这个社区:)

  • 我们有一个数据库,它有大约150个项目,可能更多(还没有完成)各种小部件(长篇故事,为了简单起见而留下它)。这些项有3个值:我们只称它为VALUE A,VALUE B和VALUE C.因此db中这个视图的一个例子就是这个(顺便说一句,这是mysql,但为了结构上的显示)它,我们现在将使用JSON):
  • {“ItemID”:1,“A”:50,“B”:20,“C”:4}
  • {“ItemID”:2,“A”:10,“B”:40,“C”:10}
  • {“ItemID”:3,“A”:16,“B”:9,“C”:30}
  • {“ItemID”:4,“A”:4,“B”:3,“C”:14}
  • 依此类推...... 150多次。

  • 然后我们有一个用户,他具有项目A,B和C的特定号码,他们需要使用这些项目的组合来满足。例如,假设用户编号为A:26 B:49 C:40。我们希望在数据库中找到项目组合,以使其符合该编号。在上面的项目列表示例中,第2项和第3项可以完全满足这一要求。

  • 此外,我们可以使用具有四分之一和一半乘数的半比例的项目。例如,用户总数可能是55,40和9.您可以使用Item1,也可以使用Item2的一半来完成此任务。

这基本上就是我们在这里所做的一切。我认为可能有很多方法可以实现这一点,但确保代码效率非常重要,所以我不想以任何方式首先绊倒路径,而是想要一些外部专业知识/思考过程来看看你是如何做到的我会这样做。

再次,非常感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

我很害怕,但我认为这个问题可能无法有效解决。您的问题与Knapsack Problem非常相关。具体来说,您可能想要研究多维背包问题。

由于您的输入仅包含整数,您可能能够找到伪多项式解,但我对此表示怀疑。

你只有150(x4,如果允许halfes和quaters)元素。根据查询的大小,您可以在合理的时间跨度内解决问题暴力。