最大限度地降低最高成本

时间:2014-02-22 07:12:01

标签: algorithm matrix graph combinations

给定N个作业和M个任务,将K个作业分配给K个任务,其中K <=(min(M,N)),以便最小化K个作业中的max_cost。

你能帮我解决问题的算法吗?我曾经尝试过蛮力,但我不会为大量投入而工作。我们可以在这里使用DP吗?

3 个答案:

答案 0 :(得分:2)

你可以通过测试二分图中是否存在大小为K的匹配来解决问题“是否存在最大成本X的解决方案”,其中节点是作业和任务,并且如果是作业和任务之间存在优势执行该任务的工作成本最多为X.您可以使用the Hopcroft-Karp algorithm,这是多项式时间。

然后你可以使用二进制搜索找到子问题仍然可行的最小X.

答案 1 :(得分:2)

一种可能的方法是通过二分法找到最大成本。

对于给定的最大成本x,当且仅当可以在简化图中将K个作业与K个任务匹配时,可以执行分配,其中已删除所有成本> x的边。

您可以通过使用Hopcroft-Karp algorithm测量最大二分匹配的大小来测试是否可以进行此分配。

答案 2 :(得分:1)

我使用Hopcroft-Karp问题解决了类似的问题。首先要找到所有任务和工作之间的成本。现在循环完成所有成本,看看是否存在基数为K的二分图。如果存在,那么成本就是答案。如果没有转移到下一个费用,请将附加边缘添加到图表并再次检查,直到您到达基数可以为K的图表。