编辑:对不起,我对问题的解释不清楚!这应该更好:

  • 用户发送文章的 ID 号和最大值。捆绑包数(包)
  • API 搜索商品的所有可用价格并计算最小的最佳结果。捆绑数量(限制为客户提供的最大数量)
    ONE Bundle 是交付给 ONE 平台(买方)的一包物品

  • 谢谢!

    最佳答案

    这是一个有趣的小问题。我今天早上花了几个小时来解决这个问题,虽然我没有完整的解决方案,但我想我已经足够让你开始了(我相信这就是你所要求的)。

    首先,我假设这些事情,根据你对问题的描述:

  • 所有买家都为所有商品报价
  • 没有关于项目的假设,它们可能都不同
  • 用户只能与有限数量的买家互动
  • 用户希望出售每件商品,每件商品都卖给一个买家
  • 用户可以向单个买家出售多件商品

  • 精确解——蛮力法

    为此,首先要意识到的是,对于给定的一组买家,计算最大总收入是很直接的,因为您可以为每个项目选择该组买家提供的最高价格。将所有这些最高价格加起来,您就拥有了该组买家的最大总收入。

    现在您所要做的就是为每个可能的买家组合进行计算。这是一个基本的组合问题:“n 选择 k”,其中 n 是买家总数,k 是您限制的买家数量。有一些函数可以生成这些组合的列表(我自己写的……还有用于 php 的 this PEAR package)。

    一旦您对所选买家的每种组合都获得了最大总收入,只需选择最大的一个,您就解决了问题。

    更优雅的算法?

    然而,正如我通过称之为“蛮力”所暗示的那样,上面的速度并不快,而且扩展性很差。我的机器内存不足,有 20 个买家和 20 个项目。我确信存在更好的算法,而且我有一个很好的算法,但它并不完美。

    它基于机会成本。我计算每件商品的最高价格和第二高价格之间的差额。这种差异是不选择具有最高价格的买家的机会成本。

    然后我选择对机会成本最高的物品提供高价的买家(从而避免最坏的机会成本),直到我有 k - 1 个买家(其中 k 是我可以选择的最大值)。最终的选择很棘手,我没有编写更复杂的算法,而是为最终买家运行所有可能性并选择最佳收入。

    这个策略大多数时候会选择最好的组合,如果它错过了,它也不会错过太多。它的扩展性也相对较好。它比小规模的蛮力快 10 倍,如果我将所有参数(买家、买家限制和物品)翻两番,计算时间会增加 20 倍。考虑到涉及多少组合,这很好。

    我已经起草了一些代码,但这篇文章太长了。如果您有兴趣,请告诉我,我会想办法将其发送给您。

    关于php - 通过向多个买家销售商品来查找最高总价,受用户输入限制,可以进行多少个单独的销售,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6853266/

    10-12 19:28