如何在PHP中实现三维二分匹配算法

时间:2012-03-12 04:14:12

标签: php algorithm graph matching

我需要实现一个三维二分匹配算法。我有this code这是一个二维二分匹配算法。我已经能够将它转换为PHP,它工作正常。但是我刚才意识到,在我的计划中,我需要将课程与特定时间段的房间相匹配。如果我使用二维二分匹配算法,已经分配的房间不能用于其他时间段的课程。我希望能够有一个匹配,一旦时间段不同,同一个房间可以再次用于另一个课程。如何修改此代码以用作三维图形输入:graph [u] [v] [w],其中u是索引,v是房间索引,w是时隙索引?

1 个答案:

答案 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个班级不应该在同一天等等。在这种情况下,你必须从图的二分模型转向一般流网络。