Graph 将图书馆图书分配给成员以满足最大成员数的算法

Graph 将图书馆图书分配给成员以满足最大成员数的算法,graph,matching,bipartite,max-flow,Graph,Matching,Bipartite,Max Flow,我在一次班级考试中被给了一道题。在图书馆里,每个会员都要四本书,每本书只有两个会员要。该信息以二部图G=(X+Y,E)的形式给出 X:所有成员的集合 Y:一套所有的书 边E=一组边(x,y),其中x是为书本y请求的成员。 我们必须找到一种方法,图书馆员可以给每个会员最多两本书,这样才能让最多的会员满意 我提出了两种方法: 引入两个新顶点s(源)和t(目标)。将s中的边引入X中的所有构件(容量为2)。所有边E的容量为1,新边Y到t的容量为1。现在应用最大流算法来寻找最大匹配。最大匹配是所需的解决方

我在一次班级考试中被给了一道题。在图书馆里,每个会员都要四本书,每本书只有两个会员要。该信息以二部图G=(X+Y,E)的形式给出

X:所有成员的集合 Y:一套所有的书 边E=一组边(x,y),其中x是为书本y请求的成员。 我们必须找到一种方法,图书馆员可以给每个会员最多两本书,这样才能让最多的会员满意

我提出了两种方法:

  • 引入两个新顶点s(源)和t(目标)。将s中的边引入X中的所有构件(容量为2)。所有边E的容量为1,新边Y到t的容量为1。现在应用最大流算法来寻找最大匹配。最大匹配是所需的解决方案
  • 另一种方法是采用与上述相同的算法,引入相同的边,但每条边的容量为1。现在找到最大匹配。此匹配将为最多成员提供一本书。删除匹配的书籍并再次应用上述算法。再次移除匹配的书籍和拥有两本书籍的成员,并再次应用算法,直到X和Y之间没有边缘保留。实现的解决方案是必需的解决方案

  • 虽然我得到了上述算法,但我不确定哪一个是正确的或没有一个是正确的。如果还有其他算法,请在此处提出建议。

    第一种算法似乎是正确的。对于第二个,你无法保证你的第一轮作业不会妨碍你达到最佳状态。

    可能是,但仍然无法解决。