使用最大流量算法实现最佳匹配

时间:2019-01-22 12:48:58

标签: algorithm graph graph-algorithm flow

我想通过使用最大流量算法使人与公司之间达到最佳匹配。

下表中的每一行代表每个人是否想向该公司提出申请。 (是=可以申请,不可以=可以申请)。 人员的括号表示每个人将发送的申请数量,公司的括号表示未完成的职位数量。

SEE TABLE

我考虑通过以下方式使每个人和每个公司成为图中的一个顶点,从而将此问题视为最大流量问题:

例如:

S -> Bob -> Apple -> T
S -> Bob -> Google -> T
S -> David -> Apple -> T

请告知:

  1. 我应该如何参考每个人的偏好(YES / MAYBE)?
  2. 每个边缘的重量应该是多少?

谢谢大家

1 个答案:

答案 0 :(得分:0)

这似乎不是最大流量问题,但这是最大重量的二分匹配。

首先,每个人要发送的申请数量是不相关的信息,因为一旦我们进行配对,每个人只需发送一个 申请即可。因此,我们可以将其从问题中消除。

然后,我们可以将每个位置的列扩展为1。例如,苹果有2个未结头寸,因此我们将其扩展为两个苹果列,并从这些列中删除括号内的信息。

现在的任务是找到行和列之间的最大二分匹配,对此匈牙利算法或类似方法更合适。