匈牙利算法在多项式时间内解决分配问题。给定工作人员和任务,以及包含将每个工作人员分配给任务的成本的n×n矩阵,它可以找到最小化成本的分配。
我想找到最大成本的选择?我可以使用匈牙利语或任何类似的方法吗?或者这只能以指数方式完成?
答案 0 :(得分:10)
维基百科说:
如果目标是找到产生最大成本的分配, 可以通过更换每个成本来更改问题以适应设置 最高成本减去成本。
因此,如果我理解正确:在您输入的所有成本中,您会找到最大值。然后,您将每个费用x
替换为max - x
。这样您仍然可以获得正成本,并且可以运行匈牙利算法。
不同地说:匈牙利人试图最小化转让成本。因此,如果您正在寻找最大值,您可以撤消成本:x - > -X。但是,某些实现(不知道是否全部或任何)需要正数。因此,我们的想法是为每个成本添加一个恒定值,以获得正数。这个常数值不会改变产生的影响。
答案 1 :(得分:4)
大卫在评论中说:
Multiply the cost matrix by -1 for maximization.