如果我们遍历所有可能的解决方案,时间表调度问题的时间复杂度是多少?

What is the time complexity of a timetabling scheduling problem if we iterate through all the possible solutions?

排课表中有n个section,每个section还有m个注册课程。可用的总时段为 25,每天 5 个

考虑到有 n 个部分,因此将创建 n 个时间表(每个部分一个时间表)并且每个部分的时间表必须包含分配给该部分的所有课程。

我想知道如果我要遍历这个时间表中所有可能的组合,时间复杂度是多少?

请注意,时间表将同时考虑所有部分,而不是针对每个部分单独生成。也就是说,一个解决方案将包含在每个部分的时间表的随机时间段上分配的所有课程。

那么下一个解决方案将改变一个部分的一个课程的时间段,同时保持其他部分的时间表与第一个解决方案中的时间表相同。

如果我们应用蛮力(即遍历所有可能的解决方案),我似乎无法找出计算此类问题的时间复杂度的方法。我这样做的方式是 O ((m*n)^25) 但是,我不确定。谁能帮我算出正确的时间复杂度?

如果我没理解错的话,我们每个部分有 25 个名额。然后你需要填写那些sections的时间表,你需要把所有m门课程都放在时间表里。因此,m 必须小于或等于 25.

所以,首先,我们应该计算每个部分的可能性。相应地,我们需要select m of 25 将它们放在相应的时间表中。然后统计他们的组合是m!。因此,每个部分可能的时间表总数为 25!/((25-m)!m!) * m! = 25!/(25-m)!

其次,我们可以据此统计sections之间的组合总数。因此,由于我们有 n 个部分,我们需要将每个部分的这些组合数相乘以找到所有部分中的组合总数。因此,创建时间表的可能方式总数为 (25!/(25-m)!)^n