【问题标题】:What is the time complexity of a timetabling scheduling problem if we iterate through all the possible solutions?如果我们遍历所有可能的解决方案,时间表调度问题的时间复杂度是多少?
【发布时间】:2021-12-17 17:26:39
【问题描述】:

在时间表排程中,有n个部分,每个部分还有m个注册课程。可用的插槽总数为 25,每天 5 个

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

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

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

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

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

【问题讨论】:

    标签: algorithm time time-complexity complexity-theory


    【解决方案1】:

    如果我理解正确的话,我们每个部分有 25 个名额。然后您需要填写这些部分的时间表,您需要将所有m 课程放入时间表中。因此,m 必须小于或等于 25

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2023-02-21
      • 2020-11-13
      • 2021-07-19
      • 1970-01-01
      相关资源
      最近更新 更多