动态规划或图形算法,一个很好的问题

时间:2015-02-12 09:26:18

标签: algorithm math graph dynamic-programming graph-algorithm

代理在n生产者和m个消费者之间起作用。 i生产者,今年生成s_i糖果和j消费者消费b_j糖果。对于销售的每个糖果,代理商获得1美元的回报。对于某些问题,一个严格的规则被定义为生产者应该向任何生产者销售糖果,它们之间的距离不大于100 KM(公里)。如果我们有生产者 - 消费者对的列表,他们之间的距离低于100 KM,以下哪种算法最适合寻找最大收益? (假设s_ib_j可能变得非常大。)

1) Maximal Matching

2) Dynamic Programming

3) Maximum Flow 

4) 1 , 3

这是2013年 - DS课程期末考试的最后一个问题。任何提示或想法?

1 个答案:

答案 0 :(得分:1)

根据我的理解,问题可以解决为Maximum Bipartite Matching,但建模要求图形与原始输入相比相对较大;对于每个可行边(s_i,b_j),为生成器分区引入s_i个节点,为消费者分区引入b_j,并将每个生成器节点连接到它们的每个使用者节点。

然而,问题可以在二分图上建模为Maximum Flow Problem;每个可行边缘(s_i,b_j)上的流量受0从下方和min{s_i,b_j}从上方约束,因为流量必须是非负的,但可能既不超过生产者也不超过消费者& #39;容量。

关于通过Dynamic Prgramming的解决方案,请考虑以下最大二分匹配的递归关系草图。设nm分别表示第一个和第二个分区中的节点数。修复第一个分区中的节点a; a与其中一个邻居不匹配或匹配;在任何一种情况下,评估每种可能性,递归地评估分区分别具有n-1mn-1m-1节点的实例;这些选择中最好的是。

简而言之,显然所有提议的方法都能产生有效的解决方案;然而,网络流程的建模似乎是最自然的。