1

问题是这样的:

一所学校有不同的班级。每节课都有每周安排(8 小时英语、6 小时数学、2 小时美术等)。每位教师在一部分课程中都有一定的小时数。(我猜学校几乎到处都是这样)。

可以添加一些额外的约束,例如:

  1. X老师星期一不上班
  2. Y老师在某个班级需要连续两个小时,以此类推。

目标是找到一个优化约束成本函数的时间表。

最后,我猜这是一个经典的 NP 问题。它可以使用空间状态搜索来解决(我们尝试所有可能的组合,使用一些智能的搜索方式,我们选择可能的最佳解决方案)。

  • 这可行吗?(组合是巨大的,对于 10 节课和每节课 30 小时和 7 门科目来说,即使可以进行一些实质性的修剪,它也大约是 10^253:我猜 SAT 求解器可以处理类似的事情)。

  • 是否有任何替代方法可以完成搜索,即使是近似的?

4

1 回答 1

1

这是一个约束满足问题。如链接中所述,解决这些问题的方法之一是使用本地搜索方法,例如min-conflictsforward checks。不能保证您获得最佳解决方案,但您通常会在相对较短的时间内获得“好的”解决方案。

如果您碰巧在使用 Prolog,那么 clpfd 库(有限域上的约束逻辑编程)非常强大。

于 2012-06-22T15:55:04.217 回答