2014-06-16 63 views
1

假设你有:算法最大化幸福

  • 100人
  • 100个项目

每个人居其中,他们希望对他们的工作顺序的所有100个项目。什么样的算法可以用来最大限度地提高人们的幸福感(即分配给他们排名较高的项目意味着更高的幸福感)。

假设每人一个项目。

+4

[二部图中的加权匹配](http://en.wikipedia.org/wiki/Bipartite_matching#In_weighted_bipartite_graphs) –

+0

您想在特定的编程语言中使用算法,还是只使用步骤? – Jonathan

+0

也许是http://stackoverflow.com/q/7078709/56778的副本 –

回答

3

这种问题的算法非常流行,被称为匈牙利算法。

我们考虑一个例子,其中四个作业(J1,J2,J3和J4)必须由四名工人(W1,W2,W3,并执行 :有这样那样的问题解决了类似的问题W4),每个工作者一份工作。下面的 矩阵显示了将某个工作人员分配给某个 工作的成本。目标是最大限度地减少作业的总成本。

来源:http://www.hungarianalgorithm.com/examplehungarianalgorithm.php

请注意,默认的匈牙利算法找到最小的成本,但你可以改变程序,使之为最大化成本的工作。

如果目标是找到产生最大成本的分配, 问题就可以改变通过更换每个成本 与费用扣除的最高费用,以适应环境。

来源:http://en.wikipedia.org/wiki/Hungarian_algorithm

我已经实现我的Github匈牙利算法, 可以随意使用它,修改它,使之为最大化成本的工作。