【问题标题】:Minimize Maximum Cost最小化最大成本
【发布时间】:2014-02-22 07:12:01
【问题描述】:

给定 N 个作业和 M 个任务,将 K 个作业分配给 K

你能帮我解决这个问题的算法吗?我试过蛮力,但我不适合大投入。我们可以在这里使用 DP 吗?

【问题讨论】:

  • 您没有定义max_cost 或任何形式的成本。
  • maxcost 是所有 K 个作业的最大成本。我们必须为这 K 个工作找到分配,以使 maxcost 最小化
  • 谢谢,我看到了,但我认为我不能修改它以适合我的目的。
  • 你的意思是每个可能的(task,job) 对都有不同的成本吗?

标签: algorithm matrix graph combinations


【解决方案1】:

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

然后你可以使用二分搜索来找到最小的X,其中子问题仍然可行。

【讨论】:

    【解决方案2】:

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

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

    您可以通过测量最大二分匹配的大小来测试此分配是否可行,例如Hopcroft-Karp algorithm

    【讨论】:

    • 我以为我是安全的,因为它有一个小时没有答案,哦,好吧 :)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多