小弟现在要做毕业设计,内容主要是排课管理系统。功能主要是通过教师输入教学计划,系统设置相应课程,并自动排出可行的课程表。但是问题就出在这个排课算法上,这个算法应该是可以尽量合理的安排课程表,我对这个算法有以下的要求:1.排出的课程表不能有课程冲突、时间冲突、教室冲突、教师冲突,即能解决时间、课程、教师、教室等之间的冲突,这是最基础、必须达到要求。2.课程要安排的平均,即不能将所有课集中安排在几天,而其他时间都空闲。同时,也不能出现比如说一天出现两讲体育课的情况,即一种课程也要尽量平均分配到几天。这是也是算法可用的必须要求。3.排出的课程表要尽量合乎情理,即基础课(如高数、物理等)多安排在上午,而政治类课程多安排在下午,这个是这个算法的一个额外的提高要求,即实在麻烦也可以不实现的。这样分析以后,我发现怎么也找不到一个合适的算法来实现。我搜索过网上,有的说用回溯法来做,但是我觉得回溯法虽能安排出来一个课程表,但是未必合理(或者是我理解太肤浅了?);又有的说这是一个NP-Complete问题,但是这个问题确实比较深奥,我实在不能白。请问大家在这个算法上有什么好的提议呢?或者仅仅是一个方向也好?我现在确实不明白怎么解决这个问题了,谢谢了。