我需要实现一个三维二分匹配算法。我有this code这是一个二维二分匹配算法。我已经能够将它转换为PHP,它工作正常。但是我刚才意识到,在我的计划中,我需要将课程与特定时间段的房间相匹配。如果我使用二维二分匹配算法,已经分配的房间不能用于其他时间段的课程。我希望能够有一个匹配,一旦时间段不同,同一个房间可以再次用于另一个课程。如何修改此代码以用作三维图形输入:graph [u] [v] [w],其中u是索引,v是房间索引,w是时隙索引?
答案 0 :(得分:2)
Bipartite匹配不起作用。 'Bi'意味着两个。但是,您可以轻松地将图形转换为二分图。不要考虑左边的课程和右边的房间,而是这样思考 - 课程仍将保留在左侧,但右侧将是房间和时间段的组合节点。像这样 -
Course CSE 101------Room 301 Time 10:00 - 11:00
\
\
\
\
\
Course CSE 145------Room 301 Time 11:00 - 12:00
\
\
\
\
\-Room 301 Time 12:00 - 13:00
如果你正在解决一个现实世界的问题,那么还会有其他的限制因素,例如在一周内为一门课程分配3个教室,同一天的2个班级不应该在同一天等等。在这种情况下,你必须从图的二分模型转向一般流网络。