二分图 - 卖方和买方

时间:2017-01-09 19:46:31

标签: algorithm graph dynamic-programming

鉴于几个卖家和买家,每个卖家都有一定数量的产品,每个买家都希望从卖家那里购买几种产品。有些卖家不能与一些买家进行交易,如果买家无法按照自己的意愿获得足够的产品,交易就不会成功。如果我们知道有一种策略可以满足所有买家的需求,那么如何找到这种策略呢?

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

1 个答案:

答案 0 :(得分:0)

我假设一个买家可能会从一个卖家那里买多件东西。将其更改为一个项目并不难。

这可以通过最大流算法来解决。从买方到其关联卖家的直接边缘。为这些边分配容量b_i。 B_i是买方需要的金额。添加两个节点S,T。从S向所有买家添加边缘。为每个边分配容量b_i。 B_i再次是买方所需的金额。将每个卖家顶点的边添加到T.将容量S_i分配给这些边。 S_i是我卖家的金额。找到从S到T的最大流量。如果它等于所有买家所需金额的总和,则可以找到问题的解决方案,并且可以通过从买家到卖家的每个边缘的流量来找到(这是积分流定理的后续。)