【问题标题】:bipartite graph--Sellers and Buyers二部图--卖家和买家
【发布时间】:2017-01-09 19:46:30
【问题描述】:

给定几个卖家和买家,每个卖家都有一定数量的产品,每个买家都想从卖家那里购买几件产品。有的卖家无法与有的买家进行交易,如果买家不能如愿得到足够的产品,交易就不会成功。如果我们知道有一种策略可以满足所有买家,那么如何找到该策略?

我画了一个图表来说明问题,这只是一个例子。问题要你为每个买家提供一个交易策略,以便所有买家都能获得足够的他们想要的产品。 seller buyer example

【问题讨论】:

    标签: algorithm graph dynamic-programming


    【解决方案1】:

    我假设一位买家可能会从一位卖家那里购买多件商品。将其更改为一项并不难。

    这可以通过最大流量算法来解决。从买家到他们的关联卖家的直接优势。为这些边分配容量 b_i。 B_i 是买方需要的数量。添加两个节点 S,T。将 S 中的边添加到所有买家。将容量 b_i 分配给每个边。 B_i 又是我需要的买家数量。将每个卖方顶点的边添加到 T。将容量 S_i 分配给这些边。 S_i 是卖家 i 拥有的数量。找到从 S 到 T 的最大流量。如果它等于所有买家所需金额的总和,那么就有一个问题的解决方案,它可以通过从买家到卖家的每条边的流量来找到(这是积分流定理的后续)。

    【讨论】:

    • 您好 Saeed,非常感谢您提供的出色解决方案。抱歉,我没有清楚地描述问题。最初,您不知道是否可以满足所有买家,并且要求您满足尽可能多的买家,并且每个买家可以从多个卖家那里购买产品。您的解决方案很棒,但是如果您将卖方 i 中所有边缘的边缘容量设置为 s_i,则可能会超出卖方 i 的总和,对吗?
    • 而且由于您无法满足买家的产品少于他的要求,如果我使用最大流量理论,即使我可以获得最大流量,但我仍然无法获得满意的买家数量(如果我们不知道所有买家都能满意,我们想找到满意买家的最大数量)。
    • @AvocadoAushi,1.卖家i的总和不会超过S_i,因为它的出边有容量S_i,不能承载更多的流量。 2. 我回答了你问的问题。您现在解释的是不同的情况,但我会考虑一下,您可以将其转为一个新问题。
    • 得到它。非常感谢,我会发布另一个新问题。对于这个问题,如果存在完美的解决方案,最大流算法可以找到策略。我尝试使用 Ford-Fulkerson 和 maxflow-mincut 来解决这个问题~~
    • @AvocadoAushi,您可以通过将勾选标记(答案左侧)变为绿色来将此答案标记为已接受的答案。
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多