这就是我的问题:我正在设计一个应用程序,允许学生选择他们想要在本学期选修的课程,并为他们创建潜在的时间表布局。每个类通常都有几个可能出现在不同时间的部分。
因此,我正在寻找一种好的数据结构,以便开发一种能够做到这一点的算法。
有没有一种通用的方法来做到这一点?有没有什么数据结构和/或算法可以应用于这种情况?我只是在找一个开始的地方。
编辑:课程倾向于周一、周三、周五或周二、周四。在许多情况下,也有实验或复习在一周内的不同时间进行。
谢谢,Rob
发布于 2010-09-16 05:47:27
我会用一棵树
在每个节点(代表一个类),每个部分都有分支,还有一个不参加课程的分支
您可以随时为调度冲突进行修剪
只要不是永久存储这些内容,并且每个学期每个学生包含的课程不会太多,这个值就不会太大
该树将以任意类为根。根的每个分支都是该类的一部分(以及不采用它的额外分支),然后在每个分支的末尾有更多的节点。这些节点将全部表示您在明细表中拟合的第二个类。
这些节点中的每一个对于第二个类的每个部分都有另一个分支。诸若此类。
例如:
math
/ / \
2:00 1:00 blank
| | |
p.e p.e p.e
/ \ / \ / \
2:00 blank 2:00 blank 2:00 blank
|
conflict发布于 2010-09-16 06:09:58
每节课一周中的每一天都有相同的时间表吗?还是像我的一样,有些是MWF,有些是TuTh,有些是坐着的?
如果所有的课程都在一周中每天的同一时间,那么这个模型就非常简单。您需要用于学生、班级、classSections和studentSchedules的表。
对于您的classSection表,因为课程不是每天的同一时间,如果它们是每周的同一天,那么您可以包括一周中每一天的字段(M-Sa)、开始时间、课程长度(以小时为单位),当然还有classCodeID。
至少:
Student
ID
Class
classCodeID
description
classSection
classCodeID
classSectionID
isOnM
isOnTu
isOnW
isOnTh
isOnF
isOnSat
startTime
length
studentSchedule
studentID
classCodeID
classSectionID您还可以标准化一周中的日期,而不是将它们放在classSection表中,但我喜欢在一堆复选框中看到一周。
我看到您每周有多个开始时间,因此在classSection表中需要另一个ID字段。
你的应用看起来还不错,你不是已经有数据模型了吗?看起来你甚至不需要是学生就能看到课程表。
发布于 2010-09-16 06:40:25
这是一个遗传算法适用的问题。至少,我的大学教员在此基础上开发了一个算法。以下是他们的一些论文,其中介绍了这项技术。
http://morgoth.zemris.fer.hr/people/Marko.Cupic/files/2009-425555.EvoCOP_2009.pdf
http://morgoth.zemris.fer.hr/people/Marko.Cupic/files/2009-422047.iti2009.pdf
https://stackoverflow.com/questions/3722066
复制相似问题