将库书籍分配给成员以使最大成员满意的算法

时间:2012-09-06 18:02:50

标签: graph matching bipartite max-flow

我在班级考试中遇到了问题。在图书馆,每个成员要求四本书,每本书只有两名成员要求。该信息以二分图G =(X + Y,E)

的形式给出

X:所有成员的集合 Y:所有书籍的集合 边E =边集(x,y),其中x是书y请求的成员。 我们必须找到图书管理员可以为每个成员提供最多两本书的方式,以便最大限度地满足成员。

我提出了两种方法:

  1. 引入两个新顶点s(源)和t(目标)。将s中的边引入容量为2的X中的所有成员。所有边E的容量为1,新边Y到t的容量为1.现在应用Max flow算法来查找最大匹配。最大匹配是必需的解决方案。
  2. 另一种方法是通过引入相同的边来遵循与上述相同的算法,但每个边的容量为1.现在找到最大匹配。这种匹配将为最多成员提供一本书。删除匹配的书籍并再次应用上述算法。再次删除匹配的书籍和有两本书的成员再次应用算法,直到X和Y之间没有边缘。实现的解决方案是必需的解决方案。
  3. 虽然我得到了上述算法,但我不确定哪个是正确的,或者没有一个是正确的。如果还有其他算法,请在这里建议。

1 个答案:

答案 0 :(得分:0)

第一个似乎是正确的。对于第二个,您无法保证您的第一轮书籍作业不会阻止您达到最佳状态。